@teambit/ci 1.0.636 → 1.0.638

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_chai","data","require","_fs","_interopRequireDefault","_os","_path","_yaml","_initScaffold","e","__esModule","default","yamlLoad","src","YAML","parse","onSection","rendered","doc","on","BRANCHES","describe","it","forEach","branch","expect","renderBitSyncWorkflow","push","to","deep","equal","renderBitReleaseWorkflow","pull_request","branches","sync","release","contain","jobs","be","an","workspaceDir","beforeEach","fs","mkdtempSync","path","join","os","tmpdir","afterEach","rmSync","recursive","force","scaffoldWorkflowFiles","relativePath","WORKFLOW_RELATIVE_PATHS","status","read","rel","readFileSync","syncAbsPath","mkdirSync","dirname","writeFileSync","SHOP","owner","repo","host","REMOTES","undefined","remote","expected","deriveOwnerRepo","String","derived","renderInitChecklist","not","saved","api","process","env","GITHUB_API_URL","server","GITHUB_SERVER_URL","ownerRepo","checklist","item"],"sources":["init-scaffold.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport YAML from 'yaml';\nimport {\n WORKFLOW_RELATIVE_PATHS,\n renderBitSyncWorkflow,\n renderBitReleaseWorkflow,\n scaffoldWorkflowFiles,\n deriveOwnerRepo,\n renderInitChecklist,\n} from './init-scaffold';\nimport type { OwnerRepo } from './init-scaffold';\n\nconst yamlLoad = (src: string) => YAML.parse(src);\n\n/** YAML 1.1-schema parsers resolve the plain scalar key `on` to `true`, so accept either key. */\nfunction onSection(rendered: string): any {\n const doc = yamlLoad(rendered) as any;\n return doc.on ?? doc[true as any];\n}\n\n/**\n * Parsed, not substring-matched: the substitution point sits inside a YAML flow sequence, where `,` and\n * `]` are structural and a substring match is blind to exactly the damage an unquoted value does. `$` is\n * git-legal and `$&`/`$'`/`$$` are special in a string replacement, so those must arrive verbatim too.\n */\nconst BRANCHES = ['main', 'develop', 'release/2026', 'release/main', 'a,b]c', \"it's/a-branch\", \"a$'b\", 'a$&b', 'a$$b', 'a$`b']; // prettier-ignore\n\ndescribe('init-scaffold', () => {\n describe('the rendered workflows', () => {\n it('put the default branch in as exactly one element of each template’s branch filter', () => {\n BRANCHES.forEach((branch) => {\n expect(onSection(renderBitSyncWorkflow(branch)).push['branches-ignore'], branch).to.deep.equal([\n branch,\n 'bit-sync/**',\n ]);\n expect(onSection(renderBitReleaseWorkflow(branch)).pull_request.branches, branch).to.deep.equal([branch]);\n });\n });\n\n it('quote the value rather than escape it, and touch nothing else in the document', () => {\n const sync = renderBitSyncWorkflow('develop');\n const release = renderBitReleaseWorkflow('develop');\n expect(sync).to.contain(\"branches-ignore: ['develop', 'bit-sync/**']\");\n expect(release).to.contain(\"branches: ['develop']\");\n // a naive replace-all of \"main\" would rewrite every one of these\n expect(sync).to.contain('main-sync-branch: bit-sync/main');\n expect(sync).to.contain('bit-main-export');\n expect(sync).to.contain('main export)');\n expect(sync).to.contain('${{ secrets.BIT_CONFIG_ACCESS_TOKEN }}');\n expect(release).to.contain(\"github.event.pull_request.head.ref != 'bit-sync/main'\");\n expect(release).to.contain('main-sync-branch: bit-sync/main');\n // YAML single-quote escaping, and the rest of the document intact\n expect(renderBitSyncWorkflow(\"it's/a-branch\")).to.contain(\"'it''s/a-branch'\");\n expect(yamlLoad(renderBitSyncWorkflow('release/main')).jobs).to.be.an('object');\n });\n });\n\n describe('scaffoldWorkflowFiles', () => {\n let workspaceDir: string;\n\n beforeEach(() => {\n workspaceDir = fs.mkdtempSync(path.join(os.tmpdir(), 'init-scaffold-'));\n });\n\n afterEach(() => {\n fs.rmSync(workspaceDir, { recursive: true, force: true });\n });\n\n it('writes both workflow files with the default branch substituted, creating .github/workflows/', () => {\n expect(scaffoldWorkflowFiles(workspaceDir, 'develop')).to.deep.equal([\n { relativePath: WORKFLOW_RELATIVE_PATHS.sync, status: 'written' },\n { relativePath: WORKFLOW_RELATIVE_PATHS.release, status: 'written' },\n ]);\n const read = (rel: string) => fs.readFileSync(path.join(workspaceDir, rel), 'utf8');\n expect(read(WORKFLOW_RELATIVE_PATHS.sync)).to.contain(\"branches-ignore: ['develop', 'bit-sync/**']\");\n expect(read(WORKFLOW_RELATIVE_PATHS.release)).to.contain(\"branches: ['develop']\");\n });\n\n it('is idempotent: a second run skips both files rather than overwriting them', () => {\n scaffoldWorkflowFiles(workspaceDir, 'develop');\n expect(scaffoldWorkflowFiles(workspaceDir, 'develop')).to.deep.equal([\n { relativePath: WORKFLOW_RELATIVE_PATHS.sync, status: 'skipped' },\n { relativePath: WORKFLOW_RELATIVE_PATHS.release, status: 'skipped' },\n ]);\n });\n\n it('skips only the file that already exists, writing the other one', () => {\n const syncAbsPath = path.join(workspaceDir, WORKFLOW_RELATIVE_PATHS.sync);\n fs.mkdirSync(path.dirname(syncAbsPath), { recursive: true });\n fs.writeFileSync(syncAbsPath, 'hand-edited content, do not touch\\n');\n expect(scaffoldWorkflowFiles(workspaceDir, 'develop')).to.deep.equal([\n { relativePath: WORKFLOW_RELATIVE_PATHS.sync, status: 'skipped' },\n { relativePath: WORKFLOW_RELATIVE_PATHS.release, status: 'written' },\n ]);\n expect(fs.readFileSync(syncAbsPath, 'utf8')).to.equal('hand-edited content, do not touch\\n');\n });\n });\n\n describe('deriveOwnerRepo', () => {\n const SHOP = { owner: 'acme', repo: 'shop', host: 'github.com' };\n const REMOTES: Array<[string | undefined, OwnerRepo | undefined]> = [\n ['git@github.com:acme/shop.git', SHOP],\n ['https://github.com/acme/shop.git', SHOP],\n ['https://github.com/acme/shop', SHOP],\n ['https://gitlab.com/acme/shop.git', undefined],\n // a local/bare remote has no host at all\n ['/path/to/bare.git', undefined],\n ['file:///path/to/bare.git', undefined],\n [undefined, undefined],\n ];\n\n it('parses a GitHub remote in either form, and nothing else', () => {\n REMOTES.forEach(([remote, expected]) => expect(deriveOwnerRepo(remote), String(remote)).to.deep.equal(expected));\n });\n });\n\n describe('renderInitChecklist', () => {\n it('renders a real dispatch URL when owner/repo were derived, a placeholder when not', () => {\n const derived = renderInitChecklist({ owner: 'acme', repo: 'shop', host: 'github.com' });\n expect(derived).to.contain('https://api.github.com/repos/acme/shop/dispatches');\n expect(derived).to.not.contain('<owner>/<repo>');\n expect(renderInitChecklist(undefined)).to.contain('https://api.github.com/repos/<owner>/<repo>/dispatches');\n });\n\n it('derives the repository and the dispatch URL from a GitHub Enterprise Server remote', () => {\n const saved = { api: process.env.GITHUB_API_URL, server: process.env.GITHUB_SERVER_URL };\n process.env.GITHUB_API_URL = 'https://ghe.corp.example/api/v3';\n process.env.GITHUB_SERVER_URL = 'https://ghe.corp.example';\n try {\n const ownerRepo = deriveOwnerRepo('git@ghe.corp.example:acme/store.git');\n expect(ownerRepo).to.deep.equal({ owner: 'acme', repo: 'store', host: 'ghe.corp.example' });\n expect(renderInitChecklist(ownerRepo)).to.contain(\n 'https://ghe.corp.example/api/v3/repos/acme/store/dispatches'\n );\n } finally {\n if (saved.api === undefined) delete process.env.GITHUB_API_URL;\n else process.env.GITHUB_API_URL = saved.api;\n if (saved.server === undefined) delete process.env.GITHUB_SERVER_URL;\n else process.env.GITHUB_SERVER_URL = saved.server;\n }\n });\n\n describe('on a GHES-configured runner', () => {\n const saved: Record<string, string | undefined> = {};\n beforeEach(() => {\n saved.api = process.env.GITHUB_API_URL;\n saved.server = process.env.GITHUB_SERVER_URL;\n process.env.GITHUB_SERVER_URL = 'https://ghe.corp.example';\n });\n afterEach(() => {\n if (saved.api === undefined) delete process.env.GITHUB_API_URL;\n else process.env.GITHUB_API_URL = saved.api;\n if (saved.server === undefined) delete process.env.GITHUB_SERVER_URL;\n else process.env.GITHUB_SERVER_URL = saved.server;\n });\n\n it('names api.github.com for a github.com origin', () => {\n process.env.GITHUB_API_URL = 'https://ghe.corp.example/api/v3';\n const checklist = renderInitChecklist(deriveOwnerRepo('git@github.com:acme/shop.git'));\n expect(checklist).to.contain('https://api.github.com/repos/acme/shop/dispatches');\n expect(checklist).to.not.contain('ghe.corp.example');\n });\n\n it('derives <server>/api/v3 for an enterprise origin when GITHUB_API_URL is unset', () => {\n delete process.env.GITHUB_API_URL;\n expect(renderInitChecklist(deriveOwnerRepo('https://ghe.corp.example/acme/store.git'))).to.contain(\n 'https://ghe.corp.example/api/v3/repos/acme/store/dispatches'\n );\n });\n\n it('names no API for an enterprise origin whose GITHUB_API_URL is on another host', () => {\n process.env.GITHUB_API_URL = 'https://api.github.com';\n const checklist = renderInitChecklist(deriveOwnerRepo('https://ghe.corp.example/acme/store.git'));\n expect(checklist).to.contain('<GitHub API URL>/repos/acme/store/dispatches');\n expect(checklist).to.contain('GITHUB_API_URL \"https://api.github.com\"');\n expect(checklist).to.not.contain('https://api.github.com/repos');\n });\n });\n\n it('always includes the secrets, permissions, webhook and fetch-depth checklist items', () => {\n const checklist = renderInitChecklist(undefined);\n [\n 'BIT_CONFIG_ACCESS_TOKEN',\n 'BIT_SYNC_GH_TOKEN',\n 'contents: write',\n 'Components > Export',\n 'Authorization: Bearer <PAT>',\n 'Accept: application/vnd.github+json',\n '\"event_type\":\"bit-export\"',\n '{{laneId}}',\n 'drops its custom headers',\n 'fetch-depth: 0',\n ].forEach((item) => expect(checklist, item).to.contain(item));\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chai","data","require","_fs","_interopRequireDefault","_os","_path","_yaml","_initScaffold","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","yamlLoad","src","YAML","parse","onSection","rendered","doc","on","BRANCHES","describe","it","branch","expect","renderBitSyncWorkflow","to","deep","equal","renderBitReleaseWorkflow","pull_request","branches","sync","release","contain","jobs","be","an","withInput","values","flatMap","job","steps","find","s","uses","startsWith","with","render","not","have","property","workspaceDir","beforeEach","fs","mkdtempSync","path","join","os","tmpdir","afterEach","rmSync","recursive","force","scaffoldWorkflowFiles","relativePath","WORKFLOW_RELATIVE_PATHS","status","read","rel","readFileSync","syncAbsPath","mkdirSync","dirname","writeFileSync","SHOP","owner","repo","host","REMOTES","undefined","remote","expected","deriveOwnerRepo","chooseInitDefaultBranch","files","displayPath","plain","text","replace","report","extra","renderInitReport","scopeId","ownerRepo","defaultBranch","configAdded","out","match","map","f","configDisplayPath","toStage","ignored","repoHasCommits","inGitRepo","repoRootFromCwd","shellQuote","origin","originUrl","defaultBranchGuessed","isLocalPathRemote","true","false","escapeControlChars","redactRemoteUrl","suggestedServerUrl","saved","api","process","env","GITHUB_API_URL","server","GITHUB_SERVER_URL"],"sources":["init-scaffold.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport YAML from 'yaml';\nimport {\n WORKFLOW_RELATIVE_PATHS,\n renderBitSyncWorkflow,\n renderBitReleaseWorkflow,\n scaffoldWorkflowFiles,\n deriveOwnerRepo,\n renderInitReport,\n shellQuote,\n chooseInitDefaultBranch,\n suggestedServerUrl,\n isLocalPathRemote,\n redactRemoteUrl,\n escapeControlChars,\n} from './init-scaffold';\nimport type { OwnerRepo } from './init-scaffold';\n\nconst yamlLoad = (src: string) => YAML.parse(src);\n\n/** YAML 1.1-schema parsers resolve the plain scalar key `on` to `true`, so accept either key. */\nfunction onSection(rendered: string): any {\n const doc = yamlLoad(rendered) as any;\n return doc.on ?? doc[true as any];\n}\n\n/**\n * Parsed, not substring-matched: the substitution point sits inside a YAML flow sequence, where `,` and\n * `]` are structural and a substring match is blind to exactly the damage an unquoted value does. `$` is\n * git-legal and `$&`/`$'`/`$$` are special in a string replacement, so those must arrive verbatim too.\n */\nconst BRANCHES = ['main', 'develop', 'release/2026', 'release/main', 'a,b]c', \"it's/a-branch\", \"a$'b\", 'a$&b', 'a$$b', 'a$`b']; // prettier-ignore\n\ndescribe('init-scaffold', () => {\n describe('the rendered workflows', () => {\n it('put the default branch in as exactly one element of each template’s branch filter', () => {\n BRANCHES.forEach((branch) => {\n expect(onSection(renderBitSyncWorkflow(branch)).push['branches-ignore'], branch).to.deep.equal([\n branch,\n 'bit-sync/**',\n ]);\n expect(onSection(renderBitReleaseWorkflow(branch)).pull_request.branches, branch).to.deep.equal([branch]);\n });\n });\n\n it('quote the value rather than escape it, and touch nothing else in the document', () => {\n const sync = renderBitSyncWorkflow('develop');\n const release = renderBitReleaseWorkflow('develop');\n expect(sync).to.contain(\"branches-ignore: ['develop', 'bit-sync/**']\");\n expect(release).to.contain(\"branches: ['develop']\");\n // a naive replace-all of \"main\" would rewrite every one of these\n expect(sync).to.contain('main-sync-branch: bit-sync/main');\n expect(sync).to.contain('bit-main-export');\n expect(sync).to.contain('main export)');\n expect(sync).to.contain('${{ secrets.BIT_CONFIG_ACCESS_TOKEN }}');\n expect(release).to.contain(\"github.event.pull_request.head.ref != 'bit-sync/main'\");\n expect(release).to.contain('main-sync-branch: bit-sync/main');\n // YAML single-quote escaping, and the rest of the document intact\n expect(renderBitSyncWorkflow(\"it's/a-branch\")).to.contain(\"'it''s/a-branch'\");\n expect(yamlLoad(renderBitSyncWorkflow('release/main')).jobs).to.be.an('object');\n });\n\n it('set the action ws-dir for a workspace below the repository root, and leave it commented at the root', () => {\n const withInput = (doc: string) =>\n Object.values(yamlLoad(doc).jobs as Record<string, any>)\n .flatMap((job) => job.steps)\n .find((s: any) => String(s.uses).startsWith('teambit/bit-git-sync')).with;\n [renderBitSyncWorkflow, renderBitReleaseWorkflow].forEach((render) => {\n expect(withInput(render('main', 'packages/app'))['ws-dir']).to.equal('packages/app');\n expect(withInput(render('main', \"it's dir\"))['ws-dir']).to.equal(\"it's dir\");\n expect(withInput(render('main'))).to.not.have.property('ws-dir');\n expect(render('main')).to.contain('# ws-dir: packages/my-workspace');\n expect(render('main', '.')).to.equal(render('main'));\n });\n });\n });\n\n describe('scaffoldWorkflowFiles', () => {\n let workspaceDir: string;\n\n beforeEach(() => {\n workspaceDir = fs.mkdtempSync(path.join(os.tmpdir(), 'init-scaffold-'));\n });\n\n afterEach(() => {\n fs.rmSync(workspaceDir, { recursive: true, force: true });\n });\n\n it('writes both workflow files with the default branch substituted, creating .github/workflows/', () => {\n expect(scaffoldWorkflowFiles(workspaceDir, 'develop')).to.deep.equal([\n { relativePath: WORKFLOW_RELATIVE_PATHS.sync, status: 'written' },\n { relativePath: WORKFLOW_RELATIVE_PATHS.release, status: 'written' },\n ]);\n const read = (rel: string) => fs.readFileSync(path.join(workspaceDir, rel), 'utf8');\n expect(read(WORKFLOW_RELATIVE_PATHS.sync)).to.contain(\"branches-ignore: ['develop', 'bit-sync/**']\");\n expect(read(WORKFLOW_RELATIVE_PATHS.release)).to.contain(\"branches: ['develop']\");\n });\n\n it('is idempotent: a second run skips both files rather than overwriting them', () => {\n scaffoldWorkflowFiles(workspaceDir, 'develop');\n expect(scaffoldWorkflowFiles(workspaceDir, 'develop')).to.deep.equal([\n { relativePath: WORKFLOW_RELATIVE_PATHS.sync, status: 'skipped' },\n { relativePath: WORKFLOW_RELATIVE_PATHS.release, status: 'skipped' },\n ]);\n });\n\n it('skips only the file that already exists, writing the other one', () => {\n const syncAbsPath = path.join(workspaceDir, WORKFLOW_RELATIVE_PATHS.sync);\n fs.mkdirSync(path.dirname(syncAbsPath), { recursive: true });\n fs.writeFileSync(syncAbsPath, 'hand-edited content, do not touch\\n');\n expect(scaffoldWorkflowFiles(workspaceDir, 'develop')).to.deep.equal([\n { relativePath: WORKFLOW_RELATIVE_PATHS.sync, status: 'skipped' },\n { relativePath: WORKFLOW_RELATIVE_PATHS.release, status: 'written' },\n ]);\n expect(fs.readFileSync(syncAbsPath, 'utf8')).to.equal('hand-edited content, do not touch\\n');\n });\n });\n\n describe('deriveOwnerRepo', () => {\n const SHOP = { owner: 'acme', repo: 'shop', host: 'github.com' };\n const REMOTES: Array<[string | undefined, OwnerRepo | undefined]> = [\n ['git@github.com:acme/shop.git', SHOP],\n ['https://github.com/acme/shop.git', SHOP],\n ['https://github.com/acme/shop', SHOP],\n ['https://gitlab.com/acme/shop.git', undefined],\n // a local/bare remote has no host at all\n ['/path/to/bare.git', undefined],\n ['file:///path/to/bare.git', undefined],\n [undefined, undefined],\n ];\n\n it('parses a GitHub remote in either form, and nothing else', () => {\n REMOTES.forEach(([remote, expected]) => expect(deriveOwnerRepo(remote), String(remote)).to.deep.equal(expected));\n });\n });\n\n describe('chooseInitDefaultBranch', () => {\n it('takes the detected branch, else main or master when checked out, else main', () => {\n expect(chooseInitDefaultBranch('trunk', 'feature/x')).to.equal('trunk');\n expect(chooseInitDefaultBranch(undefined, 'master')).to.equal('master');\n expect(chooseInitDefaultBranch(undefined, 'main')).to.equal('main');\n expect(chooseInitDefaultBranch(undefined, 'feature/x')).to.equal('main');\n expect(chooseInitDefaultBranch(undefined, undefined)).to.equal('main');\n });\n });\n\n describe('renderInitReport', () => {\n const files = [\n {\n relativePath: WORKFLOW_RELATIVE_PATHS.sync,\n status: 'written' as const,\n displayPath: '.github/workflows/bit-sync.yml',\n },\n {\n relativePath: WORKFLOW_RELATIVE_PATHS.release,\n status: 'written' as const,\n displayPath: '.github/workflows/bit-release.yml',\n },\n ];\n // eslint-disable-next-line no-control-regex\n const plain = (text: string) => text.replace(/\\u001b\\[[0-9;]*m/g, '');\n const report = (remote: string | undefined, extra: Partial<Parameters<typeof renderInitReport>[0]> = {}) =>\n plain(\n renderInitReport({\n scopeId: 'acme.shop',\n ownerRepo: deriveOwnerRepo(remote),\n defaultBranch: 'main',\n files,\n configAdded: true,\n ...extra,\n })\n );\n\n it('prints each step once, as commands for the derived repository', () => {\n const out = report('git@github.com:acme/shop.git');\n expect(out).to.contain('for acme.shop, mirrored to acme/shop (default branch: main)');\n expect(out).to.contain('git push -u origin HEAD');\n expect(out).to.contain('gh secret set BIT_CONFIG_ACCESS_TOKEN -R acme/shop');\n expect(out).to.contain('gh api -X PUT repos/acme/shop/actions/permissions/workflow');\n expect(out.match(/Next: 3 steps to go live/g)).to.have.length(1);\n });\n\n it('points github.com repositories at the GitHub App and the relay, not at a personal token', () => {\n const out = report('https://github.com/acme/shop.git');\n expect(out).to.contain('https://github.com/apps/bit-git-sync');\n expect(out).to.contain('/setup');\n expect(out).to.not.contain('/dispatches');\n expect(out).to.not.contain('Authorization: Bearer');\n });\n\n it('prints no placeholder commands when there is no GitHub remote yet', () => {\n const out = report(undefined);\n expect(out).to.contain('no GitHub remote yet');\n expect(out).to.contain('gh repo create --private --source . --remote origin --push');\n expect(out).to.not.contain('GITHUB_SERVER_URL');\n expect(out).to.contain('Run bit ci sync --init again');\n expect(out).to.contain('Next: 2 steps to go live');\n expect(out).to.not.contain('<owner>');\n expect(out).to.not.contain('gh secret set');\n });\n\n it('commits and pushes in separate commands, so a re-run with nothing to commit still pushes', () => {\n const out = report('git@github.com:acme/shop.git');\n expect(out).to.match(/git commit -m 'Mirror acme\\.shop' -- \\\\\\n\\s+[^\\n]+\\n\\s+git push -u origin HEAD/);\n expect(out).to.not.contain('&& git');\n });\n\n it('stages only the files --init touched, so unrelated local changes stay out of the commit', () => {\n const out = report('git@github.com:acme/shop.git');\n expect(out).to.contain(\n 'git add -- .github/workflows/bit-sync.yml .github/workflows/bit-release.yml workspace.jsonc\\n'\n );\n expect(out).to.not.contain('git add -A');\n // the paths are the ones shown, as seen from where the user stands\n expect(\n report('git@github.com:acme/shop.git', {\n files: files.map((f) => ({ ...f, displayPath: `/repo root/${f.displayPath}` })),\n configDisplayPath: 'workspace.jsonc',\n })\n ).to.contain(\"git add -- '/repo root/.github/workflows/bit-sync.yml'\");\n });\n\n it('stages exactly the files git shows as new or changed', () => {\n const out = report('git@github.com:acme/shop.git', { toStage: ['.github/workflows/bit-sync.yml'], ignored: [] });\n expect(out).to.contain('git add -- .github/workflows/bit-sync.yml\\n');\n expect(out).to.not.contain('bit-release.yml workspace.jsonc');\n });\n\n it('force-adds a workflow file that .gitignore matches, so the rest of the staging still runs', () => {\n const out = report('git@github.com:acme/shop.git', {\n toStage: ['workspace.jsonc'],\n ignored: ['.github/workflows/bit-release.yml'],\n });\n expect(out).to.contain('git add -- workspace.jsonc\\n');\n expect(out).to.contain('git add -f -- .github/workflows/bit-release.yml\\n');\n expect(out).to.contain('.gitignore matches these');\n expect(out).to.contain(\"git commit -m 'Mirror acme.shop'\");\n });\n\n it('commits only the files it stages, so changes staged before stay out of the commit', () => {\n const out = report('git@github.com:acme/shop.git', {\n toStage: ['workspace.jsonc'],\n ignored: ['.github/workflows/bit-release.yml'],\n });\n expect(out).to.match(\n /git commit -m 'Mirror acme\\.shop' -- \\\\\\n\\s+workspace\\.jsonc \\.github\\/workflows\\/bit-release\\.yml\\n/\n );\n });\n\n it('force-adds an ignored workflow file also for the first commit, which git add -A would skip', () => {\n const out = report(undefined, { repoHasCommits: false, ignored: ['.github/workflows/bit-sync.yml'] });\n expect(out).to.match(/git add -A\\n\\s+git add -f -- \\.github\\/workflows\\/bit-sync\\.yml\\n/);\n // the first commit takes the whole workspace, so it names no paths\n expect(out).to.match(/git commit -m 'Mirror acme\\.shop'\\n/);\n });\n\n it('prints no commit when nothing is left to commit, and still pushes', () => {\n const out = report('git@github.com:acme/shop.git', { toStage: [], ignored: [] });\n expect(out).to.not.contain('git add');\n expect(out).to.not.contain('git commit');\n expect(out).to.contain('nothing to commit');\n expect(out).to.contain('git push -u origin HEAD');\n });\n\n it('starts with git init when the workspace is not in a git repository', () => {\n const out = report(undefined, { inGitRepo: false, repoHasCommits: false });\n expect(out).to.match(/git init -b main\\n\\s+git add -A\\n\\s+git commit -m/);\n expect(report(undefined, { inGitRepo: false, repoRootFromCwd: '..' })).to.contain('git init -b main ..\\n');\n // the branch the workflows use, not git's own default (master when init.defaultBranch is unset)\n expect(report(undefined, { inGitRepo: false, defaultBranch: 'trunk' })).to.contain('git init -b trunk\\n');\n expect(report(undefined)).to.not.contain('git init');\n });\n\n it('stages the whole workspace for the first commit of a new repository', () => {\n expect(report(undefined, { repoHasCommits: false })).to.contain('git add -A\\n');\n expect(report(undefined, { repoHasCommits: false, repoRootFromCwd: '../..' })).to.contain('git add -A :/\\n');\n });\n\n it('shell-quotes values it puts in commands', () => {\n expect(shellQuote('main')).to.equal('main');\n expect(shellQuote('feature/x-1.2')).to.equal('feature/x-1.2');\n expect(shellQuote('$(id)')).to.equal(\"'$(id)'\");\n expect(shellQuote(\"it's\")).to.equal(\"'it'\\\\''s'\");\n // the push names HEAD, so a branch name never reaches a command\n expect(report('git@github.com:acme/shop.git', { defaultBranch: '$(id)' })).to.contain('git push -u origin HEAD');\n });\n\n it('names the token-account exemption, the PR setting and the optional CI token', () => {\n const out = report('git@github.com:acme/shop.git');\n expect(out).to.contain('exempt the token');\n expect(out).to.contain('Allow GitHub Actions to create and approve pull requests');\n // one command sets both settings guide step 4 names\n expect(out).to.contain('-f default_workflow_permissions=write -F can_approve_pull_request_reviews=true');\n expect(out).to.contain('Read and write permissions');\n // the command line ends at the command, so it runs when pasted\n expect(out).to.match(/gh secret set BIT_SYNC_GH_TOKEN -R acme\\/shop\\n\\s+optional: a GitHub token/);\n });\n\n it('states the schedule the scaffolded workflow installs', () => {\n expect(renderBitSyncWorkflow('main')).to.contain(\"cron: '*/30 * * * *'\");\n expect(report('git@github.com:acme/shop.git')).to.contain('every 30 minutes');\n });\n\n it('names an origin it does not recognize, and says how to mark a GitHub Enterprise Server', () => {\n const origin = 'git@github.corp.example:acme/store.git';\n const out = report(origin, { originUrl: origin });\n expect(out).to.contain(`origin ${origin}`);\n expect(out).to.contain('GITHUB_SERVER_URL=https://github.corp.example bit ci sync --init');\n expect(out).to.contain('git push -u origin HEAD');\n expect(out).to.not.contain('no GitHub remote yet');\n // the host is unknown, so no github.com steps\n expect(out).to.not.contain('github.com/apps/bit-git-sync');\n expect(out).to.not.contain('gh secret set');\n });\n\n it('marks files that already existed and a config block that was already there', () => {\n const out = report('git@github.com:acme/shop.git', {\n files: [{ ...files[0], status: 'skipped' }, files[1]],\n configAdded: false,\n });\n expect(out).to.match(/\\.github\\/workflows\\/bit-sync\\.yml\\s+already exists, left unchanged/);\n expect(out).to.match(/\\.github\\/workflows\\/bit-release\\.yml\\s+releases the scope/);\n expect(out).to.match(/workspace\\.jsonc\\s+already configures sync/);\n });\n\n it('creates the repository from the repository root when the workspace is a subdirectory', () => {\n expect(report(undefined, { repoRootFromCwd: '../..' })).to.contain(\n 'gh repo create --private --source ../.. --remote origin --push'\n );\n expect(report(undefined, { repoRootFromCwd: '/my repo' })).to.contain(\"--source '/my repo' --remote\");\n });\n\n it('flags a guessed default branch', () => {\n const origin = 'git@github.com:acme/shop.git';\n expect(report(origin, { originUrl: origin, defaultBranchGuessed: true })).to.contain(\n \"the remote didn't name its default branch\"\n );\n expect(report(undefined, { defaultBranchGuessed: true })).to.contain('no remote names the default branch');\n expect(report(origin)).to.not.contain('default branch, so');\n });\n\n it('suggests no server for an origin that is a path on this machine', () => {\n [\n '/tmp/e2e/remote.git',\n '../remote.git',\n 'remote.git',\n 'repos/remote.git',\n 'file:///srv/remote.git',\n 'C:\\\\repos\\\\remote.git',\n ].forEach((origin) => {\n expect(isLocalPathRemote(origin), origin).to.be.true;\n const out = report(origin, { originUrl: origin });\n expect(out, origin).to.contain(`origin ${origin}`);\n expect(out, origin).to.not.contain('GITHUB_SERVER_URL');\n expect(out, origin).to.not.contain('<your-server>');\n expect(out, origin).to.contain('git push -u origin HEAD');\n });\n expect(isLocalPathRemote('git@ghe.example:acme/store.git')).to.be.false;\n expect(isLocalPathRemote('https://ghe.example/acme/store.git')).to.be.false;\n expect(isLocalPathRemote('ssh://git@ghe.example:2222/acme/store.git')).to.be.false;\n expect(isLocalPathRemote('ghe.example:acme/store.git')).to.be.false;\n });\n\n it('prints control characters in an origin as inert text, and suggests no server for it', () => {\n expect(escapeControlChars('a\\nb\\u001b[2Jc')).to.equal('a\\\\x0ab\\\\x1b[2Jc');\n const origin = 'https://ghe.example/acme/store.git\\n\\u001b[32m✔ all set';\n const out = renderInitReport({\n scopeId: 'acme.shop',\n originUrl: origin,\n defaultBranch: 'main',\n files,\n configAdded: true,\n });\n expect(out).to.not.contain('\\u001b[32m');\n expect(out).to.not.contain('store.git\\n');\n expect(out).to.contain('origin https://ghe.example/acme/store.git\\\\x0a\\\\x1b[32m');\n expect(out).to.not.contain('GITHUB_SERVER_URL');\n });\n\n it('never prints the credentials an origin URL carries', () => {\n expect(redactRemoteUrl('https://user:ghp_secret@git.corp.example/acme/store.git')).to.equal(\n 'https://git.corp.example/acme/store.git'\n );\n expect(redactRemoteUrl('https://ghp_secret@git.corp.example/acme/store.git')).to.equal(\n 'https://git.corp.example/acme/store.git'\n );\n expect(redactRemoteUrl('ssh://git:secret@git.corp.example/acme/store.git')).to.equal(\n 'ssh://git@git.corp.example/acme/store.git'\n );\n expect(redactRemoteUrl('ssh://git@git.corp.example/acme/store.git')).to.equal(\n 'ssh://git@git.corp.example/acme/store.git'\n );\n expect(redactRemoteUrl('git@git.corp.example:acme/store.git')).to.equal('git@git.corp.example:acme/store.git');\n const origin = 'https://user:ghp_secret@git.corp.example:8443/acme/store.git';\n const out = report(origin, { originUrl: origin });\n expect(out).to.not.contain('ghp_secret');\n expect(out).to.contain('origin https://git.corp.example:8443/acme/store.git');\n expect(out).to.contain('GITHUB_SERVER_URL=https://git.corp.example:8443 bit ci sync --init');\n });\n\n it('suggests a GITHUB_SERVER_URL that keeps an https port, and drops an ssh one', () => {\n expect(suggestedServerUrl('https://ghe.example:8443/acme/store.git')).to.equal('https://ghe.example:8443');\n expect(suggestedServerUrl('git@ghe.example:acme/store.git')).to.equal('https://ghe.example');\n expect(suggestedServerUrl('ssh://git@ghe.example:2222/acme/store.git')).to.equal('https://ghe.example');\n const origin = 'https://ghe.example:8443/acme/store.git';\n expect(report(origin, { originUrl: origin })).to.contain(\n 'GITHUB_SERVER_URL=https://ghe.example:8443 bit ci sync --init'\n );\n });\n\n describe('on GitHub Enterprise Server', () => {\n const saved: Record<string, string | undefined> = {};\n beforeEach(() => {\n saved.api = process.env.GITHUB_API_URL;\n saved.server = process.env.GITHUB_SERVER_URL;\n process.env.GITHUB_SERVER_URL = 'https://ghe.corp.example';\n });\n afterEach(() => {\n if (saved.api === undefined) delete process.env.GITHUB_API_URL;\n else process.env.GITHUB_API_URL = saved.api;\n if (saved.server === undefined) delete process.env.GITHUB_SERVER_URL;\n else process.env.GITHUB_SERVER_URL = saved.server;\n });\n\n it('uses the dispatch webhook on the server API, and gh commands that name the host', () => {\n process.env.GITHUB_API_URL = 'https://ghe.corp.example/api/v3';\n const out = report('git@ghe.corp.example:acme/store.git');\n expect(out).to.contain('https://ghe.corp.example/api/v3/repos/acme/store/dispatches');\n expect(out).to.contain('\"event_type\":\"bit-export\"');\n expect(out).to.contain('gh secret set BIT_CONFIG_ACCESS_TOKEN -R ghe.corp.example/acme/store');\n expect(out).to.contain('gh api --hostname ghe.corp.example -X PUT repos/acme/store/');\n expect(out).to.not.contain('github.com/apps/bit-git-sync');\n });\n\n it('derives <server>/api/v3 when GITHUB_API_URL is unset', () => {\n delete process.env.GITHUB_API_URL;\n expect(report('https://ghe.corp.example/acme/store.git')).to.contain(\n 'https://ghe.corp.example/api/v3/repos/acme/store/dispatches'\n );\n });\n\n it('names no API when GITHUB_API_URL is on another host', () => {\n process.env.GITHUB_API_URL = 'https://api.github.com';\n const out = report('https://ghe.corp.example/acme/store.git');\n expect(out).to.contain('<GitHub API URL>/repos/acme/store/dispatches');\n expect(out).to.contain('GITHUB_API_URL \"https://api.github.com\"');\n expect(out).to.not.contain('https://api.github.com/repos');\n });\n\n it('keeps the App path for a github.com origin', () => {\n process.env.GITHUB_API_URL = 'https://ghe.corp.example/api/v3';\n const out = report('git@github.com:acme/shop.git');\n expect(out).to.contain('https://github.com/apps/bit-git-sync');\n expect(out).to.not.contain('ghe.corp.example');\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -43,10 +43,12 @@ export declare class SyncOrchestrator {
43
43
  }): Promise<string>;
44
44
  /**
45
45
  * `bit ci sync --init` — one-command onboarding: scaffolds the two workflow files, adds the sync
46
- * config block to workspace.jsonc if missing, and prints the manual-steps checklist. Safe to
46
+ * config block to workspace.jsonc if missing, and returns the report of the steps left. Safe to
47
47
  * re-run: existing files are skipped, an existing config block is left alone; it never reconciles.
48
48
  */
49
49
  private syncInit;
50
+ /** The checked-out branch when it is a usable name (not detached, not option-like), else `fallback`. */
51
+ private currentBranchOr;
50
52
  /**
51
53
  * Add `"sync": {}` under `"teambit.git/ci"` in workspace.jsonc if that key isn't there yet; returns
52
54
  * whether it wrote. The comment-preserving `WorkspaceConfig` API merges into existing
@@ -12,6 +12,13 @@ function _cli() {
12
12
  };
13
13
  return data;
14
14
  }
15
+ function _fs() {
16
+ const data = _interopRequireDefault(require("fs"));
17
+ _fs = function () {
18
+ return data;
19
+ };
20
+ return data;
21
+ }
15
22
  function path() {
16
23
  const data = _interopRequireWildcard(require("path"));
17
24
  path = function () {
@@ -83,6 +90,12 @@ function _initScaffold() {
83
90
  return data;
84
91
  }
85
92
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
93
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
94
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
95
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
96
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
97
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
98
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
86
99
  /**
87
100
  * Refuse a `--dry-run` whose plan would be computed by force-checking-out branches over uncommitted
88
101
  * work: the main-scope drift is a diff, so the tree IS written before the dry-run return. A dry run
@@ -241,11 +254,17 @@ class SyncOrchestrator {
241
254
 
242
255
  /**
243
256
  * `bit ci sync --init` — one-command onboarding: scaffolds the two workflow files, adds the sync
244
- * config block to workspace.jsonc if missing, and prints the manual-steps checklist. Safe to
257
+ * config block to workspace.jsonc if missing, and returns the report of the steps left. Safe to
245
258
  * re-run: existing files are skipped, an existing config block is left alone; it never reconciles.
246
259
  */
247
260
  async syncInit() {
248
- const defaultBranch = await this.deps.ci.getDefaultBranchName();
261
+ const remoteUrl = await _git().git.remote(['get-url', 'origin']).catch(() => undefined);
262
+ const origin = typeof remoteUrl === 'string' ? remoteUrl.trim() : undefined;
263
+ // The remote knows the default branch. When it can't answer (no origin, a repository not pushed
264
+ // yet, a server out of reach), guess: the checked-out branch when it's main or master, else main.
265
+ // A feature branch is never the guess: it would go into the workflows' branch filters.
266
+ const detectedBranch = await this.deps.ci.detectDefaultBranchName();
267
+ const defaultBranch = (0, _initScaffold().chooseInitDefaultBranch)(detectedBranch, await this.currentBranchOr(''));
249
268
 
250
269
  // Workflows belong to the repository, not the workspace: GitHub only discovers them at
251
270
  // `<repo-root>/.github/workflows`, and a bit workspace may be a subdirectory.
@@ -254,21 +273,72 @@ class SyncOrchestrator {
254
273
  if (!repoRoot) {
255
274
  this.deps.logger.consoleWarning(`could not resolve the git repository root ("git rev-parse --show-toplevel" failed — is this a git ` + `repository?). Writing the workflow files under the workspace instead: ${scaffoldRoot}. If that is ` + `not the repository root, GitHub will not discover them — move .github/workflows there by hand.`);
256
275
  }
257
- const fileOutcomes = (0, _initScaffold().scaffoldWorkflowFiles)(scaffoldRoot, defaultBranch);
258
- // Report the path relative to where the user is standing, not to the workspace.
259
- const displayPath = relativePath => {
260
- const abs = path().join(scaffoldRoot, relativePath);
276
+
277
+ // A workspace below the repository root: the actions must chdir into it (`ws-dir`).
278
+ // Real paths: git reports the root with symlinks resolved (macOS `/tmp` is `/private/tmp`).
279
+ const realPath = p => _fs().default.existsSync(p) ? _fs().default.realpathSync(p) : p;
280
+ const wsDir = path().relative(realPath(scaffoldRoot), realPath(this.deps.workspace.path)).split(path().sep).join('/');
281
+ const fileOutcomes = (0, _initScaffold().scaffoldWorkflowFiles)(scaffoldRoot, defaultBranch, wsDir && !wsDir.startsWith('..') ? wsDir : undefined);
282
+ // Report the path relative to where the user is standing (`../../.github/...` from a nested
283
+ // workspace), not to the workspace, so it is right to paste. Absolute only across drives.
284
+ const displayPath = abs => {
261
285
  const fromCwd = path().relative(process.cwd(), abs);
262
- return fromCwd && !fromCwd.startsWith('..') ? fromCwd : abs;
286
+ return fromCwd && !path().isAbsolute(fromCwd) ? fromCwd : abs;
263
287
  };
264
- const fileLines = fileOutcomes.map(outcome => outcome.status === 'written' ? `wrote ${displayPath(outcome.relativePath)} (default branch: ${defaultBranch})` : `skipped ${displayPath(outcome.relativePath)} (already exists — bit ci sync --init never overwrites)`);
265
288
  const configAdded = await this.ensureSyncConfigBlock();
266
- const configLine = configAdded ? 'added "teambit.git/ci": { "sync": {} } to workspace.jsonc' : 'workspace.jsonc already configures "teambit.git/ci".sync — left untouched';
267
- const remoteUrl = await _git().git.remote(['get-url', 'origin']).catch(() => undefined);
268
- const ownerRepo = (0, _initScaffold().deriveOwnerRepo)(typeof remoteUrl === 'string' ? remoteUrl.trim() : undefined);
269
- const summary = ['bit ci sync --init', ...fileLines, configLine, (0, _initScaffold().renderInitChecklist)(ownerRepo)].join('\n');
270
- this.deps.logger.console(summary);
271
- return summary;
289
+ // No commit yet: the first commit must take the whole workspace, not only the files --init wrote.
290
+ const repoHasCommits = await _git().git.raw(['rev-parse', '--verify', '--quiet', 'HEAD']).then(out => out.trim().length > 0).catch(() => false);
291
+
292
+ // What step 1 must stage: of the files --init handles, those git shows as new or changed. One that
293
+ // .gitignore matches is listed apart, because `git add` refuses an ignored path named on the command line.
294
+ const handled = [...fileOutcomes.map(outcome => path().join(scaffoldRoot, outcome.relativePath)), path().join(this.deps.workspace.path, 'workspace.jsonc')];
295
+ const toStage = [];
296
+ const ignored = [];
297
+ if (repoRoot) {
298
+ for (const abs of handled) {
299
+ // Ignored first: `git status` hides an ignored file, so it would look unchanged. `check-ignore`
300
+ // skips tracked files and prints the path only when it is ignored (it exits 1 otherwise). It
301
+ // needs no commit, and the first commit's `git add -A` skips an ignored file too.
302
+ // oxlint-disable-next-line no-await-in-loop
303
+ const isIgnored = await _git().git.raw(['check-ignore', '--', abs]).then(out => out.trim().length > 0).catch(() => false);
304
+ if (isIgnored) {
305
+ ignored.push(displayPath(abs));
306
+ continue;
307
+ }
308
+ // the first commit stages everything with `git add -A`
309
+ if (!repoHasCommits) continue;
310
+ // oxlint-disable-next-line no-await-in-loop
311
+ const changed = await _git().git.raw(['status', '--porcelain', '--untracked-files=all', '--', abs]).then(out => out.trim().length > 0).catch(() => true);
312
+ if (changed) toStage.push(displayPath(abs));
313
+ }
314
+ }
315
+
316
+ // Returned, not logged: the command prints what `report()` returns.
317
+ return (0, _initScaffold().renderInitReport)(_objectSpread({
318
+ scopeId: this.deps.workspace.defaultScope,
319
+ ownerRepo: (0, _initScaffold().deriveOwnerRepo)(origin),
320
+ originUrl: origin,
321
+ defaultBranch,
322
+ defaultBranchGuessed: !detectedBranch,
323
+ // the workflows live at the repository root, which may be above the workspace
324
+ repoRootFromCwd: path().relative(process.cwd(), scaffoldRoot) || '.',
325
+ repoHasCommits,
326
+ inGitRepo: Boolean(repoRoot),
327
+ files: fileOutcomes.map(outcome => _objectSpread(_objectSpread({}, outcome), {}, {
328
+ displayPath: displayPath(path().join(scaffoldRoot, outcome.relativePath))
329
+ })),
330
+ configDisplayPath: displayPath(path().join(this.deps.workspace.path, 'workspace.jsonc')),
331
+ configAdded
332
+ }, repoRoot ? {
333
+ toStage,
334
+ ignored
335
+ } : {}));
336
+ }
337
+
338
+ /** The checked-out branch when it is a usable name (not detached, not option-like), else `fallback`. */
339
+ async currentBranchOr(fallback) {
340
+ const current = await _git().git.raw(['branch', '--show-current']).then(out => out.trim()).catch(() => '');
341
+ return current && (0, _syncConfig().isValidGitBranchName)(current) ? current : fallback;
272
342
  }
273
343
 
274
344
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","path","_interopRequireWildcard","_bitError","_ci","_git","_syncConfig","_laneSyncExecutor","_mainSyncExecutor","_gitHostProvider","_gitOps","_initScaffold","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","assertCleanForDryRun","dirtyFiles","length","named","slice","join","BitError","SyncOrchestrator","constructor","deps","sync","opts","init","lane","branch","all","main","dryRun","syncInit","narrower","undefined","selectors","filter","selector","Boolean","winner","cfg","resolveSyncConfig","config","defaultScope","workspace","defaultBranch","ci","getDefaultBranchName","mainLaneName","lanes","getDefaultLaneId","name","statusAtStart","git","status","catch","files","map","file","isNonContentPath","logger","consoleWarning","remoteUrl","remote","provider","gitHost","reason","noGitHostReason","selectGitHostProvider","listGitHostProviders","trim","debug","laneSync","LaneSyncExecutor","mainSync","MainSyncExecutor","checkout","summarizeSync","syncMain","mainSyncBranch","laneName","syncableLaneNameForBranch","skipReason","laneNotSyncableReason","syncLane","hostScope","target","parseLaneTarget","explicitTarget","lines","lanesToSync","errors","listLanesToSync","push","console","formatTitle","repoRoot","gitRepoRoot","scaffoldRoot","fileOutcomes","scaffoldWorkflowFiles","displayPath","relativePath","abs","fromCwd","relative","process","cwd","startsWith","fileLines","outcome","configAdded","ensureSyncConfigBlock","configLine","ownerRepo","deriveOwnerRepo","summary","renderInitChecklist","wsConfig","getWorkspaceConfig","existing","extension","CiAspect","id","setExtension","mergeIntoExisting","ignoreVersion","write","reasonForChange","laneNameToBranch","shouldSyncLane","JSON","stringify","formatWarningSummary","names","Set","getLanes","forEach","add","msg","toString","includes","HALT_SUMMARY_PREFIX","listRemoteBranches","branchToLaneName","message","sort","halted","line","refusals","REFUSED_SUMMARY_PREFIX","exports"],"sources":["sync-orchestrator.ts"],"sourcesContent":["import { formatTitle, formatWarningSummary } from '@teambit/cli';\nimport * as path from 'path';\nimport { BitError } from '@teambit/bit-error';\nimport type { Logger } from '@teambit/logger';\nimport type { Workspace } from '@teambit/workspace';\nimport type { LanesMain } from '@teambit/lanes';\nimport type { CheckoutMain } from '@teambit/checkout';\nimport { CiAspect } from '../ci.aspect';\nimport type { CiMain, CiWorkspaceConfig } from '../ci.main.runtime';\nimport { git } from '../git';\nimport type { CiSyncConfig } from './sync-config';\nimport {\n branchToLaneName,\n laneNameToBranch,\n parseLaneTarget,\n resolveSyncConfig,\n shouldSyncLane,\n syncableLaneNameForBranch,\n} from './sync-config';\nimport { HALT_SUMMARY_PREFIX, REFUSED_SUMMARY_PREFIX, LaneSyncExecutor } from './lane-sync-executor';\nimport { MainSyncExecutor } from './main-sync-executor';\nimport { selectGitHostProvider } from './git-host-provider';\nimport { gitRepoRoot, isNonContentPath, listRemoteBranches } from './git-ops';\nimport { deriveOwnerRepo, renderInitChecklist, scaffoldWorkflowFiles } from './init-scaffold';\n\n/**\n * Refuse a `--dry-run` whose plan would be computed by force-checking-out branches over uncommitted\n * work: the main-scope drift is a diff, so the tree IS written before the dry-run return. A dry run\n * promises to write nothing, so it may not discard either — with a clean tree the write-then-restore\n * loses nothing.\n */\nexport function assertCleanForDryRun(dirtyFiles: string[]): void {\n if (!dirtyFiles.length) return;\n const named = `${dirtyFiles.slice(0, 10).join(', ')}${dirtyFiles.length > 10 ? ', …' : ''}`;\n throw new BitError(\n `bit ci sync --dry-run refuses to run: the working tree has ${dirtyFiles.length} uncommitted change(s), ` +\n `and computing the plan force-checkouts branches and removes untracked files, which would discard ` +\n `them. Commit or stash them first: ${named}`\n );\n}\n\n/** Everything the sync orchestration needs from `CiMain`, passed explicitly. */\nexport type SyncOrchestratorDeps = {\n ci: CiMain;\n workspace: Workspace;\n logger: Logger;\n lanes: LanesMain;\n checkout: CheckoutMain;\n config: CiWorkspaceConfig;\n};\n\n/**\n * Routing and aggregation for `bit ci sync`: decides which targets a run visits and how their\n * summaries combine. What reconciling a target means lives in the two executors, both stateless and\n * idempotent, so the trigger only ever decides when the reconciler runs.\n */\nexport class SyncOrchestrator {\n constructor(private deps: SyncOrchestratorDeps) {}\n\n /**\n * `bit ci sync` — reconcile Bit lanes and the main scope with git branches and pull requests.\n * Returns the per-target summary lines; throws the joined summary after the loop when any target\n * halted or was refused, so CI exits non-zero while every other target was still attempted. A skip\n * is neither — it reports itself and leaves the run green.\n */\n async sync(\n opts: { lane?: string; branch?: string; all?: boolean; main?: boolean; dryRun?: boolean; init?: boolean } = {}\n ): Promise<string> {\n if (opts.init) {\n if (opts.lane || opts.branch || opts.all || opts.main || opts.dryRun) {\n throw new BitError(\n 'bit ci sync --init cannot be combined with a lane argument, --branch, --all, --main or ' +\n '--dry-run: it only scaffolds onboarding files (workflows + workspace.jsonc config) and exits ' +\n '— it never reconciles'\n );\n }\n return this.syncInit();\n }\n\n // Refuse contradictory flag combinations rather than silently letting one target win.\n const narrower = opts.lane\n ? `a lane argument (\"${opts.lane}\")`\n : (opts.branch && `--branch (\"${opts.branch}\")`) || (opts.main && '--main') || undefined;\n if (opts.all && narrower) {\n throw new BitError(\n `--all cannot be combined with ${narrower}: --all reconciles every mapped lane plus the main ` +\n `scope, and is what runs when no target is given`\n );\n }\n\n // A lane argument, `--branch` and `--main` each select the single target; any two contradict.\n const selectors = [\n opts.lane && `a lane argument (\"${opts.lane}\")`,\n opts.branch && `--branch (\"${opts.branch}\")`,\n opts.main && '--main',\n ].filter((selector): selector is string => Boolean(selector));\n if (selectors.length > 1) {\n const winner = opts.main ? '--main' : `--branch (\"${opts.branch}\")`;\n throw new BitError(\n `${selectors[0]} cannot be combined with ${selectors.slice(1).join(' or with ')}: each selects ` +\n `the single target this run reconciles, and only ${winner} would have run — the rest would be ` +\n `silently dropped, leaving a run that reports success while a target you named was never visited`\n );\n }\n\n const cfg = resolveSyncConfig(this.deps.config.sync);\n const defaultScope = this.deps.workspace.defaultScope;\n const defaultBranch = await this.deps.ci.getDefaultBranchName();\n const mainLaneName = this.deps.lanes.getDefaultLaneId().name;\n\n // The executors force-checkout branches and remove untracked files; warn up front, naming the\n // files at stake, before an interactive run discards anything.\n const statusAtStart = await git.status().catch(() => undefined);\n const dirtyFiles = (statusAtStart?.files ?? []).map((file) => file.path).filter((file) => !isNonContentPath(file));\n if (opts.dryRun) assertCleanForDryRun(dirtyFiles);\n if (dirtyFiles.length) {\n this.deps.logger.consoleWarning(\n `the working tree has ${dirtyFiles.length} uncommitted change(s). \"bit ci sync\" force-checkouts branches ` +\n `and removes untracked files (except .bit/ and node_modules/), so these will be discarded: ` +\n `${dirtyFiles.slice(0, 10).join(', ')}${dirtyFiles.length > 10 ? ', …' : ''}`\n );\n }\n\n const remoteUrl = await git.remote(['get-url', 'origin']).catch(() => undefined);\n const { provider: gitHost, reason: noGitHostReason } = selectGitHostProvider(\n this.deps.ci.listGitHostProviders(),\n typeof remoteUrl === 'string' ? remoteUrl.trim() : undefined\n );\n if (gitHost) this.deps.logger.debug(`bit ci sync: using the \"${gitHost.name}\" git host provider`);\n // Warn once, up front — the executors' per-action lines can only say PRs were skipped, not why.\n else if (noGitHostReason) this.deps.logger.consoleWarning(noGitHostReason);\n\n const laneSync = new LaneSyncExecutor({\n lanes: this.deps.lanes,\n ci: this.deps.ci,\n logger: this.deps.logger,\n gitHost,\n cfg,\n defaultScope,\n });\n const mainSync = new MainSyncExecutor({\n checkout: this.deps.checkout,\n lanes: this.deps.lanes,\n workspace: this.deps.workspace,\n ci: this.deps.ci,\n logger: this.deps.logger,\n gitHost,\n cfg,\n defaultBranch,\n defaultScope,\n });\n\n if (opts.main) {\n return this.summarizeSync([await mainSync.syncMain({ dryRun: opts.dryRun })]);\n }\n\n if (opts.branch) {\n const branch = opts.branch;\n // Under the default `branchPrefix: ''` these two would resolve to the bogus lanes \"main\" /\n // \"bit-sync/main\"; both are reconciled by the main-scope path, never as lanes.\n if (branch === defaultBranch) {\n return `branch ${branch} is the default branch — reconcile it with \"bit ci sync --main\"; nothing to do`;\n }\n if (branch === cfg.mainSyncBranch) {\n return `branch ${branch} is the main sync branch maintained by this command; nothing to do`;\n }\n const laneName = syncableLaneNameForBranch(branch, cfg);\n if (!laneName) return `branch ${branch} does not map to a valid lane name; nothing to do`;\n const skipReason = this.laneNotSyncableReason(laneName, cfg, mainLaneName, defaultBranch);\n if (skipReason) return `${skipReason} (branch ${branch})`;\n // A branch name carries no scope, so this path can only resolve the lane against `defaultScope`;\n // resolving a foreign-hosted lane to the wrong scope is safe (no-op, never a deletion).\n return this.summarizeSync([\n await laneSync.syncLane({ hostScope: defaultScope, name: laneName }, { dryRun: opts.dryRun }),\n ]);\n }\n\n if (opts.lane) {\n // Every guard below is asked about the NAME: \"main\" is not a lane whichever scope hosts it, and\n // the `lanes` patterns match lane names, not lane ids.\n const target = parseLaneTarget(opts.lane, defaultScope);\n const skipReason = this.laneNotSyncableReason(target.name, cfg, mainLaneName, defaultBranch);\n if (skipReason) return skipReason;\n return this.summarizeSync([await laneSync.syncLane(target, { dryRun: opts.dryRun, explicitTarget: true })]);\n }\n\n // `--all` (also the no-arguments default): every mapped lane, then the main scope. Sequential on\n // purpose — the lanes share one workspace and one git checkout.\n const lines: string[] = [];\n const { lanes: lanesToSync, errors } = await this.listLanesToSync(cfg, mainLaneName, defaultBranch);\n lines.push(...errors);\n this.deps.logger.console(\n formatTitle(\n `Reconciling ${lanesToSync.length} mapped lane(s) of ${defaultScope}` +\n `${lanesToSync.length ? `: ${lanesToSync.join(', ')}` : ''}`\n )\n );\n for (const laneName of lanesToSync) {\n // Every enumerated target is hosted on `defaultScope` by construction; foreign-hosted lanes are\n // explicit-target only.\n // oxlint-disable-next-line no-await-in-loop\n lines.push(await laneSync.syncLane({ hostScope: defaultScope, name: laneName }, { dryRun: opts.dryRun }));\n }\n lines.push(await mainSync.syncMain({ dryRun: opts.dryRun }));\n return this.summarizeSync(lines);\n }\n\n /**\n * `bit ci sync --init` — one-command onboarding: scaffolds the two workflow files, adds the sync\n * config block to workspace.jsonc if missing, and prints the manual-steps checklist. Safe to\n * re-run: existing files are skipped, an existing config block is left alone; it never reconciles.\n */\n private async syncInit(): Promise<string> {\n const defaultBranch = await this.deps.ci.getDefaultBranchName();\n\n // Workflows belong to the repository, not the workspace: GitHub only discovers them at\n // `<repo-root>/.github/workflows`, and a bit workspace may be a subdirectory.\n const repoRoot = await gitRepoRoot();\n const scaffoldRoot = repoRoot ?? this.deps.workspace.path;\n if (!repoRoot) {\n this.deps.logger.consoleWarning(\n `could not resolve the git repository root (\"git rev-parse --show-toplevel\" failed — is this a git ` +\n `repository?). Writing the workflow files under the workspace instead: ${scaffoldRoot}. If that is ` +\n `not the repository root, GitHub will not discover them — move .github/workflows there by hand.`\n );\n }\n\n const fileOutcomes = scaffoldWorkflowFiles(scaffoldRoot, defaultBranch);\n // Report the path relative to where the user is standing, not to the workspace.\n const displayPath = (relativePath: string) => {\n const abs = path.join(scaffoldRoot, relativePath);\n const fromCwd = path.relative(process.cwd(), abs);\n return fromCwd && !fromCwd.startsWith('..') ? fromCwd : abs;\n };\n const fileLines = fileOutcomes.map((outcome) =>\n outcome.status === 'written'\n ? `wrote ${displayPath(outcome.relativePath)} (default branch: ${defaultBranch})`\n : `skipped ${displayPath(outcome.relativePath)} (already exists — bit ci sync --init never overwrites)`\n );\n\n const configAdded = await this.ensureSyncConfigBlock();\n const configLine = configAdded\n ? 'added \"teambit.git/ci\": { \"sync\": {} } to workspace.jsonc'\n : 'workspace.jsonc already configures \"teambit.git/ci\".sync — left untouched';\n\n const remoteUrl = await git.remote(['get-url', 'origin']).catch(() => undefined);\n const ownerRepo = deriveOwnerRepo(typeof remoteUrl === 'string' ? remoteUrl.trim() : undefined);\n\n const summary = ['bit ci sync --init', ...fileLines, configLine, renderInitChecklist(ownerRepo)].join('\\n');\n this.deps.logger.console(summary);\n return summary;\n }\n\n /**\n * Add `\"sync\": {}` under `\"teambit.git/ci\"` in workspace.jsonc if that key isn't there yet; returns\n * whether it wrote. The comment-preserving `WorkspaceConfig` API merges into existing\n * `teambit.git/ci` config rather than clobbering it.\n */\n private async ensureSyncConfigBlock(): Promise<boolean> {\n const wsConfig = this.deps.workspace.getWorkspaceConfig();\n const existing = wsConfig.extension(CiAspect.id, true) as CiWorkspaceConfig | undefined;\n if (existing?.sync) return false;\n wsConfig.setExtension(CiAspect.id, { sync: {} }, { mergeIntoExisting: true, ignoreVersion: true });\n await wsConfig.write({ reasonForChange: 'bit ci sync --init: add the sync config block' });\n return true;\n }\n\n /**\n * Why this lane name must not be handed to the lane executor, or undefined when it's syncable. The\n * mapped branch is checked too — the lane path must never write the two branches the main-scope\n * path owns.\n */\n private laneNotSyncableReason(\n laneName: string,\n cfg: Required<CiSyncConfig>,\n mainLaneName: string,\n defaultBranch: string\n ): string | undefined {\n if (laneName === mainLaneName) {\n return `\"${mainLaneName}\" is not a lane — reconcile the main scope with \"bit ci sync --main\"; nothing to do`;\n }\n const branch = laneNameToBranch(laneName, cfg);\n if (branch === defaultBranch) {\n return (\n `lane ${laneName} maps to the default branch ${branch} — reconcile it with \"bit ci sync --main\"; ` +\n `nothing to do`\n );\n }\n if (branch === cfg.mainSyncBranch) {\n return `lane ${laneName} maps to ${branch}, the main sync branch maintained by this command; nothing to do`;\n }\n if (!shouldSyncLane(laneName, cfg)) {\n return `lane ${laneName} is not matched by the sync config (lanes: ${JSON.stringify(cfg.lanes)}); nothing to do`;\n }\n return undefined;\n }\n\n /**\n * The lane names to reconcile on an `--all` run (sorted), plus one HALTED line per enumeration\n * failure. The list is the union of the remote's lanes AND the lane-mapped branches on `origin` —\n * a lane deleted on bit.cloud is gone from the first source, and only the branch side can make\n * `close-pr` fire for it. An enumeration failure is reported rather than thrown, so the half that\n * did enumerate is still reconciled while the run exits non-zero.\n */\n private async listLanesToSync(\n cfg: Required<CiSyncConfig>,\n mainLaneName: string,\n defaultBranch: string\n ): Promise<{ lanes: string[]; errors: string[] }> {\n if (!cfg.lanes.length) {\n this.deps.logger.console(\n formatWarningSummary('sync.lanes is empty — lane mirroring is disabled, reconciling the main scope only')\n );\n return { lanes: [], errors: [] };\n }\n const errors: string[] = [];\n const names = new Set<string>();\n const remote = this.deps.workspace.defaultScope;\n\n try {\n const lanes = await this.deps.lanes.getLanes({ remote });\n lanes.forEach((lane) => {\n const name = lane.id?.name ?? lane.name;\n if (name) names.add(name);\n });\n } catch (e: any) {\n const msg = e?.toString() ?? '';\n // A scope with no lanes at all: the remote answers \"not found\" rather than an empty list.\n if (msg.includes('was not found') || msg.includes('not found')) {\n this.deps.logger.console(\n formatWarningSummary(`No lanes found on ${remote} — reconciling lane-mapped branches and the main scope only`)\n );\n } else {\n errors.push(`${HALT_SUMMARY_PREFIX} lanes -> could not list the lanes of ${remote}: ${msg}`);\n }\n }\n\n try {\n for (const branch of await listRemoteBranches()) {\n // Reconciled by the main-scope path, never as lanes — under the default `branchPrefix: ''`\n // they would otherwise resolve to the bogus lanes \"main\" / \"bit-sync/main\".\n if (branch === defaultBranch || branch === cfg.mainSyncBranch) continue;\n // Ordinary developer branches are skipped at debug level, never as a summary line.\n const laneName = syncableLaneNameForBranch(branch, cfg);\n if (!laneName) {\n this.deps.logger.debug(\n `bit ci sync: branch \"${branch}\" does not map to a name any lane could have ` +\n `(mapped to \"${branchToLaneName(branch, cfg) ?? '<not lane-mapped>'}\") — skipping it`\n );\n continue;\n }\n names.add(laneName);\n }\n } catch (e: any) {\n errors.push(\n `${HALT_SUMMARY_PREFIX} lanes -> could not list the branches of \"origin\", so a lane deleted on ` +\n `bit.cloud may have kept an orphan branch and an open PR: ${e?.message || e}`\n );\n }\n\n const lanes = [...names]\n .filter((name) => name !== mainLaneName)\n .filter((name) => shouldSyncLane(name, cfg))\n .sort();\n return { lanes, errors };\n }\n\n /**\n * Join the per-target summary lines, and turn any halt into a non-zero exit — the executors never\n * throw, so this is the single place \"needs a human\" becomes visible to CI. `BitError` rather than\n * `Error`: bit reports a plain `Error` as an internal failure (stack trace, Sentry FATAL).\n */\n private summarizeSync(lines: string[]): string {\n const summary = lines.join('\\n');\n const halted = lines.filter((line) => line.startsWith(HALT_SUMMARY_PREFIX));\n if (halted.length) {\n throw new BitError(`bit ci sync could not reconcile ${halted.length} target(s):\\n${summary}`);\n }\n // A refusal is not a halt: the repository is healthy, the reconciler simply will not do what was\n // asked — exit non-zero saying that, rather than reporting a sync conflict.\n const refusals = lines.filter((line) => line.startsWith(REFUSED_SUMMARY_PREFIX));\n if (refusals.length) {\n throw new BitError(refusals.map((line) => line.slice(REFUSED_SUMMARY_PREFIX.length).trim()).join('\\n'));\n }\n return summary;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cli","data","require","_fs","_interopRequireDefault","path","_interopRequireWildcard","_bitError","_ci","_git","_syncConfig","_laneSyncExecutor","_mainSyncExecutor","_gitHostProvider","_gitOps","_initScaffold","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","assertCleanForDryRun","dirtyFiles","named","slice","join","BitError","SyncOrchestrator","constructor","deps","sync","opts","init","lane","branch","all","main","dryRun","syncInit","narrower","undefined","selectors","selector","Boolean","winner","cfg","resolveSyncConfig","config","defaultScope","workspace","defaultBranch","ci","getDefaultBranchName","mainLaneName","lanes","getDefaultLaneId","name","statusAtStart","git","status","catch","files","map","file","isNonContentPath","logger","consoleWarning","remoteUrl","remote","provider","gitHost","reason","noGitHostReason","selectGitHostProvider","listGitHostProviders","trim","debug","laneSync","LaneSyncExecutor","mainSync","MainSyncExecutor","checkout","summarizeSync","syncMain","mainSyncBranch","laneName","syncableLaneNameForBranch","skipReason","laneNotSyncableReason","syncLane","hostScope","target","parseLaneTarget","explicitTarget","lines","lanesToSync","errors","listLanesToSync","console","formatTitle","origin","detectedBranch","detectDefaultBranchName","chooseInitDefaultBranch","currentBranchOr","repoRoot","gitRepoRoot","scaffoldRoot","realPath","p","fs","existsSync","realpathSync","wsDir","relative","split","sep","fileOutcomes","scaffoldWorkflowFiles","startsWith","displayPath","abs","fromCwd","process","cwd","isAbsolute","configAdded","ensureSyncConfigBlock","repoHasCommits","raw","then","out","handled","outcome","relativePath","toStage","ignored","isIgnored","changed","renderInitReport","scopeId","ownerRepo","deriveOwnerRepo","originUrl","defaultBranchGuessed","repoRootFromCwd","inGitRepo","configDisplayPath","fallback","current","isValidGitBranchName","wsConfig","getWorkspaceConfig","existing","extension","CiAspect","id","setExtension","mergeIntoExisting","ignoreVersion","write","reasonForChange","laneNameToBranch","shouldSyncLane","JSON","stringify","formatWarningSummary","names","Set","getLanes","add","msg","toString","includes","HALT_SUMMARY_PREFIX","listRemoteBranches","branchToLaneName","message","sort","summary","halted","line","refusals","REFUSED_SUMMARY_PREFIX","exports"],"sources":["sync-orchestrator.ts"],"sourcesContent":["import { formatTitle, formatWarningSummary } from '@teambit/cli';\nimport fs from 'fs';\nimport * as path from 'path';\nimport { BitError } from '@teambit/bit-error';\nimport type { Logger } from '@teambit/logger';\nimport type { Workspace } from '@teambit/workspace';\nimport type { LanesMain } from '@teambit/lanes';\nimport type { CheckoutMain } from '@teambit/checkout';\nimport { CiAspect } from '../ci.aspect';\nimport type { CiMain, CiWorkspaceConfig } from '../ci.main.runtime';\nimport { git } from '../git';\nimport type { CiSyncConfig } from './sync-config';\nimport {\n branchToLaneName,\n isValidGitBranchName,\n laneNameToBranch,\n parseLaneTarget,\n resolveSyncConfig,\n shouldSyncLane,\n syncableLaneNameForBranch,\n} from './sync-config';\nimport { HALT_SUMMARY_PREFIX, REFUSED_SUMMARY_PREFIX, LaneSyncExecutor } from './lane-sync-executor';\nimport { MainSyncExecutor } from './main-sync-executor';\nimport { selectGitHostProvider } from './git-host-provider';\nimport { gitRepoRoot, isNonContentPath, listRemoteBranches } from './git-ops';\nimport { chooseInitDefaultBranch, deriveOwnerRepo, renderInitReport, scaffoldWorkflowFiles } from './init-scaffold';\n\n/**\n * Refuse a `--dry-run` whose plan would be computed by force-checking-out branches over uncommitted\n * work: the main-scope drift is a diff, so the tree IS written before the dry-run return. A dry run\n * promises to write nothing, so it may not discard either — with a clean tree the write-then-restore\n * loses nothing.\n */\nexport function assertCleanForDryRun(dirtyFiles: string[]): void {\n if (!dirtyFiles.length) return;\n const named = `${dirtyFiles.slice(0, 10).join(', ')}${dirtyFiles.length > 10 ? ', …' : ''}`;\n throw new BitError(\n `bit ci sync --dry-run refuses to run: the working tree has ${dirtyFiles.length} uncommitted change(s), ` +\n `and computing the plan force-checkouts branches and removes untracked files, which would discard ` +\n `them. Commit or stash them first: ${named}`\n );\n}\n\n/** Everything the sync orchestration needs from `CiMain`, passed explicitly. */\nexport type SyncOrchestratorDeps = {\n ci: CiMain;\n workspace: Workspace;\n logger: Logger;\n lanes: LanesMain;\n checkout: CheckoutMain;\n config: CiWorkspaceConfig;\n};\n\n/**\n * Routing and aggregation for `bit ci sync`: decides which targets a run visits and how their\n * summaries combine. What reconciling a target means lives in the two executors, both stateless and\n * idempotent, so the trigger only ever decides when the reconciler runs.\n */\nexport class SyncOrchestrator {\n constructor(private deps: SyncOrchestratorDeps) {}\n\n /**\n * `bit ci sync` — reconcile Bit lanes and the main scope with git branches and pull requests.\n * Returns the per-target summary lines; throws the joined summary after the loop when any target\n * halted or was refused, so CI exits non-zero while every other target was still attempted. A skip\n * is neither — it reports itself and leaves the run green.\n */\n async sync(\n opts: { lane?: string; branch?: string; all?: boolean; main?: boolean; dryRun?: boolean; init?: boolean } = {}\n ): Promise<string> {\n if (opts.init) {\n if (opts.lane || opts.branch || opts.all || opts.main || opts.dryRun) {\n throw new BitError(\n 'bit ci sync --init cannot be combined with a lane argument, --branch, --all, --main or ' +\n '--dry-run: it only scaffolds onboarding files (workflows + workspace.jsonc config) and exits ' +\n '— it never reconciles'\n );\n }\n return this.syncInit();\n }\n\n // Refuse contradictory flag combinations rather than silently letting one target win.\n const narrower = opts.lane\n ? `a lane argument (\"${opts.lane}\")`\n : (opts.branch && `--branch (\"${opts.branch}\")`) || (opts.main && '--main') || undefined;\n if (opts.all && narrower) {\n throw new BitError(\n `--all cannot be combined with ${narrower}: --all reconciles every mapped lane plus the main ` +\n `scope, and is what runs when no target is given`\n );\n }\n\n // A lane argument, `--branch` and `--main` each select the single target; any two contradict.\n const selectors = [\n opts.lane && `a lane argument (\"${opts.lane}\")`,\n opts.branch && `--branch (\"${opts.branch}\")`,\n opts.main && '--main',\n ].filter((selector): selector is string => Boolean(selector));\n if (selectors.length > 1) {\n const winner = opts.main ? '--main' : `--branch (\"${opts.branch}\")`;\n throw new BitError(\n `${selectors[0]} cannot be combined with ${selectors.slice(1).join(' or with ')}: each selects ` +\n `the single target this run reconciles, and only ${winner} would have run — the rest would be ` +\n `silently dropped, leaving a run that reports success while a target you named was never visited`\n );\n }\n\n const cfg = resolveSyncConfig(this.deps.config.sync);\n const defaultScope = this.deps.workspace.defaultScope;\n const defaultBranch = await this.deps.ci.getDefaultBranchName();\n const mainLaneName = this.deps.lanes.getDefaultLaneId().name;\n\n // The executors force-checkout branches and remove untracked files; warn up front, naming the\n // files at stake, before an interactive run discards anything.\n const statusAtStart = await git.status().catch(() => undefined);\n const dirtyFiles = (statusAtStart?.files ?? []).map((file) => file.path).filter((file) => !isNonContentPath(file));\n if (opts.dryRun) assertCleanForDryRun(dirtyFiles);\n if (dirtyFiles.length) {\n this.deps.logger.consoleWarning(\n `the working tree has ${dirtyFiles.length} uncommitted change(s). \"bit ci sync\" force-checkouts branches ` +\n `and removes untracked files (except .bit/ and node_modules/), so these will be discarded: ` +\n `${dirtyFiles.slice(0, 10).join(', ')}${dirtyFiles.length > 10 ? ', …' : ''}`\n );\n }\n\n const remoteUrl = await git.remote(['get-url', 'origin']).catch(() => undefined);\n const { provider: gitHost, reason: noGitHostReason } = selectGitHostProvider(\n this.deps.ci.listGitHostProviders(),\n typeof remoteUrl === 'string' ? remoteUrl.trim() : undefined\n );\n if (gitHost) this.deps.logger.debug(`bit ci sync: using the \"${gitHost.name}\" git host provider`);\n // Warn once, up front — the executors' per-action lines can only say PRs were skipped, not why.\n else if (noGitHostReason) this.deps.logger.consoleWarning(noGitHostReason);\n\n const laneSync = new LaneSyncExecutor({\n lanes: this.deps.lanes,\n ci: this.deps.ci,\n logger: this.deps.logger,\n gitHost,\n cfg,\n defaultScope,\n });\n const mainSync = new MainSyncExecutor({\n checkout: this.deps.checkout,\n lanes: this.deps.lanes,\n workspace: this.deps.workspace,\n ci: this.deps.ci,\n logger: this.deps.logger,\n gitHost,\n cfg,\n defaultBranch,\n defaultScope,\n });\n\n if (opts.main) {\n return this.summarizeSync([await mainSync.syncMain({ dryRun: opts.dryRun })]);\n }\n\n if (opts.branch) {\n const branch = opts.branch;\n // Under the default `branchPrefix: ''` these two would resolve to the bogus lanes \"main\" /\n // \"bit-sync/main\"; both are reconciled by the main-scope path, never as lanes.\n if (branch === defaultBranch) {\n return `branch ${branch} is the default branch — reconcile it with \"bit ci sync --main\"; nothing to do`;\n }\n if (branch === cfg.mainSyncBranch) {\n return `branch ${branch} is the main sync branch maintained by this command; nothing to do`;\n }\n const laneName = syncableLaneNameForBranch(branch, cfg);\n if (!laneName) return `branch ${branch} does not map to a valid lane name; nothing to do`;\n const skipReason = this.laneNotSyncableReason(laneName, cfg, mainLaneName, defaultBranch);\n if (skipReason) return `${skipReason} (branch ${branch})`;\n // A branch name carries no scope, so this path can only resolve the lane against `defaultScope`;\n // resolving a foreign-hosted lane to the wrong scope is safe (no-op, never a deletion).\n return this.summarizeSync([\n await laneSync.syncLane({ hostScope: defaultScope, name: laneName }, { dryRun: opts.dryRun }),\n ]);\n }\n\n if (opts.lane) {\n // Every guard below is asked about the NAME: \"main\" is not a lane whichever scope hosts it, and\n // the `lanes` patterns match lane names, not lane ids.\n const target = parseLaneTarget(opts.lane, defaultScope);\n const skipReason = this.laneNotSyncableReason(target.name, cfg, mainLaneName, defaultBranch);\n if (skipReason) return skipReason;\n return this.summarizeSync([await laneSync.syncLane(target, { dryRun: opts.dryRun, explicitTarget: true })]);\n }\n\n // `--all` (also the no-arguments default): every mapped lane, then the main scope. Sequential on\n // purpose — the lanes share one workspace and one git checkout.\n const lines: string[] = [];\n const { lanes: lanesToSync, errors } = await this.listLanesToSync(cfg, mainLaneName, defaultBranch);\n lines.push(...errors);\n this.deps.logger.console(\n formatTitle(\n `Reconciling ${lanesToSync.length} mapped lane(s) of ${defaultScope}` +\n `${lanesToSync.length ? `: ${lanesToSync.join(', ')}` : ''}`\n )\n );\n for (const laneName of lanesToSync) {\n // Every enumerated target is hosted on `defaultScope` by construction; foreign-hosted lanes are\n // explicit-target only.\n // oxlint-disable-next-line no-await-in-loop\n lines.push(await laneSync.syncLane({ hostScope: defaultScope, name: laneName }, { dryRun: opts.dryRun }));\n }\n lines.push(await mainSync.syncMain({ dryRun: opts.dryRun }));\n return this.summarizeSync(lines);\n }\n\n /**\n * `bit ci sync --init` — one-command onboarding: scaffolds the two workflow files, adds the sync\n * config block to workspace.jsonc if missing, and returns the report of the steps left. Safe to\n * re-run: existing files are skipped, an existing config block is left alone; it never reconciles.\n */\n private async syncInit(): Promise<string> {\n const remoteUrl = await git.remote(['get-url', 'origin']).catch(() => undefined);\n const origin = typeof remoteUrl === 'string' ? remoteUrl.trim() : undefined;\n // The remote knows the default branch. When it can't answer (no origin, a repository not pushed\n // yet, a server out of reach), guess: the checked-out branch when it's main or master, else main.\n // A feature branch is never the guess: it would go into the workflows' branch filters.\n const detectedBranch = await this.deps.ci.detectDefaultBranchName();\n const defaultBranch = chooseInitDefaultBranch(detectedBranch, await this.currentBranchOr(''));\n\n // Workflows belong to the repository, not the workspace: GitHub only discovers them at\n // `<repo-root>/.github/workflows`, and a bit workspace may be a subdirectory.\n const repoRoot = await gitRepoRoot();\n const scaffoldRoot = repoRoot ?? this.deps.workspace.path;\n if (!repoRoot) {\n this.deps.logger.consoleWarning(\n `could not resolve the git repository root (\"git rev-parse --show-toplevel\" failed — is this a git ` +\n `repository?). Writing the workflow files under the workspace instead: ${scaffoldRoot}. If that is ` +\n `not the repository root, GitHub will not discover them — move .github/workflows there by hand.`\n );\n }\n\n // A workspace below the repository root: the actions must chdir into it (`ws-dir`).\n // Real paths: git reports the root with symlinks resolved (macOS `/tmp` is `/private/tmp`).\n const realPath = (p: string) => (fs.existsSync(p) ? fs.realpathSync(p) : p);\n const wsDir = path.relative(realPath(scaffoldRoot), realPath(this.deps.workspace.path)).split(path.sep).join('/');\n const fileOutcomes = scaffoldWorkflowFiles(\n scaffoldRoot,\n defaultBranch,\n wsDir && !wsDir.startsWith('..') ? wsDir : undefined\n );\n // Report the path relative to where the user is standing (`../../.github/...` from a nested\n // workspace), not to the workspace, so it is right to paste. Absolute only across drives.\n const displayPath = (abs: string) => {\n const fromCwd = path.relative(process.cwd(), abs);\n return fromCwd && !path.isAbsolute(fromCwd) ? fromCwd : abs;\n };\n const configAdded = await this.ensureSyncConfigBlock();\n // No commit yet: the first commit must take the whole workspace, not only the files --init wrote.\n const repoHasCommits = await git\n .raw(['rev-parse', '--verify', '--quiet', 'HEAD'])\n .then((out) => out.trim().length > 0)\n .catch(() => false);\n\n // What step 1 must stage: of the files --init handles, those git shows as new or changed. One that\n // .gitignore matches is listed apart, because `git add` refuses an ignored path named on the command line.\n const handled = [\n ...fileOutcomes.map((outcome) => path.join(scaffoldRoot, outcome.relativePath)),\n path.join(this.deps.workspace.path, 'workspace.jsonc'),\n ];\n const toStage: string[] = [];\n const ignored: string[] = [];\n if (repoRoot) {\n for (const abs of handled) {\n // Ignored first: `git status` hides an ignored file, so it would look unchanged. `check-ignore`\n // skips tracked files and prints the path only when it is ignored (it exits 1 otherwise). It\n // needs no commit, and the first commit's `git add -A` skips an ignored file too.\n // oxlint-disable-next-line no-await-in-loop\n const isIgnored = await git\n .raw(['check-ignore', '--', abs])\n .then((out) => out.trim().length > 0)\n .catch(() => false);\n if (isIgnored) {\n ignored.push(displayPath(abs));\n continue;\n }\n // the first commit stages everything with `git add -A`\n if (!repoHasCommits) continue;\n // oxlint-disable-next-line no-await-in-loop\n const changed = await git\n .raw(['status', '--porcelain', '--untracked-files=all', '--', abs])\n .then((out) => out.trim().length > 0)\n .catch(() => true);\n if (changed) toStage.push(displayPath(abs));\n }\n }\n\n // Returned, not logged: the command prints what `report()` returns.\n return renderInitReport({\n scopeId: this.deps.workspace.defaultScope,\n ownerRepo: deriveOwnerRepo(origin),\n originUrl: origin,\n defaultBranch,\n defaultBranchGuessed: !detectedBranch,\n // the workflows live at the repository root, which may be above the workspace\n repoRootFromCwd: path.relative(process.cwd(), scaffoldRoot) || '.',\n repoHasCommits,\n inGitRepo: Boolean(repoRoot),\n files: fileOutcomes.map((outcome) => ({\n ...outcome,\n displayPath: displayPath(path.join(scaffoldRoot, outcome.relativePath)),\n })),\n configDisplayPath: displayPath(path.join(this.deps.workspace.path, 'workspace.jsonc')),\n configAdded,\n ...(repoRoot ? { toStage, ignored } : {}),\n });\n }\n\n /** The checked-out branch when it is a usable name (not detached, not option-like), else `fallback`. */\n private async currentBranchOr(fallback: string): Promise<string> {\n const current = await git\n .raw(['branch', '--show-current'])\n .then((out) => out.trim())\n .catch(() => '');\n return current && isValidGitBranchName(current) ? current : fallback;\n }\n\n /**\n * Add `\"sync\": {}` under `\"teambit.git/ci\"` in workspace.jsonc if that key isn't there yet; returns\n * whether it wrote. The comment-preserving `WorkspaceConfig` API merges into existing\n * `teambit.git/ci` config rather than clobbering it.\n */\n private async ensureSyncConfigBlock(): Promise<boolean> {\n const wsConfig = this.deps.workspace.getWorkspaceConfig();\n const existing = wsConfig.extension(CiAspect.id, true) as CiWorkspaceConfig | undefined;\n if (existing?.sync) return false;\n wsConfig.setExtension(CiAspect.id, { sync: {} }, { mergeIntoExisting: true, ignoreVersion: true });\n await wsConfig.write({ reasonForChange: 'bit ci sync --init: add the sync config block' });\n return true;\n }\n\n /**\n * Why this lane name must not be handed to the lane executor, or undefined when it's syncable. The\n * mapped branch is checked too — the lane path must never write the two branches the main-scope\n * path owns.\n */\n private laneNotSyncableReason(\n laneName: string,\n cfg: Required<CiSyncConfig>,\n mainLaneName: string,\n defaultBranch: string\n ): string | undefined {\n if (laneName === mainLaneName) {\n return `\"${mainLaneName}\" is not a lane — reconcile the main scope with \"bit ci sync --main\"; nothing to do`;\n }\n const branch = laneNameToBranch(laneName, cfg);\n if (branch === defaultBranch) {\n return (\n `lane ${laneName} maps to the default branch ${branch} — reconcile it with \"bit ci sync --main\"; ` +\n `nothing to do`\n );\n }\n if (branch === cfg.mainSyncBranch) {\n return `lane ${laneName} maps to ${branch}, the main sync branch maintained by this command; nothing to do`;\n }\n if (!shouldSyncLane(laneName, cfg)) {\n return `lane ${laneName} is not matched by the sync config (lanes: ${JSON.stringify(cfg.lanes)}); nothing to do`;\n }\n return undefined;\n }\n\n /**\n * The lane names to reconcile on an `--all` run (sorted), plus one HALTED line per enumeration\n * failure. The list is the union of the remote's lanes AND the lane-mapped branches on `origin` —\n * a lane deleted on bit.cloud is gone from the first source, and only the branch side can make\n * `close-pr` fire for it. An enumeration failure is reported rather than thrown, so the half that\n * did enumerate is still reconciled while the run exits non-zero.\n */\n private async listLanesToSync(\n cfg: Required<CiSyncConfig>,\n mainLaneName: string,\n defaultBranch: string\n ): Promise<{ lanes: string[]; errors: string[] }> {\n if (!cfg.lanes.length) {\n this.deps.logger.console(\n formatWarningSummary('sync.lanes is empty — lane mirroring is disabled, reconciling the main scope only')\n );\n return { lanes: [], errors: [] };\n }\n const errors: string[] = [];\n const names = new Set<string>();\n const remote = this.deps.workspace.defaultScope;\n\n try {\n const lanes = await this.deps.lanes.getLanes({ remote });\n lanes.forEach((lane) => {\n const name = lane.id?.name ?? lane.name;\n if (name) names.add(name);\n });\n } catch (e: any) {\n const msg = e?.toString() ?? '';\n // A scope with no lanes at all: the remote answers \"not found\" rather than an empty list.\n if (msg.includes('was not found') || msg.includes('not found')) {\n this.deps.logger.console(\n formatWarningSummary(`No lanes found on ${remote} — reconciling lane-mapped branches and the main scope only`)\n );\n } else {\n errors.push(`${HALT_SUMMARY_PREFIX} lanes -> could not list the lanes of ${remote}: ${msg}`);\n }\n }\n\n try {\n for (const branch of await listRemoteBranches()) {\n // Reconciled by the main-scope path, never as lanes — under the default `branchPrefix: ''`\n // they would otherwise resolve to the bogus lanes \"main\" / \"bit-sync/main\".\n if (branch === defaultBranch || branch === cfg.mainSyncBranch) continue;\n // Ordinary developer branches are skipped at debug level, never as a summary line.\n const laneName = syncableLaneNameForBranch(branch, cfg);\n if (!laneName) {\n this.deps.logger.debug(\n `bit ci sync: branch \"${branch}\" does not map to a name any lane could have ` +\n `(mapped to \"${branchToLaneName(branch, cfg) ?? '<not lane-mapped>'}\") — skipping it`\n );\n continue;\n }\n names.add(laneName);\n }\n } catch (e: any) {\n errors.push(\n `${HALT_SUMMARY_PREFIX} lanes -> could not list the branches of \"origin\", so a lane deleted on ` +\n `bit.cloud may have kept an orphan branch and an open PR: ${e?.message || e}`\n );\n }\n\n const lanes = [...names]\n .filter((name) => name !== mainLaneName)\n .filter((name) => shouldSyncLane(name, cfg))\n .sort();\n return { lanes, errors };\n }\n\n /**\n * Join the per-target summary lines, and turn any halt into a non-zero exit — the executors never\n * throw, so this is the single place \"needs a human\" becomes visible to CI. `BitError` rather than\n * `Error`: bit reports a plain `Error` as an internal failure (stack trace, Sentry FATAL).\n */\n private summarizeSync(lines: string[]): string {\n const summary = lines.join('\\n');\n const halted = lines.filter((line) => line.startsWith(HALT_SUMMARY_PREFIX));\n if (halted.length) {\n throw new BitError(`bit ci sync could not reconcile ${halted.length} target(s):\\n${summary}`);\n }\n // A refusal is not a halt: the repository is healthy, the reconciler simply will not do what was\n // asked — exit non-zero saying that, rather than reporting a sync conflict.\n const refusals = lines.filter((line) => line.startsWith(REFUSED_SUMMARY_PREFIX));\n if (refusals.length) {\n throw new BitError(refusals.map((line) => line.slice(REFUSED_SUMMARY_PREFIX.length).trim()).join('\\n'));\n }\n return summary;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/ci",
3
- "version": "1.0.636",
3
+ "version": "1.0.638",
4
4
  "homepage": "https://bit.cloud/teambit/git/ci",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.git",
8
8
  "name": "ci",
9
- "version": "1.0.636"
9
+ "version": "1.0.638"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -16,34 +16,34 @@
16
16
  "simple-git": "^3.28.0",
17
17
  "fs-extra": "10.0.0",
18
18
  "@teambit/harmony": "0.4.12",
19
- "@teambit/logger": "0.0.1499",
19
+ "@teambit/cli": "0.0.1417",
20
+ "@teambit/logger": "0.0.1500",
20
21
  "@teambit/component-id": "1.2.5",
21
- "@teambit/harmony.modules.concurrency": "0.0.50",
22
+ "@teambit/component.modules.merge-helper": "0.0.130",
23
+ "@teambit/component.snap-distance": "0.0.187",
24
+ "@teambit/dependency-resolver": "1.0.1227",
25
+ "@teambit/harmony.modules.concurrency": "0.0.51",
22
26
  "@teambit/harmony.modules.runtimes": "0.0.4",
23
27
  "@teambit/lane-id": "0.0.312",
28
+ "@teambit/legacy.consumer-component": "0.0.187",
29
+ "@teambit/legacy.scope-api": "0.0.241",
30
+ "@teambit/objects": "0.0.720",
24
31
  "@teambit/toolbox.promise.map-pool": "0.0.24",
25
32
  "@teambit/toolbox.string.random": "0.0.22",
26
33
  "@teambit/bit-error": "0.0.404",
27
- "@teambit/legacy.constants": "0.0.49",
34
+ "@teambit/legacy.constants": "0.0.50",
35
+ "@teambit/legacy.scope": "0.0.186",
36
+ "@teambit/legacy.bit-map": "0.0.243",
28
37
  "@teambit/toolbox.crypto.sha1": "0.0.24",
29
- "@teambit/cli": "0.0.1416",
30
- "@teambit/workspace": "1.0.1234",
31
- "@teambit/builder": "1.0.1234",
32
- "@teambit/checkout": "1.0.1238",
33
- "@teambit/component.modules.merge-helper": "0.0.129",
34
- "@teambit/component.snap-distance": "0.0.186",
35
- "@teambit/config-merger": "0.0.1101",
36
- "@teambit/dependency-resolver": "1.0.1226",
37
- "@teambit/export": "1.0.1236",
38
- "@teambit/importer": "1.0.1234",
39
- "@teambit/lanes": "1.0.1259",
40
- "@teambit/legacy.consumer-component": "0.0.186",
41
- "@teambit/legacy.scope-api": "0.0.240",
42
- "@teambit/objects": "0.0.719",
43
- "@teambit/snapping": "1.0.1236",
44
- "@teambit/status": "1.0.1263",
45
- "@teambit/legacy.scope": "0.0.185",
46
- "@teambit/legacy.bit-map": "0.0.242"
38
+ "@teambit/workspace": "1.0.1236",
39
+ "@teambit/builder": "1.0.1236",
40
+ "@teambit/checkout": "1.0.1240",
41
+ "@teambit/config-merger": "0.0.1103",
42
+ "@teambit/export": "1.0.1238",
43
+ "@teambit/importer": "1.0.1236",
44
+ "@teambit/lanes": "1.0.1261",
45
+ "@teambit/snapping": "1.0.1238",
46
+ "@teambit/status": "1.0.1265"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/lodash": "4.14.165",