diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPullRequest.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPullRequest.ts index 5a30df24f9..b59aaa4e41 100644 --- a/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPullRequest.ts +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/src/actions/bitbucketCloudPullRequest.ts @@ -23,7 +23,7 @@ import { addFiles, cloneRepo, parseRepoUrl, - filterGitFiles, + isNotGitDirectoryOrContents, } from '@backstage/plugin-scaffolder-node'; import { Config } from '@backstage/config'; import fs from 'fs-extra'; @@ -414,7 +414,7 @@ export function createPublishBitbucketCloudPullRequestAction(options: { // copy files fs.cpSync(sourceDir, tempDir, { recursive: true, - filter: filterGitFiles, + filter: isNotGitDirectoryOrContents, }); await addFiles({ diff --git a/plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServerPullRequest.ts b/plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServerPullRequest.ts index 9176471913..f91d30cd75 100644 --- a/plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServerPullRequest.ts +++ b/plugins/scaffolder-backend-module-bitbucket-server/src/actions/bitbucketServerPullRequest.ts @@ -26,7 +26,7 @@ import { addFiles, cloneRepo, parseRepoUrl, - filterGitFiles, + isNotGitDirectoryOrContents, } from '@backstage/plugin-scaffolder-node'; import { Config } from '@backstage/config'; import fs from 'fs-extra'; @@ -454,7 +454,7 @@ export function createPublishBitbucketServerPullRequestAction(options: { // copy files fs.cpSync(sourceDir, tempDir, { recursive: true, - filter: filterGitFiles, + filter: isNotGitDirectoryOrContents, }); await addFiles({ diff --git a/plugins/scaffolder-node/report.api.md b/plugins/scaffolder-node/report.api.md index c7cf681d33..9a1c856573 100644 --- a/plugins/scaffolder-node/report.api.md +++ b/plugins/scaffolder-node/report.api.md @@ -286,9 +286,6 @@ export function fetchFile(options: { token?: string; }): Promise; -// @public -export function filterGitFiles(path: string): boolean; - // @public (undocumented) export const getRepoSourceDirectory: ( workspacePath: string, @@ -319,6 +316,9 @@ export function initRepoAndPush(input: { commitHash: string; }>; +// @public +export function isNotGitDirectoryOrContents(path: string): boolean; + // @public (undocumented) export const parseRepoUrl: ( repoUrl: string, diff --git a/plugins/scaffolder-node/src/actions/index.ts b/plugins/scaffolder-node/src/actions/index.ts index 041d57328a..686d89d844 100644 --- a/plugins/scaffolder-node/src/actions/index.ts +++ b/plugins/scaffolder-node/src/actions/index.ts @@ -33,4 +33,8 @@ export { createBranch, cloneRepo, } from './gitHelpers'; -export { parseRepoUrl, getRepoSourceDirectory, filterGitFiles } from './util'; +export { + parseRepoUrl, + getRepoSourceDirectory, + isNotGitDirectoryOrContents, +} from './util'; diff --git a/plugins/scaffolder-node/src/actions/util.test.ts b/plugins/scaffolder-node/src/actions/util.test.ts index 2e0a464304..792e306d00 100644 --- a/plugins/scaffolder-node/src/actions/util.test.ts +++ b/plugins/scaffolder-node/src/actions/util.test.ts @@ -245,25 +245,29 @@ describe('scaffolder action utils', () => { }); }); - describe('filterGitFiles', () => { + describe('isNotGitDirectoryOrContents', () => { it('should filter .git directory and its contents but keep other files', () => { // Import the function to test - const { filterGitFiles } = require('./util'); + const { isNotGitDirectoryOrContents } = require('./util'); // Should filter out .git directory - expect(filterGitFiles('.git')).toBe(false); + expect(isNotGitDirectoryOrContents('.git')).toBe(false); // Should filter out .git directory in subdirectories - expect(filterGitFiles('subdir/.git')).toBe(false); + expect(isNotGitDirectoryOrContents('subdir/.git')).toBe(false); // Should filter out files inside .git directory - expect(filterGitFiles('.git/config')).toBe(false); - expect(filterGitFiles('subdir/.git/config')).toBe(false); + expect(isNotGitDirectoryOrContents('.git/config')).toBe(false); + expect(isNotGitDirectoryOrContents('subdir/.git/config')).toBe(false); // Should keep .gitignore and other non-.git-directory files - expect(filterGitFiles('.gitignore')).toBe(true); - expect(filterGitFiles('src/components/GitHubIcon.js')).toBe(true); - expect(filterGitFiles('.github/workflows/ci.yml')).toBe(true); + expect(isNotGitDirectoryOrContents('.gitignore')).toBe(true); + expect(isNotGitDirectoryOrContents('src/components/GitHubIcon.js')).toBe( + true, + ); + expect(isNotGitDirectoryOrContents('.github/workflows/ci.yml')).toBe( + true, + ); }); }); }); diff --git a/plugins/scaffolder-node/src/actions/util.ts b/plugins/scaffolder-node/src/actions/util.ts index da86befdc7..57141e9c24 100644 --- a/plugins/scaffolder-node/src/actions/util.ts +++ b/plugins/scaffolder-node/src/actions/util.ts @@ -192,6 +192,6 @@ export const parseSchemas = ( * while keeping other files like .gitignore * @public */ -export function filterGitFiles(path: string): boolean { +export function isNotGitDirectoryOrContents(path: string): boolean { return !(path.endsWith('.git') || path.includes('.git/')); }