diff --git a/bin/generate-example-metadata.mjs b/bin/generate-example-metadata.mjs index 4bf0e70..7ee9421 100755 --- a/bin/generate-example-metadata.mjs +++ b/bin/generate-example-metadata.mjs @@ -3,6 +3,11 @@ import { RestParser } from "rest-cli"; import flatten from "flat"; +const usage = (errorNumber = 0) => { + console.error("Usage: ./bin/generate-example-metadata.mjs [requestName|requestNumber]"); + process.exit(errorNumber); +} + const json2dotNotation = ( json, prefix = "post.responses.default.content.application/json.example." @@ -14,24 +19,43 @@ return str; }; +/** @param {string} s */ +const isInteger = (s) => Number.isInteger(Number(s)); + +///////////////////////////////////////////////////////////: + +const [, , instanceName, requestName] = process.argv; + +if (!instanceName) { + console.error("Instance name needed as a first paramater!"); + usage(1); +} + // Get Response from examples.http file const parser = new RestParser(); -await parser.readFile("./mapping-tools/examples.http"); +await parser.readFile(`./${instanceName}/examples.http`); -const request = await parser.get(0); -console.log(request); +const requestId = isInteger(requestName) ? Number(requestName) : requestName; +if (requestId === undefined) { + console.error("requestName needed as a second parameter (could be a string or an integer)."); + usage(2); +} + +const request = await parser.get(requestId); if (request) { + // request + const body = request.getBody(); console.log( json2dotNotation( - JSON.parse(request.getBody()), + JSON.parse(body), "post.requestBody.content.application/json.example.") ); + // response const { response } = await request.request(); const json = JSON.parse(response.getBody()); - console.log(json); console.log(json2dotNotation(json)); }