@backstage/cli-module-actions 0.1.1 → 0.1.3-next.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/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @backstage/cli-module-actions
2
2
 
3
+ ## 0.1.3-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @backstage/cli-node@0.3.4-next.0
9
+
10
+ ## 0.1.2
11
+
12
+ ### Patch Changes
13
+
14
+ - 696c78c: The `--help` output for commands now shows a generated usage line that lists the available flags and any positional arguments the command accepts.
15
+ - 2e6ffe6: Updated the standalone CLI executable to use the new CLI module runner.
16
+ - Updated dependencies
17
+ - @backstage/cli-node@0.3.3
18
+
3
19
  ## 0.1.1
4
20
 
5
21
  ### Patch Changes
@@ -26,7 +26,7 @@ if (isLocal) {
26
26
  require('@backstage/cli-node/config/nodeTransform.cjs');
27
27
  }
28
28
 
29
- const { runCliModule } = require('@backstage/cli-node');
29
+ const { runCli } = require('@backstage/cli-node');
30
30
  const cliModule = require(isLocal ? '../src/index' : '..').default;
31
31
  const pkg = require('../package.json');
32
- runCliModule({ module: cliModule, name: pkg.name, version: pkg.version });
32
+ runCli({ modules: [cliModule], name: pkg.name, version: pkg.version });
@@ -31,7 +31,7 @@ function parseArgs(args) {
31
31
  function showGenericHelp(info, args) {
32
32
  cleye.cli(
33
33
  {
34
- help: info,
34
+ name: info.usage,
35
35
  parameters: ["<action-id>"],
36
36
  flags: {
37
37
  instance: {
@@ -104,7 +104,7 @@ var execute = async ({ args, info }) => {
104
104
  const flagArgs = args.filter((_, i) => i !== actionIdIdx);
105
105
  const { flags } = cleye.cli(
106
106
  {
107
- help: info,
107
+ name: info.usage,
108
108
  flags: {
109
109
  ...schemaFlags,
110
110
  instance: {
@@ -1 +1 @@
1
- {"version":3,"file":"execute.cjs.js","sources":["../../src/commands/execute.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport type { CliCommandContext } from '@backstage/cli-node';\nimport { ActionsClient } from '../lib/ActionsClient';\nimport { schemaToFlags } from '../lib/schemaToFlags';\nimport { resolveAuth } from '../lib/resolveAuth';\nimport { formatActionHelp, flagDefsToFlagInfo } from '../lib/format';\n\nfunction parseArgs(args: string[]) {\n const instanceIdx = args.indexOf('--instance');\n const instanceFlag = instanceIdx !== -1 ? args[instanceIdx + 1] : undefined;\n\n const skipIndices = new Set<number>();\n if (instanceIdx !== -1) {\n skipIndices.add(instanceIdx);\n skipIndices.add(instanceIdx + 1);\n }\n\n let actionId: string | undefined;\n let actionIdIdx = -1;\n for (let i = 0; i < args.length; i++) {\n if (!skipIndices.has(i) && !args[i].startsWith('-')) {\n actionId = args[i];\n actionIdIdx = i;\n break;\n }\n }\n\n const wantsHelp = args.includes('--help') || args.includes('-h');\n\n return { instanceFlag, actionId, actionIdIdx, wantsHelp };\n}\n\nfunction showGenericHelp(\n info: CliCommandContext['info'],\n args: string[],\n): void {\n cli(\n {\n help: info,\n parameters: ['<action-id>'],\n flags: {\n instance: {\n type: String,\n description: 'Name of the instance to use',\n },\n },\n },\n undefined,\n args,\n );\n}\n\nasync function showActionHelp(\n info: CliCommandContext['info'],\n actionId: string,\n instanceFlag: string | undefined,\n): Promise<boolean> {\n try {\n const { accessToken, baseUrl } = await resolveAuth(instanceFlag);\n const client = new ActionsClient(baseUrl, accessToken);\n const actions = await client.listForPlugin(actionId);\n const action = actions.find(a => a.id === actionId);\n\n if (!action) {\n return false;\n }\n\n const { flags: flagDefs } = schemaToFlags(action.schema.input as any);\n const flags = flagDefsToFlagInfo(flagDefs);\n flags.push({\n name: 'instance',\n type: 'string',\n description: 'Name of the instance to use',\n });\n\n process.stdout.write(\n await formatActionHelp({\n action,\n usage: `${info.usage ?? 'backstage actions execute'} ${actionId}`,\n flags,\n }),\n );\n return true;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n process.stderr.write(\n `Unable to retrieve action schema: ${msg}\\nShowing generic help.\\n`,\n );\n return false;\n }\n}\n\nexport default async ({ args, info }: CliCommandContext) => {\n const { instanceFlag, actionId, actionIdIdx, wantsHelp } = parseArgs(args);\n\n if (wantsHelp) {\n if (!actionId || !(await showActionHelp(info, actionId, instanceFlag))) {\n showGenericHelp(info, args);\n }\n return;\n }\n\n if (!actionId) {\n // Inject --help so cleye renders its help output before we throw.\n showGenericHelp(info, ['--help', ...args]);\n throw new Error('Action ID is required');\n }\n\n const { accessToken, baseUrl } = await resolveAuth(instanceFlag);\n const client = new ActionsClient(baseUrl, accessToken);\n const actions = await client.listForPlugin(actionId);\n const action = actions.find(a => a.id === actionId);\n\n if (!action) {\n throw new Error(\n `Action \"${actionId}\" not found. Run \"actions list\" to see available actions.`,\n );\n }\n\n const inputSchema = action.schema.input as any;\n const { flags: schemaFlags, complexKeys } = schemaToFlags(inputSchema);\n\n const flagArgs = args.filter((_, i) => i !== actionIdIdx);\n\n const { flags } = cli(\n {\n help: info,\n flags: {\n ...schemaFlags,\n instance: {\n type: String,\n description: 'Name of the instance to use',\n },\n },\n },\n undefined,\n flagArgs,\n );\n\n const allFlags = flags as Record<string, unknown>;\n const input: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(allFlags)) {\n if (key === 'instance' || value === undefined) {\n continue;\n }\n if (complexKeys.has(key) && typeof value === 'string') {\n try {\n input[key] = JSON.parse(value);\n } catch {\n throw new Error(`Invalid JSON for --${key}. Expected a JSON string.`);\n }\n } else {\n input[key] = value;\n }\n }\n\n const output = await client.execute(actionId, input);\n process.stdout.write(`${JSON.stringify(output, null, 2)}\\n`);\n};\n"],"names":["cli","resolveAuth","ActionsClient","schemaToFlags","flagDefsToFlagInfo","formatActionHelp"],"mappings":"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"}
1
+ {"version":3,"file":"execute.cjs.js","sources":["../../src/commands/execute.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport type { CliCommandContext } from '@backstage/cli-node';\nimport { ActionsClient } from '../lib/ActionsClient';\nimport { schemaToFlags } from '../lib/schemaToFlags';\nimport { resolveAuth } from '../lib/resolveAuth';\nimport { formatActionHelp, flagDefsToFlagInfo } from '../lib/format';\n\nfunction parseArgs(args: string[]) {\n const instanceIdx = args.indexOf('--instance');\n const instanceFlag = instanceIdx !== -1 ? args[instanceIdx + 1] : undefined;\n\n const skipIndices = new Set<number>();\n if (instanceIdx !== -1) {\n skipIndices.add(instanceIdx);\n skipIndices.add(instanceIdx + 1);\n }\n\n let actionId: string | undefined;\n let actionIdIdx = -1;\n for (let i = 0; i < args.length; i++) {\n if (!skipIndices.has(i) && !args[i].startsWith('-')) {\n actionId = args[i];\n actionIdIdx = i;\n break;\n }\n }\n\n const wantsHelp = args.includes('--help') || args.includes('-h');\n\n return { instanceFlag, actionId, actionIdIdx, wantsHelp };\n}\n\nfunction showGenericHelp(\n info: CliCommandContext['info'],\n args: string[],\n): void {\n cli(\n {\n name: info.usage,\n parameters: ['<action-id>'],\n flags: {\n instance: {\n type: String,\n description: 'Name of the instance to use',\n },\n },\n },\n undefined,\n args,\n );\n}\n\nasync function showActionHelp(\n info: CliCommandContext['info'],\n actionId: string,\n instanceFlag: string | undefined,\n): Promise<boolean> {\n try {\n const { accessToken, baseUrl } = await resolveAuth(instanceFlag);\n const client = new ActionsClient(baseUrl, accessToken);\n const actions = await client.listForPlugin(actionId);\n const action = actions.find(a => a.id === actionId);\n\n if (!action) {\n return false;\n }\n\n const { flags: flagDefs } = schemaToFlags(action.schema.input as any);\n const flags = flagDefsToFlagInfo(flagDefs);\n flags.push({\n name: 'instance',\n type: 'string',\n description: 'Name of the instance to use',\n });\n\n process.stdout.write(\n await formatActionHelp({\n action,\n usage: `${info.usage ?? 'backstage actions execute'} ${actionId}`,\n flags,\n }),\n );\n return true;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n process.stderr.write(\n `Unable to retrieve action schema: ${msg}\\nShowing generic help.\\n`,\n );\n return false;\n }\n}\n\nexport default async ({ args, info }: CliCommandContext) => {\n const { instanceFlag, actionId, actionIdIdx, wantsHelp } = parseArgs(args);\n\n if (wantsHelp) {\n if (!actionId || !(await showActionHelp(info, actionId, instanceFlag))) {\n showGenericHelp(info, args);\n }\n return;\n }\n\n if (!actionId) {\n // Inject --help so cleye renders its help output before we throw.\n showGenericHelp(info, ['--help', ...args]);\n throw new Error('Action ID is required');\n }\n\n const { accessToken, baseUrl } = await resolveAuth(instanceFlag);\n const client = new ActionsClient(baseUrl, accessToken);\n const actions = await client.listForPlugin(actionId);\n const action = actions.find(a => a.id === actionId);\n\n if (!action) {\n throw new Error(\n `Action \"${actionId}\" not found. Run \"actions list\" to see available actions.`,\n );\n }\n\n const inputSchema = action.schema.input as any;\n const { flags: schemaFlags, complexKeys } = schemaToFlags(inputSchema);\n\n const flagArgs = args.filter((_, i) => i !== actionIdIdx);\n\n const { flags } = cli(\n {\n name: info.usage,\n flags: {\n ...schemaFlags,\n instance: {\n type: String,\n description: 'Name of the instance to use',\n },\n },\n },\n undefined,\n flagArgs,\n );\n\n const allFlags = flags as Record<string, unknown>;\n const input: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(allFlags)) {\n if (key === 'instance' || value === undefined) {\n continue;\n }\n if (complexKeys.has(key) && typeof value === 'string') {\n try {\n input[key] = JSON.parse(value);\n } catch {\n throw new Error(`Invalid JSON for --${key}. Expected a JSON string.`);\n }\n } else {\n input[key] = value;\n }\n }\n\n const output = await client.execute(actionId, input);\n process.stdout.write(`${JSON.stringify(output, null, 2)}\\n`);\n};\n"],"names":["cli","resolveAuth","ActionsClient","schemaToFlags","flagDefsToFlagInfo","formatActionHelp"],"mappings":"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"}
@@ -12,7 +12,7 @@ var list = async ({ args, info }) => {
12
12
  flags: { instance: instanceFlag }
13
13
  } = cleye.cli(
14
14
  {
15
- help: info,
15
+ name: info.usage,
16
16
  flags: {
17
17
  instance: {
18
18
  type: String,
@@ -1 +1 @@
1
- {"version":3,"file":"list.cjs.js","sources":["../../src/commands/list.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport type { CliCommandContext } from '@backstage/cli-node';\nimport { ActionsClient } from '../lib/ActionsClient';\nimport { resolveAuth } from '../lib/resolveAuth';\nimport { formatActionList } from '../lib/format';\n\nexport default async ({ args, info }: CliCommandContext) => {\n const {\n flags: { instance: instanceFlag },\n } = cli(\n {\n help: info,\n flags: {\n instance: {\n type: String,\n description: 'Name of the instance to use',\n },\n },\n },\n undefined,\n args,\n );\n\n const { accessToken, pluginSources, baseUrl } = await resolveAuth(\n instanceFlag,\n );\n\n if (!pluginSources.length) {\n process.stderr.write(\n 'No plugin sources configured. Run \"actions sources add <plugin-id>\" to add one.\\n',\n );\n return;\n }\n\n const client = new ActionsClient(baseUrl, accessToken);\n const grouped = await client.list(pluginSources);\n\n const hasActions = grouped.some(g => g.actions.length > 0);\n if (!hasActions) {\n process.stderr.write('No actions found.\\n');\n return;\n }\n\n process.stdout.write(`${formatActionList(grouped)}\\n`);\n};\n"],"names":["cli","resolveAuth","ActionsClient","formatActionList"],"mappings":";;;;;;;;;AAsBA,WAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,EAAE,QAAA,EAAU,YAAA;AAAa,GAClC,GAAIA,SAAA;AAAA,IACF;AAAA,MACE,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,WAAA,EAAa;AAAA;AACf;AACF,KACF;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,EAAE,WAAA,EAAa,aAAA,EAAe,OAAA,KAAY,MAAMC,uBAAA;AAAA,IACpD;AAAA,GACF;AAEA,EAAA,IAAI,CAAC,cAAc,MAAA,EAAQ;AACzB,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACb;AAAA,KACF;AACA,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,IAAIC,2BAAA,CAAc,OAAA,EAAS,WAAW,CAAA;AACrD,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA;AAE/C,EAAA,MAAM,aAAa,OAAA,CAAQ,IAAA,CAAK,OAAK,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAC,CAAA;AACzD,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,qBAAqB,CAAA;AAC1C,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAGC,uBAAA,CAAiB,OAAO,CAAC;AAAA,CAAI,CAAA;AACvD,CAAA;;;;"}
1
+ {"version":3,"file":"list.cjs.js","sources":["../../src/commands/list.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport type { CliCommandContext } from '@backstage/cli-node';\nimport { ActionsClient } from '../lib/ActionsClient';\nimport { resolveAuth } from '../lib/resolveAuth';\nimport { formatActionList } from '../lib/format';\n\nexport default async ({ args, info }: CliCommandContext) => {\n const {\n flags: { instance: instanceFlag },\n } = cli(\n {\n name: info.usage,\n flags: {\n instance: {\n type: String,\n description: 'Name of the instance to use',\n },\n },\n },\n undefined,\n args,\n );\n\n const { accessToken, pluginSources, baseUrl } = await resolveAuth(\n instanceFlag,\n );\n\n if (!pluginSources.length) {\n process.stderr.write(\n 'No plugin sources configured. Run \"actions sources add <plugin-id>\" to add one.\\n',\n );\n return;\n }\n\n const client = new ActionsClient(baseUrl, accessToken);\n const grouped = await client.list(pluginSources);\n\n const hasActions = grouped.some(g => g.actions.length > 0);\n if (!hasActions) {\n process.stderr.write('No actions found.\\n');\n return;\n }\n\n process.stdout.write(`${formatActionList(grouped)}\\n`);\n};\n"],"names":["cli","resolveAuth","ActionsClient","formatActionList"],"mappings":";;;;;;;;;AAsBA,WAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,EAAE,QAAA,EAAU,YAAA;AAAa,GAClC,GAAIA,SAAA;AAAA,IACF;AAAA,MACE,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,KAAA,EAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,WAAA,EAAa;AAAA;AACf;AACF,KACF;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,EAAE,WAAA,EAAa,aAAA,EAAe,OAAA,KAAY,MAAMC,uBAAA;AAAA,IACpD;AAAA,GACF;AAEA,EAAA,IAAI,CAAC,cAAc,MAAA,EAAQ;AACzB,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACb;AAAA,KACF;AACA,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,IAAIC,2BAAA,CAAc,OAAA,EAAS,WAAW,CAAA;AACrD,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA;AAE/C,EAAA,MAAM,aAAa,OAAA,CAAQ,IAAA,CAAK,OAAK,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAC,CAAA;AACzD,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,qBAAqB,CAAA;AAC1C,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAGC,uBAAA,CAAiB,OAAO,CAAC;AAAA,CAAI,CAAA;AACvD,CAAA;;;;"}
@@ -9,7 +9,7 @@ var pluginSources = require('../lib/pluginSources.cjs.js');
9
9
  var sourcesAdd = async ({ args, info }) => {
10
10
  const parsed = cleye.cli(
11
11
  {
12
- help: info,
12
+ name: info.usage,
13
13
  parameters: ["<plugin-ids...>"]
14
14
  },
15
15
  void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"sourcesAdd.cjs.js","sources":["../../src/commands/sourcesAdd.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport { CliAuth, type CliCommandContext } from '@backstage/cli-node';\nimport { pluginSourcesSchema } from '../lib/pluginSources';\n\nexport default async ({ args, info }: CliCommandContext) => {\n const parsed = cli(\n {\n help: info,\n parameters: ['<plugin-ids...>'],\n },\n undefined,\n args,\n );\n\n const pluginIds: string[] = parsed._.pluginIds;\n\n const auth = await CliAuth.create();\n const existing = pluginSourcesSchema.parse(\n await auth.getMetadata('pluginSources'),\n );\n\n const added: string[] = [];\n const skipped: string[] = [];\n\n for (const pluginId of pluginIds) {\n if (existing.includes(pluginId)) {\n skipped.push(pluginId);\n } else {\n added.push(pluginId);\n }\n }\n\n if (added.length > 0) {\n await auth.setMetadata('pluginSources', [...existing, ...added]);\n process.stdout.write(\n `Added plugin source${added.length > 1 ? 's' : ''}: ${added.join(\n ', ',\n )}\\n`,\n );\n }\n\n for (const id of skipped) {\n process.stderr.write(`Plugin source \"${id}\" is already configured.\\n`);\n }\n};\n"],"names":["cli","CliAuth","pluginSourcesSchema"],"mappings":";;;;;;;;AAoBA,iBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAA,MAAM,MAAA,GAASA,SAAA;AAAA,IACb;AAAA,MACE,IAAA,EAAM,IAAA;AAAA,MACN,UAAA,EAAY,CAAC,iBAAiB;AAAA,KAChC;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,SAAA,GAAsB,OAAO,CAAA,CAAE,SAAA;AAErC,EAAA,MAAM,IAAA,GAAO,MAAMC,eAAA,CAAQ,MAAA,EAAO;AAClC,EAAA,MAAM,WAAWC,iCAAA,CAAoB,KAAA;AAAA,IACnC,MAAM,IAAA,CAAK,WAAA,CAAY,eAAe;AAAA,GACxC;AAEA,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,IAAI,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,EAAG;AAC/B,MAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,KAAA,CAAM,KAAK,QAAQ,CAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,IAAA,MAAM,IAAA,CAAK,YAAY,eAAA,EAAiB,CAAC,GAAG,QAAA,EAAU,GAAG,KAAK,CAAC,CAAA;AAC/D,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACb,sBAAsB,KAAA,CAAM,MAAA,GAAS,IAAI,GAAA,GAAM,EAAE,KAAK,KAAA,CAAM,IAAA;AAAA,QAC1D;AAAA,OACD;AAAA;AAAA,KACH;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,MAAM,OAAA,EAAS;AACxB,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,eAAA,EAAkB,EAAE,CAAA;AAAA,CAA4B,CAAA;AAAA,EACvE;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"sourcesAdd.cjs.js","sources":["../../src/commands/sourcesAdd.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport { CliAuth, type CliCommandContext } from '@backstage/cli-node';\nimport { pluginSourcesSchema } from '../lib/pluginSources';\n\nexport default async ({ args, info }: CliCommandContext) => {\n const parsed = cli(\n {\n name: info.usage,\n parameters: ['<plugin-ids...>'],\n },\n undefined,\n args,\n );\n\n const pluginIds: string[] = parsed._.pluginIds;\n\n const auth = await CliAuth.create();\n const existing = pluginSourcesSchema.parse(\n await auth.getMetadata('pluginSources'),\n );\n\n const added: string[] = [];\n const skipped: string[] = [];\n\n for (const pluginId of pluginIds) {\n if (existing.includes(pluginId)) {\n skipped.push(pluginId);\n } else {\n added.push(pluginId);\n }\n }\n\n if (added.length > 0) {\n await auth.setMetadata('pluginSources', [...existing, ...added]);\n process.stdout.write(\n `Added plugin source${added.length > 1 ? 's' : ''}: ${added.join(\n ', ',\n )}\\n`,\n );\n }\n\n for (const id of skipped) {\n process.stderr.write(`Plugin source \"${id}\" is already configured.\\n`);\n }\n};\n"],"names":["cli","CliAuth","pluginSourcesSchema"],"mappings":";;;;;;;;AAoBA,iBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAA,MAAM,MAAA,GAASA,SAAA;AAAA,IACb;AAAA,MACE,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,UAAA,EAAY,CAAC,iBAAiB;AAAA,KAChC;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,SAAA,GAAsB,OAAO,CAAA,CAAE,SAAA;AAErC,EAAA,MAAM,IAAA,GAAO,MAAMC,eAAA,CAAQ,MAAA,EAAO;AAClC,EAAA,MAAM,WAAWC,iCAAA,CAAoB,KAAA;AAAA,IACnC,MAAM,IAAA,CAAK,WAAA,CAAY,eAAe;AAAA,GACxC;AAEA,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,IAAI,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,EAAG;AAC/B,MAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,KAAA,CAAM,KAAK,QAAQ,CAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,IAAA,MAAM,IAAA,CAAK,YAAY,eAAA,EAAiB,CAAC,GAAG,QAAA,EAAU,GAAG,KAAK,CAAC,CAAA;AAC/D,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACb,sBAAsB,KAAA,CAAM,MAAA,GAAS,IAAI,GAAA,GAAM,EAAE,KAAK,KAAA,CAAM,IAAA;AAAA,QAC1D;AAAA,OACD;AAAA;AAAA,KACH;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,MAAM,OAAA,EAAS;AACxB,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,eAAA,EAAkB,EAAE,CAAA;AAAA,CAA4B,CAAA;AAAA,EACvE;AACF,CAAA;;;;"}
@@ -7,7 +7,7 @@ var cliNode = require('@backstage/cli-node');
7
7
  var pluginSources = require('../lib/pluginSources.cjs.js');
8
8
 
9
9
  var sourcesList = async ({ args, info }) => {
10
- cleye.cli({ help: info }, void 0, args);
10
+ cleye.cli({ name: info.usage }, void 0, args);
11
11
  const auth = await cliNode.CliAuth.create();
12
12
  const sources = pluginSources.pluginSourcesSchema.parse(
13
13
  await auth.getMetadata("pluginSources")
@@ -1 +1 @@
1
- {"version":3,"file":"sourcesList.cjs.js","sources":["../../src/commands/sourcesList.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport { CliAuth, type CliCommandContext } from '@backstage/cli-node';\nimport { pluginSourcesSchema } from '../lib/pluginSources';\n\nexport default async ({ args, info }: CliCommandContext) => {\n cli({ help: info }, undefined, args);\n\n const auth = await CliAuth.create();\n const sources = pluginSourcesSchema.parse(\n await auth.getMetadata('pluginSources'),\n );\n\n if (!sources.length) {\n process.stderr.write('No plugin sources configured.\\n');\n return;\n }\n\n for (const source of sources) {\n process.stdout.write(`${source}\\n`);\n }\n};\n"],"names":["cli","CliAuth","pluginSourcesSchema"],"mappings":";;;;;;;;AAoBA,kBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAAA,SAAA,CAAI,EAAE,IAAA,EAAM,IAAA,EAAK,EAAG,QAAW,IAAI,CAAA;AAEnC,EAAA,MAAM,IAAA,GAAO,MAAMC,eAAA,CAAQ,MAAA,EAAO;AAClC,EAAA,MAAM,UAAUC,iCAAA,CAAoB,KAAA;AAAA,IAClC,MAAM,IAAA,CAAK,WAAA,CAAY,eAAe;AAAA,GACxC;AAEA,EAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,IAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,iCAAiC,CAAA;AACtD,IAAA;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,MAAM;AAAA,CAAI,CAAA;AAAA,EACpC;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"sourcesList.cjs.js","sources":["../../src/commands/sourcesList.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport { CliAuth, type CliCommandContext } from '@backstage/cli-node';\nimport { pluginSourcesSchema } from '../lib/pluginSources';\n\nexport default async ({ args, info }: CliCommandContext) => {\n cli({ name: info.usage }, undefined, args);\n\n const auth = await CliAuth.create();\n const sources = pluginSourcesSchema.parse(\n await auth.getMetadata('pluginSources'),\n );\n\n if (!sources.length) {\n process.stderr.write('No plugin sources configured.\\n');\n return;\n }\n\n for (const source of sources) {\n process.stdout.write(`${source}\\n`);\n }\n};\n"],"names":["cli","CliAuth","pluginSourcesSchema"],"mappings":";;;;;;;;AAoBA,kBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAAA,SAAA,CAAI,EAAE,IAAA,EAAM,IAAA,CAAK,KAAA,EAAM,EAAG,QAAW,IAAI,CAAA;AAEzC,EAAA,MAAM,IAAA,GAAO,MAAMC,eAAA,CAAQ,MAAA,EAAO;AAClC,EAAA,MAAM,UAAUC,iCAAA,CAAoB,KAAA;AAAA,IAClC,MAAM,IAAA,CAAK,WAAA,CAAY,eAAe;AAAA,GACxC;AAEA,EAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,IAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,iCAAiC,CAAA;AACtD,IAAA;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,MAAM;AAAA,CAAI,CAAA;AAAA,EACpC;AACF,CAAA;;;;"}
@@ -9,7 +9,7 @@ var pluginSources = require('../lib/pluginSources.cjs.js');
9
9
  var sourcesRemove = async ({ args, info }) => {
10
10
  const parsed = cleye.cli(
11
11
  {
12
- help: info,
12
+ name: info.usage,
13
13
  parameters: ["<plugin-ids...>"]
14
14
  },
15
15
  void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"sourcesRemove.cjs.js","sources":["../../src/commands/sourcesRemove.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport { CliAuth, type CliCommandContext } from '@backstage/cli-node';\nimport { pluginSourcesSchema } from '../lib/pluginSources';\n\nexport default async ({ args, info }: CliCommandContext) => {\n const parsed = cli(\n {\n help: info,\n parameters: ['<plugin-ids...>'],\n },\n undefined,\n args,\n );\n\n const pluginIds: string[] = parsed._.pluginIds;\n\n const auth = await CliAuth.create();\n const existing = pluginSourcesSchema.parse(\n await auth.getMetadata('pluginSources'),\n );\n\n const removed: string[] = [];\n const skipped: string[] = [];\n\n for (const pluginId of pluginIds) {\n if (existing.includes(pluginId)) {\n removed.push(pluginId);\n } else {\n skipped.push(pluginId);\n }\n }\n\n if (removed.length > 0) {\n await auth.setMetadata(\n 'pluginSources',\n existing.filter(s => !removed.includes(s)),\n );\n process.stdout.write(\n `Removed plugin source${removed.length > 1 ? 's' : ''}: ${removed.join(\n ', ',\n )}\\n`,\n );\n }\n\n for (const id of skipped) {\n process.stderr.write(`Plugin source \"${id}\" is not configured.\\n`);\n }\n};\n"],"names":["cli","CliAuth","pluginSourcesSchema"],"mappings":";;;;;;;;AAoBA,oBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAA,MAAM,MAAA,GAASA,SAAA;AAAA,IACb;AAAA,MACE,IAAA,EAAM,IAAA;AAAA,MACN,UAAA,EAAY,CAAC,iBAAiB;AAAA,KAChC;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,SAAA,GAAsB,OAAO,CAAA,CAAE,SAAA;AAErC,EAAA,MAAM,IAAA,GAAO,MAAMC,eAAA,CAAQ,MAAA,EAAO;AAClC,EAAA,MAAM,WAAWC,iCAAA,CAAoB,KAAA;AAAA,IACnC,MAAM,IAAA,CAAK,WAAA,CAAY,eAAe;AAAA,GACxC;AAEA,EAAA,MAAM,UAAoB,EAAC;AAC3B,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,IAAI,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,EAAG;AAC/B,MAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IACvB;AAAA,EACF;AAEA,EAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,IAAA,MAAM,IAAA,CAAK,WAAA;AAAA,MACT,eAAA;AAAA,MACA,SAAS,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,OAAA,CAAQ,QAAA,CAAS,CAAC,CAAC;AAAA,KAC3C;AACA,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACb,wBAAwB,OAAA,CAAQ,MAAA,GAAS,IAAI,GAAA,GAAM,EAAE,KAAK,OAAA,CAAQ,IAAA;AAAA,QAChE;AAAA,OACD;AAAA;AAAA,KACH;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,MAAM,OAAA,EAAS;AACxB,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,eAAA,EAAkB,EAAE,CAAA;AAAA,CAAwB,CAAA;AAAA,EACnE;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"sourcesRemove.cjs.js","sources":["../../src/commands/sourcesRemove.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 { cli } from 'cleye';\nimport { CliAuth, type CliCommandContext } from '@backstage/cli-node';\nimport { pluginSourcesSchema } from '../lib/pluginSources';\n\nexport default async ({ args, info }: CliCommandContext) => {\n const parsed = cli(\n {\n name: info.usage,\n parameters: ['<plugin-ids...>'],\n },\n undefined,\n args,\n );\n\n const pluginIds: string[] = parsed._.pluginIds;\n\n const auth = await CliAuth.create();\n const existing = pluginSourcesSchema.parse(\n await auth.getMetadata('pluginSources'),\n );\n\n const removed: string[] = [];\n const skipped: string[] = [];\n\n for (const pluginId of pluginIds) {\n if (existing.includes(pluginId)) {\n removed.push(pluginId);\n } else {\n skipped.push(pluginId);\n }\n }\n\n if (removed.length > 0) {\n await auth.setMetadata(\n 'pluginSources',\n existing.filter(s => !removed.includes(s)),\n );\n process.stdout.write(\n `Removed plugin source${removed.length > 1 ? 's' : ''}: ${removed.join(\n ', ',\n )}\\n`,\n );\n }\n\n for (const id of skipped) {\n process.stderr.write(`Plugin source \"${id}\" is not configured.\\n`);\n }\n};\n"],"names":["cli","CliAuth","pluginSourcesSchema"],"mappings":";;;;;;;;AAoBA,oBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAA,MAAM,MAAA,GAASA,SAAA;AAAA,IACb;AAAA,MACE,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,UAAA,EAAY,CAAC,iBAAiB;AAAA,KAChC;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,SAAA,GAAsB,OAAO,CAAA,CAAE,SAAA;AAErC,EAAA,MAAM,IAAA,GAAO,MAAMC,eAAA,CAAQ,MAAA,EAAO;AAClC,EAAA,MAAM,WAAWC,iCAAA,CAAoB,KAAA;AAAA,IACnC,MAAM,IAAA,CAAK,WAAA,CAAY,eAAe;AAAA,GACxC;AAEA,EAAA,MAAM,UAAoB,EAAC;AAC3B,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,IAAI,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,EAAG;AAC/B,MAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IACvB;AAAA,EACF;AAEA,EAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,IAAA,MAAM,IAAA,CAAK,WAAA;AAAA,MACT,eAAA;AAAA,MACA,SAAS,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,OAAA,CAAQ,QAAA,CAAS,CAAC,CAAC;AAAA,KAC3C;AACA,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACb,wBAAwB,OAAA,CAAQ,MAAA,GAAS,IAAI,GAAA,GAAM,EAAE,KAAK,OAAA,CAAQ,IAAA;AAAA,QAChE;AAAA,OACD;AAAA;AAAA,KACH;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,MAAM,OAAA,EAAS;AACxB,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,eAAA,EAAkB,EAAE,CAAA;AAAA,CAAwB,CAAA;AAAA,EACnE;AACF,CAAA;;;;"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var name = "@backstage/cli-module-actions";
6
- var version = "0.1.1";
6
+ var version = "0.1.3-next.0";
7
7
  var description = "CLI module for executing distributed actions";
8
8
  var backstage = {
9
9
  role: "cli-module"
@@ -22,11 +22,11 @@ var repository = {
22
22
  var license = "Apache-2.0";
23
23
  var main = "src/index.ts";
24
24
  var types = "src/index.ts";
25
+ var bin = "bin/backstage-cli-module-actions";
25
26
  var files = [
26
27
  "dist",
27
28
  "bin"
28
29
  ];
29
- var bin = "bin/backstage-cli-module-actions";
30
30
  var scripts = {
31
31
  build: "backstage-cli package build",
32
32
  clean: "backstage-cli package clean",
@@ -39,7 +39,7 @@ var dependencies = {
39
39
  "@backstage/cli-node": "workspace:^",
40
40
  "@backstage/errors": "workspace:^",
41
41
  chalk: "^4.0.0",
42
- cleye: "^2.3.0",
42
+ cleye: "^2.6.0",
43
43
  marked: "^15.0.12",
44
44
  "marked-terminal": "^7.3.0",
45
45
  "strip-ansi": "^7.1.0",
@@ -60,8 +60,8 @@ var packageJson = {
60
60
  license: license,
61
61
  main: main,
62
62
  types: types,
63
- files: files,
64
63
  bin: bin,
64
+ files: files,
65
65
  scripts: scripts,
66
66
  dependencies: dependencies,
67
67
  devDependencies: devDependencies
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/cli-module-actions",
3
- "version": "0.1.1",
3
+ "version": "0.1.3-next.0",
4
4
  "description": "CLI module for executing distributed actions",
5
5
  "backstage": {
6
6
  "role": "cli-module"
@@ -19,11 +19,11 @@
19
19
  "license": "Apache-2.0",
20
20
  "main": "dist/index.cjs.js",
21
21
  "types": "dist/index.d.ts",
22
+ "bin": "bin/backstage-cli-module-actions",
22
23
  "files": [
23
24
  "dist",
24
25
  "bin"
25
26
  ],
26
- "bin": "bin/backstage-cli-module-actions",
27
27
  "scripts": {
28
28
  "build": "backstage-cli package build",
29
29
  "clean": "backstage-cli package clean",
@@ -33,18 +33,18 @@
33
33
  "test": "backstage-cli package test"
34
34
  },
35
35
  "dependencies": {
36
- "@backstage/cli-node": "^0.3.2",
37
- "@backstage/errors": "^1.3.1",
36
+ "@backstage/cli-node": "0.3.4-next.0",
37
+ "@backstage/errors": "1.3.1",
38
38
  "chalk": "^4.0.0",
39
- "cleye": "^2.3.0",
39
+ "cleye": "^2.6.0",
40
40
  "marked": "^15.0.12",
41
41
  "marked-terminal": "^7.3.0",
42
42
  "strip-ansi": "^7.1.0",
43
43
  "zod": "^3.25.76 || ^4.0.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@backstage/backend-test-utils": "^1.11.3",
47
- "@backstage/cli": "^0.36.2"
46
+ "@backstage/backend-test-utils": "1.11.5-next.0",
47
+ "@backstage/cli": "0.36.4-next.2"
48
48
  },
49
49
  "typesVersions": {
50
50
  "*": {