@backstage/plugin-scaffolder-node 0.8.2 → 0.8.3-next.1

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,26 @@
1
1
  # @backstage/plugin-scaffolder-node
2
2
 
3
+ ## 0.8.3-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - e89d7b6: Use `LoggerService` instead of `Logger`. This is a non-breaking change, as the `LoggerService` is a subset of the `Logger` interface.
8
+ - Updated dependencies
9
+ - @backstage/backend-plugin-api@1.4.0-next.1
10
+ - @backstage/catalog-model@1.7.4
11
+ - @backstage/errors@1.2.7
12
+ - @backstage/integration@1.17.0
13
+ - @backstage/types@1.2.1
14
+ - @backstage/plugin-scaffolder-common@1.5.11
15
+
16
+ ## 0.8.3-next.0
17
+
18
+ ### Patch Changes
19
+
20
+ - 9c8ff0c: Update pull request creation filter to include .gitignore files in the created pull request
21
+ - Updated dependencies
22
+ - @backstage/backend-plugin-api@1.4.0-next.0
23
+
3
24
  ## 0.8.2
4
25
 
5
26
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"gitHelpers.cjs.js","sources":["../../src/actions/gitHelpers.ts"],"sourcesContent":["/*\n * Copyright 2023 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 { Logger } from 'winston';\nimport { Git } from '../scm';\n\n/**\n * @public\n */\nexport async function initRepoAndPush(input: {\n dir: string;\n remoteUrl: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger: Logger;\n defaultBranch?: string;\n commitMessage?: string;\n gitAuthorInfo?: { name?: string; email?: string };\n signingKey?: string;\n}): Promise<{ commitHash: string }> {\n const {\n dir,\n remoteUrl,\n auth,\n logger,\n defaultBranch = 'master',\n commitMessage = 'Initial commit',\n gitAuthorInfo,\n signingKey,\n } = input;\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.init({\n dir,\n defaultBranch,\n });\n\n await git.add({ dir, filepath: '.' });\n\n // use provided info if possible, otherwise use fallbacks\n const authorInfo = {\n name: gitAuthorInfo?.name ?? 'Scaffolder',\n email: gitAuthorInfo?.email ?? 'scaffolder@backstage.io',\n };\n\n const commitHash = await git.commit({\n dir,\n message: commitMessage,\n author: authorInfo,\n committer: authorInfo,\n signingKey,\n });\n\n await git.push({\n dir,\n remote: 'origin',\n url: remoteUrl,\n });\n\n return { commitHash };\n}\n\n/**\n * @public\n */\nexport async function commitAndPushRepo(input: {\n dir: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger: Logger;\n commitMessage: string;\n gitAuthorInfo?: { name?: string; email?: string };\n branch?: string;\n remoteRef?: string;\n signingKey?: string;\n}): Promise<{ commitHash: string }> {\n const {\n dir,\n auth,\n logger,\n commitMessage,\n gitAuthorInfo,\n branch = 'master',\n remoteRef,\n signingKey,\n } = input;\n\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.fetch({ dir });\n await git.checkout({ dir, ref: branch });\n await git.add({ dir, filepath: '.' });\n\n // use provided info if possible, otherwise use fallbacks\n const authorInfo = {\n name: gitAuthorInfo?.name ?? 'Scaffolder',\n email: gitAuthorInfo?.email ?? 'scaffolder@backstage.io',\n };\n\n const commitHash = await git.commit({\n dir,\n message: commitMessage,\n author: authorInfo,\n committer: authorInfo,\n signingKey,\n });\n\n await git.push({\n dir,\n remote: 'origin',\n remoteRef: remoteRef ?? `refs/heads/${branch}`,\n });\n\n return { commitHash };\n}\n\n/**\n * @public\n */\nexport async function cloneRepo(options: {\n url: string;\n dir: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger?: Logger | undefined;\n ref?: string | undefined;\n depth?: number | undefined;\n noCheckout?: boolean | undefined;\n}): Promise<void> {\n const { url, dir, auth, logger, ref, depth, noCheckout } = options;\n\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.clone({ url, dir, ref, depth, noCheckout });\n}\n\n/**\n * @public\n */\nexport async function createBranch(options: {\n dir: string;\n ref: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger?: Logger | undefined;\n}): Promise<void> {\n const { dir, ref, auth, logger } = options;\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.branch({ dir, ref });\n}\n\n/**\n * @public\n */\nexport async function addFiles(options: {\n dir: string;\n filepath: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger?: Logger | undefined;\n}): Promise<void> {\n const { dir, filepath, auth, logger } = options;\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.add({ dir, filepath });\n}\n\n/**\n * @public\n */\nexport async function commitAndPushBranch(options: {\n dir: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger?: Logger | undefined;\n commitMessage: string;\n gitAuthorInfo?: { name?: string; email?: string };\n branch?: string;\n remoteRef?: string;\n remote?: string;\n signingKey?: string;\n}): Promise<{ commitHash: string }> {\n const {\n dir,\n auth,\n logger,\n commitMessage,\n gitAuthorInfo,\n branch = 'master',\n remoteRef,\n remote = 'origin',\n signingKey,\n } = options;\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n // use provided info if possible, otherwise use fallbacks\n const authorInfo = {\n name: gitAuthorInfo?.name ?? 'Scaffolder',\n email: gitAuthorInfo?.email ?? 'scaffolder@backstage.io',\n };\n\n const commitHash = await git.commit({\n dir,\n message: commitMessage,\n author: authorInfo,\n committer: authorInfo,\n signingKey,\n });\n\n await git.push({\n dir,\n remote,\n remoteRef: remoteRef ?? `refs/heads/${branch}`,\n });\n\n return { commitHash };\n}\n"],"names":["git","Git"],"mappings":"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"}
1
+ {"version":3,"file":"gitHelpers.cjs.js","sources":["../../src/actions/gitHelpers.ts"],"sourcesContent":["/*\n * Copyright 2023 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 { Git } from '../scm';\nimport { LoggerService } from '@backstage/backend-plugin-api';\n\n/**\n * @public\n */\nexport async function initRepoAndPush(input: {\n dir: string;\n remoteUrl: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger: LoggerService;\n defaultBranch?: string;\n commitMessage?: string;\n gitAuthorInfo?: { name?: string; email?: string };\n signingKey?: string;\n}): Promise<{ commitHash: string }> {\n const {\n dir,\n remoteUrl,\n auth,\n logger,\n defaultBranch = 'master',\n commitMessage = 'Initial commit',\n gitAuthorInfo,\n signingKey,\n } = input;\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.init({\n dir,\n defaultBranch,\n });\n\n await git.add({ dir, filepath: '.' });\n\n // use provided info if possible, otherwise use fallbacks\n const authorInfo = {\n name: gitAuthorInfo?.name ?? 'Scaffolder',\n email: gitAuthorInfo?.email ?? 'scaffolder@backstage.io',\n };\n\n const commitHash = await git.commit({\n dir,\n message: commitMessage,\n author: authorInfo,\n committer: authorInfo,\n signingKey,\n });\n\n await git.push({\n dir,\n remote: 'origin',\n url: remoteUrl,\n });\n\n return { commitHash };\n}\n\n/**\n * @public\n */\nexport async function commitAndPushRepo(input: {\n dir: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger: LoggerService;\n commitMessage: string;\n gitAuthorInfo?: { name?: string; email?: string };\n branch?: string;\n remoteRef?: string;\n signingKey?: string;\n}): Promise<{ commitHash: string }> {\n const {\n dir,\n auth,\n logger,\n commitMessage,\n gitAuthorInfo,\n branch = 'master',\n remoteRef,\n signingKey,\n } = input;\n\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.fetch({ dir });\n await git.checkout({ dir, ref: branch });\n await git.add({ dir, filepath: '.' });\n\n // use provided info if possible, otherwise use fallbacks\n const authorInfo = {\n name: gitAuthorInfo?.name ?? 'Scaffolder',\n email: gitAuthorInfo?.email ?? 'scaffolder@backstage.io',\n };\n\n const commitHash = await git.commit({\n dir,\n message: commitMessage,\n author: authorInfo,\n committer: authorInfo,\n signingKey,\n });\n\n await git.push({\n dir,\n remote: 'origin',\n remoteRef: remoteRef ?? `refs/heads/${branch}`,\n });\n\n return { commitHash };\n}\n\n/**\n * @public\n */\nexport async function cloneRepo(options: {\n url: string;\n dir: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger?: LoggerService | undefined;\n ref?: string | undefined;\n depth?: number | undefined;\n noCheckout?: boolean | undefined;\n}): Promise<void> {\n const { url, dir, auth, logger, ref, depth, noCheckout } = options;\n\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.clone({ url, dir, ref, depth, noCheckout });\n}\n\n/**\n * @public\n */\nexport async function createBranch(options: {\n dir: string;\n ref: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger?: LoggerService | undefined;\n}): Promise<void> {\n const { dir, ref, auth, logger } = options;\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.branch({ dir, ref });\n}\n\n/**\n * @public\n */\nexport async function addFiles(options: {\n dir: string;\n filepath: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger?: LoggerService | undefined;\n}): Promise<void> {\n const { dir, filepath, auth, logger } = options;\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n await git.add({ dir, filepath });\n}\n\n/**\n * @public\n */\nexport async function commitAndPushBranch(options: {\n dir: string;\n // For use cases where token has to be used with Basic Auth\n // it has to be provided as password together with a username\n // which may be a fixed value defined by the provider.\n auth: { username: string; password: string } | { token: string };\n logger?: LoggerService | undefined;\n commitMessage: string;\n gitAuthorInfo?: { name?: string; email?: string };\n branch?: string;\n remoteRef?: string;\n remote?: string;\n signingKey?: string;\n}): Promise<{ commitHash: string }> {\n const {\n dir,\n auth,\n logger,\n commitMessage,\n gitAuthorInfo,\n branch = 'master',\n remoteRef,\n remote = 'origin',\n signingKey,\n } = options;\n const git = Git.fromAuth({\n ...auth,\n logger,\n });\n\n // use provided info if possible, otherwise use fallbacks\n const authorInfo = {\n name: gitAuthorInfo?.name ?? 'Scaffolder',\n email: gitAuthorInfo?.email ?? 'scaffolder@backstage.io',\n };\n\n const commitHash = await git.commit({\n dir,\n message: commitMessage,\n author: authorInfo,\n committer: authorInfo,\n signingKey,\n });\n\n await git.push({\n dir,\n remote,\n remoteRef: remoteRef ?? `refs/heads/${branch}`,\n });\n\n return { commitHash };\n}\n"],"names":["git","Git"],"mappings":"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"}
@@ -127,8 +127,12 @@ const parseSchemas = (action) => {
127
127
  outputSchema: action.schema.output
128
128
  };
129
129
  };
130
+ function isNotGitDirectoryOrContents(path) {
131
+ return !(path.endsWith(".git") || path.includes(".git/"));
132
+ }
130
133
 
131
134
  exports.getRepoSourceDirectory = getRepoSourceDirectory;
135
+ exports.isNotGitDirectoryOrContents = isNotGitDirectoryOrContents;
132
136
  exports.parseRepoUrl = parseRepoUrl;
133
137
  exports.parseSchemas = parseSchemas;
134
138
  //# sourceMappingURL=util.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.cjs.js","sources":["../../src/actions/util.ts"],"sourcesContent":["/*\n * Copyright 2021 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 { InputError } from '@backstage/errors';\nimport { isChildPath } from '@backstage/backend-plugin-api';\nimport { join as joinPath, normalize as normalizePath } from 'path';\nimport { ScmIntegrationRegistry } from '@backstage/integration';\nimport { TemplateActionOptions } from './createTemplateAction';\nimport zodToJsonSchema from 'zod-to-json-schema';\nimport { z } from 'zod';\nimport { Schema } from 'jsonschema';\nimport { trim } from 'lodash';\n\n/**\n * @public\n */\nexport const getRepoSourceDirectory = (\n workspacePath: string,\n sourcePath: string | undefined,\n) => {\n if (sourcePath) {\n const safeSuffix = normalizePath(sourcePath).replace(\n /^(\\.\\.(\\/|\\\\|$))+/,\n '',\n );\n const path = joinPath(workspacePath, safeSuffix);\n if (!isChildPath(workspacePath, path)) {\n throw new Error('Invalid source path');\n }\n return path;\n }\n return workspacePath;\n};\n\n/**\n * @public\n */\nexport const parseRepoUrl = (\n repoUrl: string,\n integrations: ScmIntegrationRegistry,\n): {\n repo: string;\n host: string;\n owner?: string;\n organization?: string;\n workspace?: string;\n project?: string;\n} => {\n let parsed;\n try {\n parsed = new URL(`https://${repoUrl}`);\n } catch (error) {\n throw new InputError(\n `Invalid repo URL passed to publisher, got ${repoUrl}, ${error}`,\n );\n }\n const host = parsed.host;\n const type = integrations.byHost(host)?.type;\n\n if (!type) {\n throw new InputError(\n `No matching integration configuration for host ${host}, please check your integrations config`,\n );\n }\n const { owner, organization, workspace, project, repo } = Object.fromEntries(\n ['owner', 'organization', 'workspace', 'project', 'repo'].map(param => [\n param,\n parsed.searchParams.has(param)\n ? trim(parsed.searchParams.get(param)!, '/')\n : undefined,\n ]),\n );\n switch (type) {\n case 'bitbucket': {\n if (host === 'www.bitbucket.org') {\n checkRequiredParams(parsed, 'workspace');\n }\n checkRequiredParams(parsed, 'project', 'repo');\n break;\n }\n case 'azure': {\n checkRequiredParams(parsed, 'project', 'repo');\n break;\n }\n case 'gitlab': {\n // project is the projectID, and if defined, owner and repo won't be needed.\n if (!project) {\n checkRequiredParams(parsed, 'owner', 'repo');\n }\n break;\n }\n case 'gitea': {\n checkRequiredParams(parsed, 'repo');\n break;\n }\n case 'gerrit': {\n checkRequiredParams(parsed, 'repo');\n break;\n }\n default: {\n checkRequiredParams(parsed, 'repo', 'owner');\n break;\n }\n }\n return { host, owner, repo: repo!, organization, workspace, project };\n};\n\nfunction checkRequiredParams(repoUrl: URL, ...params: string[]) {\n for (let i = 0; i < params.length; i++) {\n if (!repoUrl.searchParams.get(params[i])) {\n throw new InputError(\n `Invalid repo URL passed to publisher: ${repoUrl.toString()}, missing ${\n params[i]\n }`,\n );\n }\n }\n}\n\nconst isZodSchema = (schema: unknown): schema is z.ZodType => {\n return typeof schema === 'object' && !!schema && 'safeParseAsync' in schema;\n};\n\nconst isNativeZodSchema = (\n schema: unknown,\n): schema is { [key in string]: (zImpl: typeof z) => z.ZodType } => {\n return (\n typeof schema === 'object' &&\n !!schema &&\n Object.values(schema).every(v => typeof v === 'function')\n );\n};\n\nexport const parseSchemas = (\n action: TemplateActionOptions,\n): { inputSchema?: Schema; outputSchema?: Schema } => {\n if (!action.schema) {\n return { inputSchema: undefined, outputSchema: undefined };\n }\n\n if (isZodSchema(action.schema.input)) {\n return {\n inputSchema: zodToJsonSchema(action.schema.input) as Schema,\n outputSchema: isZodSchema(action.schema.output)\n ? (zodToJsonSchema(action.schema.output) as Schema)\n : undefined,\n };\n }\n\n if (isNativeZodSchema(action.schema.input)) {\n const input = z.object(\n Object.fromEntries(\n Object.entries(action.schema.input).map(([k, v]) => [k, v(z)]),\n ),\n );\n\n return {\n inputSchema: zodToJsonSchema(input) as Schema,\n outputSchema: isNativeZodSchema(action.schema.output)\n ? (zodToJsonSchema(\n z.object(\n Object.fromEntries(\n Object.entries(action.schema.output).map(([k, v]) => [k, v(z)]),\n ),\n ),\n ) as Schema)\n : undefined,\n };\n }\n\n return {\n inputSchema: action.schema.input,\n outputSchema: action.schema.output,\n };\n};\n"],"names":["normalizePath","path","joinPath","isChildPath","InputError","trim","zodToJsonSchema","z"],"mappings":"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"}
1
+ {"version":3,"file":"util.cjs.js","sources":["../../src/actions/util.ts"],"sourcesContent":["/*\n * Copyright 2021 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 { InputError } from '@backstage/errors';\nimport { isChildPath } from '@backstage/backend-plugin-api';\nimport { join as joinPath, normalize as normalizePath } from 'path';\nimport { ScmIntegrationRegistry } from '@backstage/integration';\nimport { TemplateActionOptions } from './createTemplateAction';\nimport zodToJsonSchema from 'zod-to-json-schema';\nimport { z } from 'zod';\nimport { Schema } from 'jsonschema';\nimport { trim } from 'lodash';\n\n/**\n * @public\n */\nexport const getRepoSourceDirectory = (\n workspacePath: string,\n sourcePath: string | undefined,\n) => {\n if (sourcePath) {\n const safeSuffix = normalizePath(sourcePath).replace(\n /^(\\.\\.(\\/|\\\\|$))+/,\n '',\n );\n const path = joinPath(workspacePath, safeSuffix);\n if (!isChildPath(workspacePath, path)) {\n throw new Error('Invalid source path');\n }\n return path;\n }\n return workspacePath;\n};\n\n/**\n * @public\n */\nexport const parseRepoUrl = (\n repoUrl: string,\n integrations: ScmIntegrationRegistry,\n): {\n repo: string;\n host: string;\n owner?: string;\n organization?: string;\n workspace?: string;\n project?: string;\n} => {\n let parsed;\n try {\n parsed = new URL(`https://${repoUrl}`);\n } catch (error) {\n throw new InputError(\n `Invalid repo URL passed to publisher, got ${repoUrl}, ${error}`,\n );\n }\n const host = parsed.host;\n const type = integrations.byHost(host)?.type;\n\n if (!type) {\n throw new InputError(\n `No matching integration configuration for host ${host}, please check your integrations config`,\n );\n }\n const { owner, organization, workspace, project, repo } = Object.fromEntries(\n ['owner', 'organization', 'workspace', 'project', 'repo'].map(param => [\n param,\n parsed.searchParams.has(param)\n ? trim(parsed.searchParams.get(param)!, '/')\n : undefined,\n ]),\n );\n switch (type) {\n case 'bitbucket': {\n if (host === 'www.bitbucket.org') {\n checkRequiredParams(parsed, 'workspace');\n }\n checkRequiredParams(parsed, 'project', 'repo');\n break;\n }\n case 'azure': {\n checkRequiredParams(parsed, 'project', 'repo');\n break;\n }\n case 'gitlab': {\n // project is the projectID, and if defined, owner and repo won't be needed.\n if (!project) {\n checkRequiredParams(parsed, 'owner', 'repo');\n }\n break;\n }\n case 'gitea': {\n checkRequiredParams(parsed, 'repo');\n break;\n }\n case 'gerrit': {\n checkRequiredParams(parsed, 'repo');\n break;\n }\n default: {\n checkRequiredParams(parsed, 'repo', 'owner');\n break;\n }\n }\n return { host, owner, repo: repo!, organization, workspace, project };\n};\n\nfunction checkRequiredParams(repoUrl: URL, ...params: string[]) {\n for (let i = 0; i < params.length; i++) {\n if (!repoUrl.searchParams.get(params[i])) {\n throw new InputError(\n `Invalid repo URL passed to publisher: ${repoUrl.toString()}, missing ${\n params[i]\n }`,\n );\n }\n }\n}\n\nconst isZodSchema = (schema: unknown): schema is z.ZodType => {\n return typeof schema === 'object' && !!schema && 'safeParseAsync' in schema;\n};\n\nconst isNativeZodSchema = (\n schema: unknown,\n): schema is { [key in string]: (zImpl: typeof z) => z.ZodType } => {\n return (\n typeof schema === 'object' &&\n !!schema &&\n Object.values(schema).every(v => typeof v === 'function')\n );\n};\n\nexport const parseSchemas = (\n action: TemplateActionOptions,\n): { inputSchema?: Schema; outputSchema?: Schema } => {\n if (!action.schema) {\n return { inputSchema: undefined, outputSchema: undefined };\n }\n\n if (isZodSchema(action.schema.input)) {\n return {\n inputSchema: zodToJsonSchema(action.schema.input) as Schema,\n outputSchema: isZodSchema(action.schema.output)\n ? (zodToJsonSchema(action.schema.output) as Schema)\n : undefined,\n };\n }\n\n if (isNativeZodSchema(action.schema.input)) {\n const input = z.object(\n Object.fromEntries(\n Object.entries(action.schema.input).map(([k, v]) => [k, v(z)]),\n ),\n );\n\n return {\n inputSchema: zodToJsonSchema(input) as Schema,\n outputSchema: isNativeZodSchema(action.schema.output)\n ? (zodToJsonSchema(\n z.object(\n Object.fromEntries(\n Object.entries(action.schema.output).map(([k, v]) => [k, v(z)]),\n ),\n ),\n ) as Schema)\n : undefined,\n };\n }\n\n return {\n inputSchema: action.schema.input,\n outputSchema: action.schema.output,\n };\n};\n\n/**\n * Filter function to exclude the .git directory and its contents\n * while keeping other files like .gitignore\n * @public\n */\nexport function isNotGitDirectoryOrContents(path: string): boolean {\n return !(path.endsWith('.git') || path.includes('.git/'));\n}\n"],"names":["normalizePath","path","joinPath","isChildPath","InputError","trim","zodToJsonSchema","z"],"mappings":";;;;;;;;;;;;;AA6Ba,MAAA,sBAAA,GAAyB,CACpC,aAAA,EACA,UACG,KAAA;AACH,EAAA,IAAI,UAAY,EAAA;AACd,IAAM,MAAA,UAAA,GAAaA,cAAc,CAAA,UAAU,CAAE,CAAA,OAAA;AAAA,MAC3C,mBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAM,MAAAC,MAAA,GAAOC,SAAS,CAAA,aAAA,EAAe,UAAU,CAAA;AAC/C,IAAA,IAAI,CAACC,4BAAA,CAAY,aAAe,EAAAF,MAAI,CAAG,EAAA;AACrC,MAAM,MAAA,IAAI,MAAM,qBAAqB,CAAA;AAAA;AAEvC,IAAO,OAAAA,MAAA;AAAA;AAET,EAAO,OAAA,aAAA;AACT;AAKa,MAAA,YAAA,GAAe,CAC1B,OAAA,EACA,YAQG,KAAA;AACH,EAAI,IAAA,MAAA;AACJ,EAAI,IAAA;AACF,IAAA,MAAA,GAAS,IAAI,GAAA,CAAI,CAAW,QAAA,EAAA,OAAO,CAAE,CAAA,CAAA;AAAA,WAC9B,KAAO,EAAA;AACd,IAAA,MAAM,IAAIG,iBAAA;AAAA,MACR,CAAA,0CAAA,EAA6C,OAAO,CAAA,EAAA,EAAK,KAAK,CAAA;AAAA,KAChE;AAAA;AAEF,EAAA,MAAM,OAAO,MAAO,CAAA,IAAA;AACpB,EAAA,MAAM,IAAO,GAAA,YAAA,CAAa,MAAO,CAAA,IAAI,CAAG,EAAA,IAAA;AAExC,EAAA,IAAI,CAAC,IAAM,EAAA;AACT,IAAA,MAAM,IAAIA,iBAAA;AAAA,MACR,kDAAkD,IAAI,CAAA,uCAAA;AAAA,KACxD;AAAA;AAEF,EAAA,MAAM,EAAE,KAAO,EAAA,YAAA,EAAc,WAAW,OAAS,EAAA,IAAA,KAAS,MAAO,CAAA,WAAA;AAAA,IAC/D,CAAC,SAAS,cAAgB,EAAA,WAAA,EAAa,WAAW,MAAM,CAAA,CAAE,IAAI,CAAS,KAAA,KAAA;AAAA,MACrE,KAAA;AAAA,MACA,MAAO,CAAA,YAAA,CAAa,GAAI,CAAA,KAAK,CACzB,GAAAC,WAAA,CAAK,MAAO,CAAA,YAAA,CAAa,GAAI,CAAA,KAAK,CAAI,EAAA,GAAG,CACzC,GAAA,KAAA;AAAA,KACL;AAAA,GACH;AACA,EAAA,QAAQ,IAAM;AAAA,IACZ,KAAK,WAAa,EAAA;AAChB,MAAA,IAAI,SAAS,mBAAqB,EAAA;AAChC,QAAA,mBAAA,CAAoB,QAAQ,WAAW,CAAA;AAAA;AAEzC,MAAoB,mBAAA,CAAA,MAAA,EAAQ,WAAW,MAAM,CAAA;AAC7C,MAAA;AAAA;AACF,IACA,KAAK,OAAS,EAAA;AACZ,MAAoB,mBAAA,CAAA,MAAA,EAAQ,WAAW,MAAM,CAAA;AAC7C,MAAA;AAAA;AACF,IACA,KAAK,QAAU,EAAA;AAEb,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAoB,mBAAA,CAAA,MAAA,EAAQ,SAAS,MAAM,CAAA;AAAA;AAE7C,MAAA;AAAA;AACF,IACA,KAAK,OAAS,EAAA;AACZ,MAAA,mBAAA,CAAoB,QAAQ,MAAM,CAAA;AAClC,MAAA;AAAA;AACF,IACA,KAAK,QAAU,EAAA;AACb,MAAA,mBAAA,CAAoB,QAAQ,MAAM,CAAA;AAClC,MAAA;AAAA;AACF,IACA,SAAS;AACP,MAAoB,mBAAA,CAAA,MAAA,EAAQ,QAAQ,OAAO,CAAA;AAC3C,MAAA;AAAA;AACF;AAEF,EAAA,OAAO,EAAE,IAAM,EAAA,KAAA,EAAO,IAAa,EAAA,YAAA,EAAc,WAAW,OAAQ,EAAA;AACtE;AAEA,SAAS,mBAAA,CAAoB,YAAiB,MAAkB,EAAA;AAC9D,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,CAAO,QAAQ,CAAK,EAAA,EAAA;AACtC,IAAA,IAAI,CAAC,OAAQ,CAAA,YAAA,CAAa,IAAI,MAAO,CAAA,CAAC,CAAC,CAAG,EAAA;AACxC,MAAA,MAAM,IAAID,iBAAA;AAAA,QACR,yCAAyC,OAAQ,CAAA,QAAA,EAAU,CACzD,UAAA,EAAA,MAAA,CAAO,CAAC,CACV,CAAA;AAAA,OACF;AAAA;AACF;AAEJ;AAEA,MAAM,WAAA,GAAc,CAAC,MAAyC,KAAA;AAC5D,EAAA,OAAO,OAAO,MAAW,KAAA,QAAA,IAAY,CAAC,CAAC,UAAU,gBAAoB,IAAA,MAAA;AACvE,CAAA;AAEA,MAAM,iBAAA,GAAoB,CACxB,MACkE,KAAA;AAClE,EAAA,OACE,OAAO,MAAA,KAAW,QAClB,IAAA,CAAC,CAAC,MACF,IAAA,MAAA,CAAO,MAAO,CAAA,MAAM,CAAE,CAAA,KAAA,CAAM,CAAK,CAAA,KAAA,OAAO,MAAM,UAAU,CAAA;AAE5D,CAAA;AAEa,MAAA,YAAA,GAAe,CAC1B,MACoD,KAAA;AACpD,EAAI,IAAA,CAAC,OAAO,MAAQ,EAAA;AAClB,IAAA,OAAO,EAAE,WAAA,EAAa,KAAW,CAAA,EAAA,YAAA,EAAc,KAAU,CAAA,EAAA;AAAA;AAG3D,EAAA,IAAI,WAAY,CAAA,MAAA,CAAO,MAAO,CAAA,KAAK,CAAG,EAAA;AACpC,IAAO,OAAA;AAAA,MACL,WAAa,EAAAE,gCAAA,CAAgB,MAAO,CAAA,MAAA,CAAO,KAAK,CAAA;AAAA,MAChD,YAAA,EAAc,WAAY,CAAA,MAAA,CAAO,MAAO,CAAA,MAAM,IACzCA,gCAAgB,CAAA,MAAA,CAAO,MAAO,CAAA,MAAM,CACrC,GAAA,KAAA;AAAA,KACN;AAAA;AAGF,EAAA,IAAI,iBAAkB,CAAA,MAAA,CAAO,MAAO,CAAA,KAAK,CAAG,EAAA;AAC1C,IAAA,MAAM,QAAQC,KAAE,CAAA,MAAA;AAAA,MACd,MAAO,CAAA,WAAA;AAAA,QACL,OAAO,OAAQ,CAAA,MAAA,CAAO,MAAO,CAAA,KAAK,EAAE,GAAI,CAAA,CAAC,CAAC,CAAA,EAAG,CAAC,CAAM,KAAA,CAAC,GAAG,CAAE,CAAAA,KAAC,CAAC,CAAC;AAAA;AAC/D,KACF;AAEA,IAAO,OAAA;AAAA,MACL,WAAA,EAAaD,iCAAgB,KAAK,CAAA;AAAA,MAClC,YAAc,EAAA,iBAAA,CAAkB,MAAO,CAAA,MAAA,CAAO,MAAM,CAC/C,GAAAA,gCAAA;AAAA,QACCC,KAAE,CAAA,MAAA;AAAA,UACA,MAAO,CAAA,WAAA;AAAA,YACL,OAAO,OAAQ,CAAA,MAAA,CAAO,MAAO,CAAA,MAAM,EAAE,GAAI,CAAA,CAAC,CAAC,CAAA,EAAG,CAAC,CAAM,KAAA,CAAC,GAAG,CAAE,CAAAA,KAAC,CAAC,CAAC;AAAA;AAChE;AACF,OAEF,GAAA,KAAA;AAAA,KACN;AAAA;AAGF,EAAO,OAAA;AAAA,IACL,WAAA,EAAa,OAAO,MAAO,CAAA,KAAA;AAAA,IAC3B,YAAA,EAAc,OAAO,MAAO,CAAA;AAAA,GAC9B;AACF;AAOO,SAAS,4BAA4B,IAAuB,EAAA;AACjE,EAAA,OAAO,EAAE,IAAK,CAAA,QAAA,CAAS,MAAM,CAAK,IAAA,IAAA,CAAK,SAAS,OAAO,CAAA,CAAA;AACzD;;;;;;;"}
package/dist/index.cjs.js CHANGED
@@ -21,6 +21,7 @@ exports.commitAndPushRepo = gitHelpers.commitAndPushRepo;
21
21
  exports.createBranch = gitHelpers.createBranch;
22
22
  exports.initRepoAndPush = gitHelpers.initRepoAndPush;
23
23
  exports.getRepoSourceDirectory = util.getRepoSourceDirectory;
24
+ exports.isNotGitDirectoryOrContents = util.isNotGitDirectoryOrContents;
24
25
  exports.parseRepoUrl = util.parseRepoUrl;
25
26
  exports.serializeDirectoryContents = serializeDirectoryContents.serializeDirectoryContents;
26
27
  exports.deserializeDirectoryContents = deserializeDirectoryContents.deserializeDirectoryContents;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -427,7 +427,7 @@ declare function initRepoAndPush(input: {
427
427
  } | {
428
428
  token: string;
429
429
  };
430
- logger: Logger;
430
+ logger: LoggerService;
431
431
  defaultBranch?: string;
432
432
  commitMessage?: string;
433
433
  gitAuthorInfo?: {
@@ -449,7 +449,7 @@ declare function commitAndPushRepo(input: {
449
449
  } | {
450
450
  token: string;
451
451
  };
452
- logger: Logger;
452
+ logger: LoggerService;
453
453
  commitMessage: string;
454
454
  gitAuthorInfo?: {
455
455
  name?: string;
@@ -473,7 +473,7 @@ declare function cloneRepo(options: {
473
473
  } | {
474
474
  token: string;
475
475
  };
476
- logger?: Logger | undefined;
476
+ logger?: LoggerService | undefined;
477
477
  ref?: string | undefined;
478
478
  depth?: number | undefined;
479
479
  noCheckout?: boolean | undefined;
@@ -490,7 +490,7 @@ declare function createBranch(options: {
490
490
  } | {
491
491
  token: string;
492
492
  };
493
- logger?: Logger | undefined;
493
+ logger?: LoggerService | undefined;
494
494
  }): Promise<void>;
495
495
  /**
496
496
  * @public
@@ -504,7 +504,7 @@ declare function addFiles(options: {
504
504
  } | {
505
505
  token: string;
506
506
  };
507
- logger?: Logger | undefined;
507
+ logger?: LoggerService | undefined;
508
508
  }): Promise<void>;
509
509
  /**
510
510
  * @public
@@ -517,7 +517,7 @@ declare function commitAndPushBranch(options: {
517
517
  } | {
518
518
  token: string;
519
519
  };
520
- logger?: Logger | undefined;
520
+ logger?: LoggerService | undefined;
521
521
  commitMessage: string;
522
522
  gitAuthorInfo?: {
523
523
  name?: string;
@@ -546,6 +546,12 @@ declare const parseRepoUrl: (repoUrl: string, integrations: ScmIntegrationRegist
546
546
  workspace?: string;
547
547
  project?: string;
548
548
  };
549
+ /**
550
+ * Filter function to exclude the .git directory and its contents
551
+ * while keeping other files like .gitignore
552
+ * @public
553
+ */
554
+ declare function isNotGitDirectoryOrContents(path: string): boolean;
549
555
 
550
556
  /**
551
557
  * @public
@@ -575,4 +581,4 @@ declare function serializeDirectoryContents(sourcePath: string, options?: {
575
581
  */
576
582
  declare function deserializeDirectoryContents(targetPath: string, files: SerializedFile[]): Promise<void>;
577
583
 
578
- export { type ActionContext, type ExecuteShellCommandOptions, type SerializedFile, type SerializedTask, type SerializedTaskEvent, type TaskBroker, type TaskBrokerDispatchOptions, type TaskBrokerDispatchResult, type TaskCompletionState, type TaskContext, type TaskEventType, type TaskSecrets, type TaskStatus, type TemplateAction, type TemplateActionOptions, type TemplateExample, addFiles, cloneRepo, commitAndPushBranch, commitAndPushRepo, createBranch, createTemplateAction, deserializeDirectoryContents, executeShellCommand, fetchContents, fetchFile, getRepoSourceDirectory, initRepoAndPush, parseRepoUrl, serializeDirectoryContents };
584
+ export { type ActionContext, type ExecuteShellCommandOptions, type SerializedFile, type SerializedTask, type SerializedTaskEvent, type TaskBroker, type TaskBrokerDispatchOptions, type TaskBrokerDispatchResult, type TaskCompletionState, type TaskContext, type TaskEventType, type TaskSecrets, type TaskStatus, type TemplateAction, type TemplateActionOptions, type TemplateExample, addFiles, cloneRepo, commitAndPushBranch, commitAndPushRepo, createBranch, createTemplateAction, deserializeDirectoryContents, executeShellCommand, fetchContents, fetchFile, getRepoSourceDirectory, initRepoAndPush, isNotGitDirectoryOrContents, parseRepoUrl, serializeDirectoryContents };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder-node",
3
- "version": "0.8.2",
3
+ "version": "0.8.3-next.1",
4
4
  "description": "The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend",
5
5
  "backstage": {
6
6
  "role": "node-library",
@@ -62,12 +62,12 @@
62
62
  "test": "backstage-cli package test"
63
63
  },
64
64
  "dependencies": {
65
- "@backstage/backend-plugin-api": "^1.3.1",
66
- "@backstage/catalog-model": "^1.7.4",
67
- "@backstage/errors": "^1.2.7",
68
- "@backstage/integration": "^1.17.0",
69
- "@backstage/plugin-scaffolder-common": "^1.5.11",
70
- "@backstage/types": "^1.2.1",
65
+ "@backstage/backend-plugin-api": "1.4.0-next.1",
66
+ "@backstage/catalog-model": "1.7.4",
67
+ "@backstage/errors": "1.2.7",
68
+ "@backstage/integration": "1.17.0",
69
+ "@backstage/plugin-scaffolder-common": "1.5.11",
70
+ "@backstage/types": "1.2.1",
71
71
  "@isomorphic-git/pgp-plugin": "^0.0.7",
72
72
  "concat-stream": "^2.0.0",
73
73
  "fs-extra": "^11.2.0",
@@ -83,9 +83,9 @@
83
83
  "zod-to-json-schema": "^3.20.4"
84
84
  },
85
85
  "devDependencies": {
86
- "@backstage/backend-test-utils": "^1.5.0",
87
- "@backstage/cli": "^0.32.1",
88
- "@backstage/config": "^1.3.2",
86
+ "@backstage/backend-test-utils": "1.6.0-next.1",
87
+ "@backstage/cli": "0.32.2-next.0",
88
+ "@backstage/config": "1.3.2",
89
89
  "@types/lodash": "^4.14.151"
90
90
  }
91
91
  }