@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 +21 -0
- package/dist/actions/gitHelpers.cjs.js.map +1 -1
- package/dist/actions/util.cjs.js +4 -0
- package/dist/actions/util.cjs.js.map +1 -1
- package/dist/index.cjs.js +1 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +13 -7
- package/package.json +10 -10
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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"}
|
package/dist/actions/util.cjs.js
CHANGED
|
@@ -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":"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"}
|
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;
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -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:
|
|
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:
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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.
|
|
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": "
|
|
66
|
-
"@backstage/catalog-model": "
|
|
67
|
-
"@backstage/errors": "
|
|
68
|
-
"@backstage/integration": "
|
|
69
|
-
"@backstage/plugin-scaffolder-common": "
|
|
70
|
-
"@backstage/types": "
|
|
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": "
|
|
87
|
-
"@backstage/cli": "
|
|
88
|
-
"@backstage/config": "
|
|
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
|
}
|