@roadiehq/scaffolder-backend-module-utils 1.8.10 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,6 +14,7 @@ This contains a collection of actions to use in scaffolder templates:
14
14
  - [Merge new data into an existing JSON file](#merge-json)
15
15
  - [Append content to a file](#append)
16
16
  - [Write content to a file](#write-to-file)
17
+ - [Replace in files](#replace-in-files)
17
18
 
18
19
  ## Setup
19
20
 
@@ -71,6 +72,7 @@ const actions = [
71
72
  createJSONataAction(),
72
73
  createYamlJSONataTransformAction(),
73
74
  createJsonJSONataTransformAction(),
75
+ createReplaceInFileAction(),
74
76
  ...createBuiltinActions({
75
77
  containerRunner,
76
78
  integrations,
@@ -709,3 +711,34 @@ spec:
709
711
  input:
710
712
  message: 'RemoteURL: ${{ steps["publish-pr"].output.remoteUrl }}'
711
713
  ```
714
+
715
+ ### Replace in files
716
+
717
+ **Action name:** `roadiehq:utils:fs:replace`
718
+
719
+ This action replaces found string in files with content defined in input.
720
+
721
+ **Required params:**
722
+
723
+ - files: Collection of files and their replacing configuration. See structure of collection item below.
724
+ - files[].file: Path to the file to be modified
725
+ - files[].find: A text to be replaced
726
+ - files[].replaceWith: A text to be used to replace above
727
+
728
+ ```yaml
729
+ ---
730
+ parameters:
731
+ templated_text:
732
+ title: Replacer
733
+ type: string
734
+ description: Text you want to use to replace i_want_to_replace_this
735
+ steps:
736
+ - id: Replace text in file
737
+ name: Replace
738
+ action: roadiehq:utils:fs:replace
739
+ input:
740
+ files:
741
+ - file: './file.1'
742
+ find: 'i_want_to_replace_this'
743
+ replaceWith: ${{ parameters.templated_text }}
744
+ ```
package/dist/index.cjs.js CHANGED
@@ -219,6 +219,68 @@ function createParseFileAction() {
219
219
  });
220
220
  }
221
221
 
222
+ function createReplaceInFileAction() {
223
+ return pluginScaffolderNode.createTemplateAction({
224
+ id: "roadiehq:utils:fs:replace",
225
+ description: "Replaces content of a file with given values.",
226
+ supportsDryRun: true,
227
+ schema: {
228
+ input: {
229
+ required: ["files"],
230
+ type: "object",
231
+ properties: {
232
+ files: {
233
+ title: "Files",
234
+ description: "A list of files and replacements to be done",
235
+ type: "array",
236
+ items: {
237
+ type: "object",
238
+ required: [],
239
+ properties: {
240
+ file: {
241
+ type: "string",
242
+ title: "The source location of the file to be used to run replace against"
243
+ },
244
+ find: {
245
+ type: "string",
246
+ title: "A string to be replaced"
247
+ },
248
+ replaceWith: {
249
+ type: "string",
250
+ title: "Text to be used to replace the found lines with"
251
+ }
252
+ }
253
+ }
254
+ }
255
+ }
256
+ }
257
+ },
258
+ async handler(ctx) {
259
+ var _a;
260
+ if (!Array.isArray((_a = ctx.input) == null ? void 0 : _a.files)) {
261
+ throw new errors.InputError("files must be an Array");
262
+ }
263
+ for (const file of ctx.input.files) {
264
+ if (!file.file) {
265
+ throw new errors.InputError("Path to file needs to be defined");
266
+ }
267
+ if (!file.find || !file.replaceWith) {
268
+ throw new errors.InputError(
269
+ "each file must have a find and replaceWith property"
270
+ );
271
+ }
272
+ const sourceFilepath = backendCommon.resolveSafeChildPath(
273
+ ctx.workspacePath,
274
+ file.file
275
+ );
276
+ const content = fs__default["default"].readFileSync(sourceFilepath).toString();
277
+ const replacedContent = content.replaceAll(file.find, file.replaceWith);
278
+ fs__default["default"].writeFileSync(sourceFilepath, replacedContent);
279
+ }
280
+ }
281
+ });
282
+ }
283
+
222
284
  const yamlOptionsSchema = {
223
285
  title: "Options",
224
286
  description: "YAML stringify options",
@@ -443,6 +505,7 @@ function createJSONataAction() {
443
505
  return pluginScaffolderBackend.createTemplateAction({
444
506
  id: "roadiehq:utils:jsonata",
445
507
  description: "Allows performing JSONata operations and transformations on input objects and produces the output result as a step output.",
508
+ supportsDryRun: true,
446
509
  schema: {
447
510
  input: {
448
511
  type: "object",
@@ -479,9 +542,16 @@ function createJSONataAction() {
479
542
  }
480
543
  },
481
544
  async handler(ctx) {
482
- const expression = jsonata__default["default"](ctx.input.expression);
483
- const result = expression.evaluate(ctx.input.data);
484
- ctx.output("result", result);
545
+ try {
546
+ const expression = jsonata__default["default"](ctx.input.expression);
547
+ const result = expression.evaluate(ctx.input.data);
548
+ ctx.output("result", result);
549
+ } catch (e) {
550
+ const message = e.hasOwnProperty("message") ? e.message : "unknown JSONata evaluation error";
551
+ throw new Error(
552
+ `JSONata failed to evaluate the expression: ${message}`
553
+ );
554
+ }
485
555
  }
486
556
  });
487
557
  }
@@ -506,6 +576,12 @@ function createYamlJSONataTransformAction() {
506
576
  description: "JSONata expression to perform on the input",
507
577
  type: "string"
508
578
  },
579
+ as: {
580
+ title: "Desired Result Type",
581
+ description: 'Permitted values are: "string" (default) and "object"',
582
+ type: "string",
583
+ enum: ["string", "object"]
584
+ },
509
585
  options: yamlOptionsSchema
510
586
  }
511
587
  },
@@ -514,20 +590,26 @@ function createYamlJSONataTransformAction() {
514
590
  properties: {
515
591
  result: {
516
592
  title: "Output result from JSONata",
517
- type: "object"
593
+ type: "object | string"
518
594
  }
519
595
  }
520
596
  }
521
597
  },
522
598
  async handler(ctx) {
599
+ let resultHandler;
600
+ if (ctx.input.as === "object") {
601
+ resultHandler = (rz) => rz;
602
+ } else {
603
+ resultHandler = (rz) => yaml__default["default"].dump(rz, ctx.input.options);
604
+ }
523
605
  const sourceFilepath = backendCommon.resolveSafeChildPath(
524
606
  ctx.workspacePath,
525
607
  ctx.input.path
526
608
  );
527
609
  const data = yaml__default["default"].load(fs__default["default"].readFileSync(sourceFilepath).toString());
528
610
  const expression = jsonata__default["default"](ctx.input.expression);
529
- const result = yaml__default["default"].dump(expression.evaluate(data), ctx.input.options);
530
- ctx.output("result", result);
611
+ const result = expression.evaluate(data);
612
+ ctx.output("result", resultHandler(result));
531
613
  }
532
614
  });
533
615
  }
@@ -552,6 +634,12 @@ function createJsonJSONataTransformAction() {
552
634
  description: "JSONata expression to perform on the input",
553
635
  type: "string"
554
636
  },
637
+ as: {
638
+ title: "Desired Result Type",
639
+ description: 'Permitted values are: "string" (default) and "object"',
640
+ type: "string",
641
+ enum: ["string", "object"]
642
+ },
555
643
  replacer: {
556
644
  title: "Replacer",
557
645
  description: "Replacer array",
@@ -572,24 +660,26 @@ function createJsonJSONataTransformAction() {
572
660
  properties: {
573
661
  result: {
574
662
  title: "Output result from JSONata",
575
- type: "object"
663
+ type: "object | string"
576
664
  }
577
665
  }
578
666
  }
579
667
  },
580
668
  async handler(ctx) {
669
+ let resultHandler;
670
+ if (ctx.input.as === "object") {
671
+ resultHandler = (rz) => rz;
672
+ } else {
673
+ resultHandler = (rz) => JSON.stringify(rz, ctx.input.replacer, ctx.input.space);
674
+ }
581
675
  const sourceFilepath = backendCommon.resolveSafeChildPath(
582
676
  ctx.workspacePath,
583
677
  ctx.input.path
584
678
  );
585
679
  const data = JSON.parse(fs__default["default"].readFileSync(sourceFilepath).toString());
586
680
  const expression = jsonata__default["default"](ctx.input.expression);
587
- const result = JSON.stringify(
588
- expression.evaluate(data),
589
- ctx.input.replacer,
590
- ctx.input.space
591
- );
592
- ctx.output("result", result);
681
+ const result = expression.evaluate(data);
682
+ ctx.output("result", resultHandler(result));
593
683
  }
594
684
  });
595
685
  }
@@ -691,6 +781,7 @@ exports.createJsonJSONataTransformAction = createJsonJSONataTransformAction;
691
781
  exports.createMergeAction = createMergeAction;
692
782
  exports.createMergeJSONAction = createMergeJSONAction;
693
783
  exports.createParseFileAction = createParseFileAction;
784
+ exports.createReplaceInFileAction = createReplaceInFileAction;
694
785
  exports.createSerializeJsonAction = createSerializeJsonAction;
695
786
  exports.createSerializeYamlAction = createSerializeYamlAction;
696
787
  exports.createSleepAction = createSleepAction;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/actions/zip.ts","../src/actions/fs/writeFile.ts","../src/actions/fs/appendFile.ts","../src/actions/fs/parseFile.ts","../src/types.ts","../src/actions/merge/merge.ts","../src/actions/sleep.ts","../src/actions/jsonata/jsonata.ts","../src/actions/jsonata/yaml.ts","../src/actions/jsonata/json.ts","../src/actions/serialize/json.ts","../src/actions/serialize/yaml.ts"],"sourcesContent":["/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { InputError } from '@backstage/errors';\nimport AdmZip from 'adm-zip';\nimport fs from 'fs-extra';\n\nexport function createZipAction() {\n return createTemplateAction<{ path: string; outputPath: string }>({\n id: 'roadiehq:utils:zip',\n description: 'Zips the content of the path',\n supportsDryRun: true,\n schema: {\n input: {\n required: ['path'],\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n description: 'Relative path you would like to zip',\n type: 'string',\n },\n\n outputPath: {\n title: 'Output Path',\n description: 'The name of the result of the zip command',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n outputPath: {\n title: 'Zip Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const zip = new AdmZip();\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n const destFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.outputPath,\n );\n\n if (!fs.existsSync(sourceFilepath)) {\n throw new InputError(\n `File ${ctx.input.path} does not exist. Can't zip it.`,\n );\n }\n if (fs.lstatSync(sourceFilepath).isDirectory()) {\n zip.addLocalFolder(sourceFilepath);\n } else if (fs.lstatSync(sourceFilepath).isFile()) {\n zip.addLocalFile(sourceFilepath);\n }\n zip.writeZip(destFilepath);\n ctx.output('outputPath', ctx.input.outputPath);\n },\n });\n}\n","/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\n\nexport function createWriteFileAction() {\n return createTemplateAction<{ path: string; content: string }>({\n id: 'roadiehq:utils:fs:write',\n description: 'Creates a file with the content on the given path',\n supportsDryRun: true,\n schema: {\n input: {\n required: ['path', 'content'],\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n description: 'Relative path',\n type: 'string',\n },\n content: {\n title: 'Content',\n description: 'This will be the content of the file',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const destFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n fs.outputFileSync(destFilepath, ctx.input.content);\n ctx.output('path', destFilepath);\n },\n });\n}\n","/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\n\nexport function createAppendFileAction() {\n return createTemplateAction<{ path: string; content: string }>({\n id: 'roadiehq:utils:fs:append',\n description:\n 'Append content to the end of the given file, it will create the file if it does not exist.',\n schema: {\n input: {\n type: 'object',\n required: ['content', 'path'],\n properties: {\n path: {\n title: 'Path',\n description: 'Path to existing file to append.',\n type: 'string',\n },\n content: {\n title: 'Content',\n description: 'This will be appended to the file',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n fs.appendFileSync(sourceFilepath, ctx.input.content);\n ctx.output('path', sourceFilepath);\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\nimport yaml from 'js-yaml';\n\nconst parsers: Record<'yaml' | 'json' | 'multiyaml', (cnt: string) => any> = {\n yaml: (cnt: string) => yaml.load(cnt),\n json: (cnt: string) => JSON.parse(cnt),\n multiyaml: (cnt: string) => yaml.loadAll(cnt),\n};\n\nexport function createParseFileAction() {\n return createTemplateAction<{\n path: string;\n parser?: 'yaml' | 'json' | 'multiyaml';\n }>({\n id: 'roadiehq:utils:fs:parse',\n description: 'Reads a file from the workspace and optionally parses it',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['path'],\n properties: {\n path: {\n title: 'Path',\n description: 'Path to the file to read.',\n type: 'string',\n },\n parser: {\n title: 'Parse',\n description: 'Optionally parse the content to an object.',\n type: 'string',\n enum: ['yaml', 'json', 'multiyaml'],\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n content: {\n title: 'Content of the file',\n type: ['string', 'object'],\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n const parserName = ctx.input.parser;\n let parser = (content: string) => content;\n\n if (parserName) {\n parser = parsers[parserName];\n }\n\n const content: string | object = parser(\n fs.readFileSync(sourceFilepath).toString(),\n );\n\n ctx.output('content', content);\n },\n });\n}\n","/*\n * Copyright 2023 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DumpOptions } from 'js-yaml';\n\nexport type supportedDumpOptions = Omit<\n DumpOptions,\n 'styles' | 'schema' | 'replacer' | 'sortKeys'\n>;\n\nexport const yamlOptionsSchema = {\n title: 'Options',\n description: 'YAML stringify options',\n type: 'object',\n properties: {\n indent: {\n description: '(default: 2) - indentation width to use (in spaces)',\n type: 'number',\n },\n noArrayIndent: {\n description:\n '(default: false) - when true, will not add an indentation level to array elements',\n type: 'boolean',\n },\n skipInvalid: {\n description:\n '(default: false) - do not throw on invalid types (like function in the safe schema) and skip pairs and single values with such types',\n type: 'boolean',\n },\n flowLevel: {\n description:\n '(default: -1) - specifies level of nesting, when to switch from block to flow style for collections. -1 means block style everwhere',\n type: 'number',\n },\n sortKeys: {\n description:\n '(default: false) - if true, sort keys when dumping YAML. If a function, use the function to sort the keys',\n type: 'boolean',\n },\n lineWidth: {\n description:\n '(default: 80) - set max line width. Set -1 for unlimited width',\n type: 'number',\n },\n noRefs: {\n description:\n \"(default: false) - if true, don't convert duplicate objects into references\",\n type: 'boolean',\n },\n noCompatMode: {\n description:\n '(default: false) - if true don\\'t try to be compatible with older yaml versions. Currently: don\\'t quote \"yes\", \"no\" and so on, as required for YAML 1.1',\n type: 'boolean',\n },\n condenseFlow: {\n description:\n \"(default: false) - if true flow sequences will be condensed, omitting the space between a, b. Eg. '[a,b]', and omitting the space between key: value and quoting the key. Eg. '{\\\"a\\\":b}' Can be useful when using yaml for pretty URL query params as spaces are %-encoded.\",\n type: 'boolean',\n },\n quotingType: {\n description:\n \"(' or \\\", default: ') - strings will be quoted using this quoting style. If you specify single quotes, double quotes will still be used for non-printable characters.\",\n type: 'string',\n },\n forceQuotes: {\n description:\n \"(default: false) - if true, all non-key strings will be quoted even if they normally don't need to.\",\n type: 'boolean',\n },\n },\n};\n","/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\nimport { extname } from 'path';\nimport { merge } from 'lodash';\nimport yaml from 'js-yaml';\nimport { supportedDumpOptions, yamlOptionsSchema } from '../../types';\n\nexport function createMergeJSONAction({ actionId }: { actionId?: string }) {\n return createTemplateAction<{ path: string; content: any }>({\n id: actionId || 'roadiehq:utils:json:merge',\n description: 'Merge new data into an existing JSON file.',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['content', 'path'],\n properties: {\n path: {\n title: 'Path',\n description: 'Path to existing file to append.',\n type: 'string',\n },\n content: {\n description:\n 'This will be merged into to the file. Can be either an object or a string.',\n title: 'Content',\n type: ['string', 'object'],\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n let existingContent;\n\n if (fs.existsSync(sourceFilepath)) {\n existingContent = JSON.parse(\n fs.readFileSync(sourceFilepath).toString(),\n );\n } else {\n ctx.logger.info(\n `The file ${sourceFilepath} does not exist, creating it.`,\n );\n existingContent = {};\n }\n const content =\n typeof ctx.input.content === 'string'\n ? JSON.parse(ctx.input.content)\n : ctx.input.content;\n\n fs.writeFileSync(\n sourceFilepath,\n JSON.stringify(merge(existingContent, content), null, 2),\n );\n ctx.output('path', sourceFilepath);\n },\n });\n}\n\nexport function createMergeAction() {\n return createTemplateAction<{\n path: string;\n content: any;\n options?: supportedDumpOptions;\n }>({\n id: 'roadiehq:utils:merge',\n description: 'Merges data into an existing structured file.',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['content', 'path'],\n properties: {\n path: {\n title: 'Path',\n description: 'Path to existing file to append.',\n type: 'string',\n },\n content: {\n description:\n 'This will be merged into to the file. Can be either an object or a string.',\n title: 'Content',\n type: ['string', 'object'],\n },\n options: {\n ...yamlOptionsSchema,\n description: `${yamlOptionsSchema.description} (for YAML output only)`,\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n if (!fs.existsSync(sourceFilepath)) {\n ctx.logger.error(`The file ${sourceFilepath} does not exist.`);\n throw new Error(`The file ${sourceFilepath} does not exist.`);\n }\n const originalContent = fs.readFileSync(sourceFilepath).toString();\n let mergedContent;\n\n switch (extname(sourceFilepath)) {\n case '.json': {\n const newContent =\n typeof ctx.input.content === 'string'\n ? JSON.parse(ctx.input.content)\n : ctx.input.content; // This supports the case where dynamic keys are required\n mergedContent = JSON.stringify(\n merge(JSON.parse(originalContent), newContent),\n null,\n 2,\n );\n break;\n }\n case '.yml':\n case '.yaml': {\n const newContent =\n typeof ctx.input.content === 'string'\n ? yaml.load(ctx.input.content)\n : ctx.input.content; // This supports the case where dynamic keys are required\n mergedContent = yaml.dump(\n merge(yaml.load(originalContent), newContent),\n ctx.input.options,\n );\n break;\n }\n default:\n break;\n }\n if (!mergedContent) {\n return;\n }\n fs.writeFileSync(sourceFilepath, mergedContent);\n ctx.output('path', sourceFilepath);\n },\n });\n}\n","/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { InputError } from '@backstage/errors';\n\nexport function createSleepAction(options?: { maxSleep?: number }) {\n return createTemplateAction<{ amount: number }>({\n id: 'roadiehq:utils:sleep',\n description: 'Halts the scaffolding for the given amount of seconds',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['amount'],\n properties: {\n amount: {\n title: 'Sleep Amount',\n description: 'How much seconds should this step take.',\n type: 'number',\n },\n },\n },\n },\n async handler(ctx) {\n if (isNaN(ctx.input?.amount)) {\n throw new InputError('amount must be a number');\n } else if (options?.maxSleep && ctx.input.amount > options.maxSleep) {\n throw new InputError(\n `sleep amount can not be greater than maxSleep. amount: ${ctx.input.amount}, maxSleep: ${options.maxSleep}`,\n );\n }\n ctx.logger.info(`Waiting ${ctx.input.amount} seconds`);\n\n await new Promise(resolve => {\n setTimeout(resolve, ctx.input.amount * 1000);\n });\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport jsonata from 'jsonata';\n\nexport function createJSONataAction() {\n return createTemplateAction<{\n data: any;\n expression: string;\n }>({\n id: 'roadiehq:utils:jsonata',\n description:\n 'Allows performing JSONata operations and transformations on input objects and produces the output result as a step output.',\n schema: {\n input: {\n type: 'object',\n required: ['data', 'expression'],\n properties: {\n data: {\n title: 'Data',\n description: 'Input data to be transformed',\n type: [\n 'object',\n 'array',\n 'string',\n 'number',\n 'integer',\n 'boolean',\n 'null',\n ],\n },\n expression: {\n title: 'Expression',\n description: 'JSONata expression to perform on the input',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n result: {\n title: 'Output result from JSONata',\n type: 'object',\n },\n },\n },\n },\n async handler(ctx) {\n const expression = jsonata(ctx.input.expression);\n const result = expression.evaluate(ctx.input.data);\n\n ctx.output('result', result);\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport jsonata from 'jsonata';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\nimport yaml from 'js-yaml';\nimport { supportedDumpOptions, yamlOptionsSchema } from '../../types';\n\nexport function createYamlJSONataTransformAction() {\n return createTemplateAction<{\n path: string;\n expression: string;\n options?: supportedDumpOptions;\n }>({\n id: 'roadiehq:utils:jsonata:yaml:transform',\n description:\n 'Allows performing JSONata operations and transformations on a YAML file in the workspace. The result can be read from the `result` step output.',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['path', 'expression'],\n properties: {\n path: {\n title: 'Path',\n description: 'Input path to read yaml file',\n type: 'string',\n },\n expression: {\n title: 'Expression',\n description: 'JSONata expression to perform on the input',\n type: 'string',\n },\n options: yamlOptionsSchema,\n },\n },\n output: {\n type: 'object',\n properties: {\n result: {\n title: 'Output result from JSONata',\n type: 'object',\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n const data = yaml.load(fs.readFileSync(sourceFilepath).toString());\n const expression = jsonata(ctx.input.expression);\n const result = yaml.dump(expression.evaluate(data), ctx.input.options);\n\n ctx.output('result', result);\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport jsonata from 'jsonata';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\n\nexport function createJsonJSONataTransformAction() {\n return createTemplateAction<{\n path: string;\n expression: string;\n replacer?: string[];\n space?: string;\n }>({\n id: 'roadiehq:utils:jsonata:json:transform',\n description:\n 'Allows performing JSONata operations and transformations on a JSON file in the workspace. The result can be read from the `result` step output.',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['path', 'expression'],\n properties: {\n path: {\n title: 'Path',\n description: 'Input path to read json file',\n type: 'string',\n },\n expression: {\n title: 'Expression',\n description: 'JSONata expression to perform on the input',\n type: 'string',\n },\n replacer: {\n title: 'Replacer',\n description: 'Replacer array',\n type: 'array',\n items: {\n type: 'string',\n },\n },\n space: {\n title: 'Space',\n description: 'Space character',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n result: {\n title: 'Output result from JSONata',\n type: 'object',\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n const data = JSON.parse(fs.readFileSync(sourceFilepath).toString());\n const expression = jsonata(ctx.input.expression);\n const result = JSON.stringify(\n expression.evaluate(data),\n ctx.input.replacer,\n ctx.input.space,\n );\n\n ctx.output('result', result);\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\n\nexport function createSerializeJsonAction() {\n return createTemplateAction<{\n data: any;\n replacer?: string[];\n space?: string;\n }>({\n id: 'roadiehq:utils:serialize:json',\n description: 'Allows performing serialization on an object',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['data'],\n properties: {\n data: {\n title: 'Data',\n description: 'Input data to perform seriazation on.',\n type: 'object',\n },\n replacer: {\n title: 'Replacer',\n description: 'Replacer array',\n type: 'array',\n items: {\n type: 'string',\n },\n },\n space: {\n title: 'Space',\n description: 'Space character',\n type: 'string',\n },\n },\n },\n output: {\n type: 'string',\n properties: {\n serialized: {\n title: 'Output result from serialization',\n type: 'string',\n },\n },\n },\n },\n\n async handler(ctx) {\n ctx.output(\n 'serialized',\n JSON.stringify(ctx.input.data, ctx.input.replacer, ctx.input.space),\n );\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'js-yaml';\nimport { supportedDumpOptions, yamlOptionsSchema } from '../../types';\n\nexport function createSerializeYamlAction() {\n return createTemplateAction<{\n data: any;\n options?: supportedDumpOptions;\n }>({\n id: 'roadiehq:utils:serialize:yaml',\n description: 'Allows performing serialization on an object',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['data'],\n properties: {\n data: {\n title: 'Data',\n description: 'Input data to perform seriazation on.',\n type: 'object',\n },\n replacer: {\n title: 'Replacer',\n description: 'Replacer array',\n type: 'array',\n items: {\n type: 'string',\n },\n },\n options: yamlOptionsSchema,\n },\n },\n output: {\n type: 'string',\n properties: {\n serialized: {\n title: 'Output result from serialization',\n type: 'string',\n },\n },\n },\n },\n\n async handler(ctx) {\n ctx.output('serialized', yaml.dump(ctx.input.data, ctx.input.options));\n },\n });\n}\n"],"names":["createTemplateAction","AdmZip","resolveSafeChildPath","fs","InputError","yaml","merge","extname","jsonata"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/actions/zip.ts","../src/actions/fs/writeFile.ts","../src/actions/fs/appendFile.ts","../src/actions/fs/parseFile.ts","../src/actions/fs/replaceInFile.ts","../src/types.ts","../src/actions/merge/merge.ts","../src/actions/sleep.ts","../src/actions/jsonata/jsonata.ts","../src/actions/jsonata/yaml.ts","../src/actions/jsonata/json.ts","../src/actions/serialize/json.ts","../src/actions/serialize/yaml.ts"],"sourcesContent":["/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { InputError } from '@backstage/errors';\nimport AdmZip from 'adm-zip';\nimport fs from 'fs-extra';\n\nexport function createZipAction() {\n return createTemplateAction<{ path: string; outputPath: string }>({\n id: 'roadiehq:utils:zip',\n description: 'Zips the content of the path',\n supportsDryRun: true,\n schema: {\n input: {\n required: ['path'],\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n description: 'Relative path you would like to zip',\n type: 'string',\n },\n\n outputPath: {\n title: 'Output Path',\n description: 'The name of the result of the zip command',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n outputPath: {\n title: 'Zip Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const zip = new AdmZip();\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n const destFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.outputPath,\n );\n\n if (!fs.existsSync(sourceFilepath)) {\n throw new InputError(\n `File ${ctx.input.path} does not exist. Can't zip it.`,\n );\n }\n if (fs.lstatSync(sourceFilepath).isDirectory()) {\n zip.addLocalFolder(sourceFilepath);\n } else if (fs.lstatSync(sourceFilepath).isFile()) {\n zip.addLocalFile(sourceFilepath);\n }\n zip.writeZip(destFilepath);\n ctx.output('outputPath', ctx.input.outputPath);\n },\n });\n}\n","/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\n\nexport function createWriteFileAction() {\n return createTemplateAction<{ path: string; content: string }>({\n id: 'roadiehq:utils:fs:write',\n description: 'Creates a file with the content on the given path',\n supportsDryRun: true,\n schema: {\n input: {\n required: ['path', 'content'],\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n description: 'Relative path',\n type: 'string',\n },\n content: {\n title: 'Content',\n description: 'This will be the content of the file',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const destFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n fs.outputFileSync(destFilepath, ctx.input.content);\n ctx.output('path', destFilepath);\n },\n });\n}\n","/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\n\nexport function createAppendFileAction() {\n return createTemplateAction<{ path: string; content: string }>({\n id: 'roadiehq:utils:fs:append',\n description:\n 'Append content to the end of the given file, it will create the file if it does not exist.',\n schema: {\n input: {\n type: 'object',\n required: ['content', 'path'],\n properties: {\n path: {\n title: 'Path',\n description: 'Path to existing file to append.',\n type: 'string',\n },\n content: {\n title: 'Content',\n description: 'This will be appended to the file',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n fs.appendFileSync(sourceFilepath, ctx.input.content);\n ctx.output('path', sourceFilepath);\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\nimport yaml from 'js-yaml';\n\nconst parsers: Record<'yaml' | 'json' | 'multiyaml', (cnt: string) => any> = {\n yaml: (cnt: string) => yaml.load(cnt),\n json: (cnt: string) => JSON.parse(cnt),\n multiyaml: (cnt: string) => yaml.loadAll(cnt),\n};\n\nexport function createParseFileAction() {\n return createTemplateAction<{\n path: string;\n parser?: 'yaml' | 'json' | 'multiyaml';\n }>({\n id: 'roadiehq:utils:fs:parse',\n description: 'Reads a file from the workspace and optionally parses it',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['path'],\n properties: {\n path: {\n title: 'Path',\n description: 'Path to the file to read.',\n type: 'string',\n },\n parser: {\n title: 'Parse',\n description: 'Optionally parse the content to an object.',\n type: 'string',\n enum: ['yaml', 'json', 'multiyaml'],\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n content: {\n title: 'Content of the file',\n type: ['string', 'object'],\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n const parserName = ctx.input.parser;\n let parser = (content: string) => content;\n\n if (parserName) {\n parser = parsers[parserName];\n }\n\n const content: string | object = parser(\n fs.readFileSync(sourceFilepath).toString(),\n );\n\n ctx.output('content', content);\n },\n });\n}\n","/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport fs from 'fs-extra';\nimport { InputError } from '@backstage/errors';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\n\nexport function createReplaceInFileAction() {\n return createTemplateAction<{\n files: Array<{\n file: string;\n find: string;\n replaceWith: string;\n }>;\n }>({\n id: 'roadiehq:utils:fs:replace',\n description: 'Replaces content of a file with given values.',\n supportsDryRun: true,\n schema: {\n input: {\n required: ['files'],\n type: 'object',\n properties: {\n files: {\n title: 'Files',\n description: 'A list of files and replacements to be done',\n type: 'array',\n items: {\n type: 'object',\n required: [],\n properties: {\n file: {\n type: 'string',\n title:\n 'The source location of the file to be used to run replace against',\n },\n find: {\n type: 'string',\n title: 'A string to be replaced',\n },\n replaceWith: {\n type: 'string',\n title: 'Text to be used to replace the found lines with',\n },\n },\n },\n },\n },\n },\n },\n async handler(ctx) {\n if (!Array.isArray(ctx.input?.files)) {\n throw new InputError('files must be an Array');\n }\n\n for (const file of ctx.input.files) {\n if (!file.file) {\n throw new InputError('Path to file needs to be defined');\n }\n if (!file.find || !file.replaceWith) {\n throw new InputError(\n 'each file must have a find and replaceWith property',\n );\n }\n\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n file.file,\n );\n const content: string = fs.readFileSync(sourceFilepath).toString();\n\n // Not regex\n const replacedContent = content.replaceAll(file.find, file.replaceWith);\n\n fs.writeFileSync(sourceFilepath, replacedContent);\n }\n },\n });\n}\n","/*\n * Copyright 2023 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DumpOptions } from 'js-yaml';\n\nexport type supportedDumpOptions = Omit<\n DumpOptions,\n 'styles' | 'schema' | 'replacer' | 'sortKeys'\n>;\n\nexport const yamlOptionsSchema = {\n title: 'Options',\n description: 'YAML stringify options',\n type: 'object',\n properties: {\n indent: {\n description: '(default: 2) - indentation width to use (in spaces)',\n type: 'number',\n },\n noArrayIndent: {\n description:\n '(default: false) - when true, will not add an indentation level to array elements',\n type: 'boolean',\n },\n skipInvalid: {\n description:\n '(default: false) - do not throw on invalid types (like function in the safe schema) and skip pairs and single values with such types',\n type: 'boolean',\n },\n flowLevel: {\n description:\n '(default: -1) - specifies level of nesting, when to switch from block to flow style for collections. -1 means block style everwhere',\n type: 'number',\n },\n sortKeys: {\n description:\n '(default: false) - if true, sort keys when dumping YAML. If a function, use the function to sort the keys',\n type: 'boolean',\n },\n lineWidth: {\n description:\n '(default: 80) - set max line width. Set -1 for unlimited width',\n type: 'number',\n },\n noRefs: {\n description:\n \"(default: false) - if true, don't convert duplicate objects into references\",\n type: 'boolean',\n },\n noCompatMode: {\n description:\n '(default: false) - if true don\\'t try to be compatible with older yaml versions. Currently: don\\'t quote \"yes\", \"no\" and so on, as required for YAML 1.1',\n type: 'boolean',\n },\n condenseFlow: {\n description:\n \"(default: false) - if true flow sequences will be condensed, omitting the space between a, b. Eg. '[a,b]', and omitting the space between key: value and quoting the key. Eg. '{\\\"a\\\":b}' Can be useful when using yaml for pretty URL query params as spaces are %-encoded.\",\n type: 'boolean',\n },\n quotingType: {\n description:\n \"(' or \\\", default: ') - strings will be quoted using this quoting style. If you specify single quotes, double quotes will still be used for non-printable characters.\",\n type: 'string',\n },\n forceQuotes: {\n description:\n \"(default: false) - if true, all non-key strings will be quoted even if they normally don't need to.\",\n type: 'boolean',\n },\n },\n};\n","/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\nimport { extname } from 'path';\nimport { merge } from 'lodash';\nimport yaml from 'js-yaml';\nimport { supportedDumpOptions, yamlOptionsSchema } from '../../types';\n\nexport function createMergeJSONAction({ actionId }: { actionId?: string }) {\n return createTemplateAction<{ path: string; content: any }>({\n id: actionId || 'roadiehq:utils:json:merge',\n description: 'Merge new data into an existing JSON file.',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['content', 'path'],\n properties: {\n path: {\n title: 'Path',\n description: 'Path to existing file to append.',\n type: 'string',\n },\n content: {\n description:\n 'This will be merged into to the file. Can be either an object or a string.',\n title: 'Content',\n type: ['string', 'object'],\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n let existingContent;\n\n if (fs.existsSync(sourceFilepath)) {\n existingContent = JSON.parse(\n fs.readFileSync(sourceFilepath).toString(),\n );\n } else {\n ctx.logger.info(\n `The file ${sourceFilepath} does not exist, creating it.`,\n );\n existingContent = {};\n }\n const content =\n typeof ctx.input.content === 'string'\n ? JSON.parse(ctx.input.content)\n : ctx.input.content;\n\n fs.writeFileSync(\n sourceFilepath,\n JSON.stringify(merge(existingContent, content), null, 2),\n );\n ctx.output('path', sourceFilepath);\n },\n });\n}\n\nexport function createMergeAction() {\n return createTemplateAction<{\n path: string;\n content: any;\n options?: supportedDumpOptions;\n }>({\n id: 'roadiehq:utils:merge',\n description: 'Merges data into an existing structured file.',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['content', 'path'],\n properties: {\n path: {\n title: 'Path',\n description: 'Path to existing file to append.',\n type: 'string',\n },\n content: {\n description:\n 'This will be merged into to the file. Can be either an object or a string.',\n title: 'Content',\n type: ['string', 'object'],\n },\n options: {\n ...yamlOptionsSchema,\n description: `${yamlOptionsSchema.description} (for YAML output only)`,\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n path: {\n title: 'Path',\n type: 'string',\n },\n },\n },\n },\n async handler(ctx) {\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n if (!fs.existsSync(sourceFilepath)) {\n ctx.logger.error(`The file ${sourceFilepath} does not exist.`);\n throw new Error(`The file ${sourceFilepath} does not exist.`);\n }\n const originalContent = fs.readFileSync(sourceFilepath).toString();\n let mergedContent;\n\n switch (extname(sourceFilepath)) {\n case '.json': {\n const newContent =\n typeof ctx.input.content === 'string'\n ? JSON.parse(ctx.input.content)\n : ctx.input.content; // This supports the case where dynamic keys are required\n mergedContent = JSON.stringify(\n merge(JSON.parse(originalContent), newContent),\n null,\n 2,\n );\n break;\n }\n case '.yml':\n case '.yaml': {\n const newContent =\n typeof ctx.input.content === 'string'\n ? yaml.load(ctx.input.content)\n : ctx.input.content; // This supports the case where dynamic keys are required\n mergedContent = yaml.dump(\n merge(yaml.load(originalContent), newContent),\n ctx.input.options,\n );\n break;\n }\n default:\n break;\n }\n if (!mergedContent) {\n return;\n }\n fs.writeFileSync(sourceFilepath, mergedContent);\n ctx.output('path', sourceFilepath);\n },\n });\n}\n","/*\n * Copyright 2021 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport { InputError } from '@backstage/errors';\n\nexport function createSleepAction(options?: { maxSleep?: number }) {\n return createTemplateAction<{ amount: number }>({\n id: 'roadiehq:utils:sleep',\n description: 'Halts the scaffolding for the given amount of seconds',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['amount'],\n properties: {\n amount: {\n title: 'Sleep Amount',\n description: 'How much seconds should this step take.',\n type: 'number',\n },\n },\n },\n },\n async handler(ctx) {\n if (isNaN(ctx.input?.amount)) {\n throw new InputError('amount must be a number');\n } else if (options?.maxSleep && ctx.input.amount > options.maxSleep) {\n throw new InputError(\n `sleep amount can not be greater than maxSleep. amount: ${ctx.input.amount}, maxSleep: ${options.maxSleep}`,\n );\n }\n ctx.logger.info(`Waiting ${ctx.input.amount} seconds`);\n\n await new Promise(resolve => {\n setTimeout(resolve, ctx.input.amount * 1000);\n });\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport jsonata from 'jsonata';\n\nexport function createJSONataAction() {\n return createTemplateAction<{\n data: any;\n expression: string;\n }>({\n id: 'roadiehq:utils:jsonata',\n description:\n 'Allows performing JSONata operations and transformations on input objects and produces the output result as a step output.',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['data', 'expression'],\n properties: {\n data: {\n title: 'Data',\n description: 'Input data to be transformed',\n type: [\n 'object',\n 'array',\n 'string',\n 'number',\n 'integer',\n 'boolean',\n 'null',\n ],\n },\n expression: {\n title: 'Expression',\n description: 'JSONata expression to perform on the input',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n result: {\n title: 'Output result from JSONata',\n type: 'object',\n },\n },\n },\n },\n async handler(ctx) {\n try {\n const expression = jsonata(ctx.input.expression);\n const result = expression.evaluate(ctx.input.data);\n\n ctx.output('result', result);\n } catch (e: any) {\n const message = e.hasOwnProperty('message')\n ? e.message\n : 'unknown JSONata evaluation error';\n throw new Error(\n `JSONata failed to evaluate the expression: ${message}`,\n );\n }\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport jsonata from 'jsonata';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\nimport yaml from 'js-yaml';\nimport { supportedDumpOptions, yamlOptionsSchema } from '../../types';\n\nexport function createYamlJSONataTransformAction() {\n return createTemplateAction<{\n path: string;\n expression: string;\n options?: supportedDumpOptions;\n as?: 'string' | 'object';\n }>({\n id: 'roadiehq:utils:jsonata:yaml:transform',\n description:\n 'Allows performing JSONata operations and transformations on a YAML file in the workspace. The result can be read from the `result` step output.',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['path', 'expression'],\n properties: {\n path: {\n title: 'Path',\n description: 'Input path to read yaml file',\n type: 'string',\n },\n expression: {\n title: 'Expression',\n description: 'JSONata expression to perform on the input',\n type: 'string',\n },\n as: {\n title: 'Desired Result Type',\n description:\n 'Permitted values are: \"string\" (default) and \"object\"',\n type: 'string',\n enum: ['string', 'object'],\n },\n options: yamlOptionsSchema,\n },\n },\n output: {\n type: 'object',\n properties: {\n result: {\n title: 'Output result from JSONata',\n type: 'object | string',\n },\n },\n },\n },\n async handler(ctx) {\n let resultHandler: (rz: any) => any;\n\n if (ctx.input.as === 'object') {\n resultHandler = rz => rz;\n } else {\n resultHandler = rz => yaml.dump(rz, ctx.input.options);\n }\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n const data = yaml.load(fs.readFileSync(sourceFilepath).toString());\n const expression = jsonata(ctx.input.expression);\n const result = expression.evaluate(data);\n\n ctx.output('result', resultHandler(result));\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\nimport jsonata from 'jsonata';\nimport { resolveSafeChildPath } from '@backstage/backend-common';\nimport fs from 'fs-extra';\n\nexport function createJsonJSONataTransformAction() {\n return createTemplateAction<{\n path: string;\n expression: string;\n replacer?: string[];\n space?: string;\n as?: 'string' | 'object';\n }>({\n id: 'roadiehq:utils:jsonata:json:transform',\n description:\n 'Allows performing JSONata operations and transformations on a JSON file in the workspace. The result can be read from the `result` step output.',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['path', 'expression'],\n properties: {\n path: {\n title: 'Path',\n description: 'Input path to read json file',\n type: 'string',\n },\n expression: {\n title: 'Expression',\n description: 'JSONata expression to perform on the input',\n type: 'string',\n },\n as: {\n title: 'Desired Result Type',\n description:\n 'Permitted values are: \"string\" (default) and \"object\"',\n type: 'string',\n enum: ['string', 'object'],\n },\n replacer: {\n title: 'Replacer',\n description: 'Replacer array',\n type: 'array',\n items: {\n type: 'string',\n },\n },\n space: {\n title: 'Space',\n description: 'Space character',\n type: 'string',\n },\n },\n },\n output: {\n type: 'object',\n properties: {\n result: {\n title: 'Output result from JSONata',\n type: 'object | string',\n },\n },\n },\n },\n async handler(ctx) {\n let resultHandler: (rz: any) => any;\n\n if (ctx.input.as === 'object') {\n resultHandler = rz => rz;\n } else {\n resultHandler = rz =>\n JSON.stringify(rz, ctx.input.replacer, ctx.input.space);\n }\n const sourceFilepath = resolveSafeChildPath(\n ctx.workspacePath,\n ctx.input.path,\n );\n\n const data = JSON.parse(fs.readFileSync(sourceFilepath).toString());\n const expression = jsonata(ctx.input.expression);\n const result = expression.evaluate(data);\n\n ctx.output('result', resultHandler(result));\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-backend';\n\nexport function createSerializeJsonAction() {\n return createTemplateAction<{\n data: any;\n replacer?: string[];\n space?: string;\n }>({\n id: 'roadiehq:utils:serialize:json',\n description: 'Allows performing serialization on an object',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['data'],\n properties: {\n data: {\n title: 'Data',\n description: 'Input data to perform seriazation on.',\n type: 'object',\n },\n replacer: {\n title: 'Replacer',\n description: 'Replacer array',\n type: 'array',\n items: {\n type: 'string',\n },\n },\n space: {\n title: 'Space',\n description: 'Space character',\n type: 'string',\n },\n },\n },\n output: {\n type: 'string',\n properties: {\n serialized: {\n title: 'Output result from serialization',\n type: 'string',\n },\n },\n },\n },\n\n async handler(ctx) {\n ctx.output(\n 'serialized',\n JSON.stringify(ctx.input.data, ctx.input.replacer, ctx.input.space),\n );\n },\n });\n}\n","/*\n * Copyright 2022 Larder Software Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTemplateAction } from '@backstage/plugin-scaffolder-node';\nimport yaml from 'js-yaml';\nimport { supportedDumpOptions, yamlOptionsSchema } from '../../types';\n\nexport function createSerializeYamlAction() {\n return createTemplateAction<{\n data: any;\n options?: supportedDumpOptions;\n }>({\n id: 'roadiehq:utils:serialize:yaml',\n description: 'Allows performing serialization on an object',\n supportsDryRun: true,\n schema: {\n input: {\n type: 'object',\n required: ['data'],\n properties: {\n data: {\n title: 'Data',\n description: 'Input data to perform seriazation on.',\n type: 'object',\n },\n replacer: {\n title: 'Replacer',\n description: 'Replacer array',\n type: 'array',\n items: {\n type: 'string',\n },\n },\n options: yamlOptionsSchema,\n },\n },\n output: {\n type: 'string',\n properties: {\n serialized: {\n title: 'Output result from serialization',\n type: 'string',\n },\n },\n },\n },\n\n async handler(ctx) {\n ctx.output('serialized', yaml.dump(ctx.input.data, ctx.input.options));\n },\n });\n}\n"],"names":["createTemplateAction","AdmZip","resolveSafeChildPath","fs","InputError","yaml","merge","extname","jsonata"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -22,6 +22,14 @@ declare function createParseFileAction(): _backstage_plugin_scaffolder_node.Temp
22
22
  parser?: "yaml" | "json" | "multiyaml" | undefined;
23
23
  }, _backstage_types.JsonObject>;
24
24
 
25
+ declare function createReplaceInFileAction(): _backstage_plugin_scaffolder_node.TemplateAction<{
26
+ files: Array<{
27
+ file: string;
28
+ find: string;
29
+ replaceWith: string;
30
+ }>;
31
+ }, _backstage_types.JsonObject>;
32
+
25
33
  declare type supportedDumpOptions = Omit<DumpOptions, 'styles' | 'schema' | 'replacer' | 'sortKeys'>;
26
34
 
27
35
  declare function createMergeJSONAction({ actionId }: {
@@ -51,6 +59,7 @@ declare function createYamlJSONataTransformAction(): _backstage_plugin_scaffolde
51
59
  path: string;
52
60
  expression: string;
53
61
  options?: supportedDumpOptions | undefined;
62
+ as?: "string" | "object" | undefined;
54
63
  }, _backstage_types.JsonObject>;
55
64
 
56
65
  declare function createJsonJSONataTransformAction(): _backstage_plugin_scaffolder_node.TemplateAction<{
@@ -58,6 +67,7 @@ declare function createJsonJSONataTransformAction(): _backstage_plugin_scaffolde
58
67
  expression: string;
59
68
  replacer?: string[] | undefined;
60
69
  space?: string | undefined;
70
+ as?: "string" | "object" | undefined;
61
71
  }, _backstage_types.JsonObject>;
62
72
 
63
73
  declare function createSerializeJsonAction(): _backstage_plugin_scaffolder_node.TemplateAction<{
@@ -71,4 +81,4 @@ declare function createSerializeYamlAction(): _backstage_plugin_scaffolder_node.
71
81
  options?: supportedDumpOptions | undefined;
72
82
  }, _backstage_types.JsonObject>;
73
83
 
74
- export { createAppendFileAction, createJSONataAction, createJsonJSONataTransformAction, createMergeAction, createMergeJSONAction, createParseFileAction, createSerializeJsonAction, createSerializeYamlAction, createSleepAction, createWriteFileAction, createYamlJSONataTransformAction, createZipAction };
84
+ export { createAppendFileAction, createJSONataAction, createJsonJSONataTransformAction, createMergeAction, createMergeJSONAction, createParseFileAction, createReplaceInFileAction, createSerializeJsonAction, createSerializeYamlAction, createSleepAction, createWriteFileAction, createYamlJSONataTransformAction, createZipAction };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roadiehq/scaffolder-backend-module-utils",
3
- "version": "1.8.10",
3
+ "version": "1.10.0",
4
4
  "main": "dist/index.cjs.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "Apache-2.0",
@@ -56,5 +56,5 @@
56
56
  "files": [
57
57
  "dist"
58
58
  ],
59
- "gitHead": "2aef7918fe2080dfed36d3a26e28ad27350dd4f9"
59
+ "gitHead": "873b757d3739c67bdeb316298e5e8351c90a95a9"
60
60
  }