@teambit/ci 1.0.79 → 1.0.80

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.
@@ -22,6 +22,7 @@ type Options = {
22
22
  versionsFile?: string;
23
23
  autoMergeResolve?: MergeStrategy;
24
24
  forceTheirs?: boolean;
25
+ laneName?: string;
25
26
  };
26
27
 
27
28
  export class CiMergeCmd implements Command {
@@ -56,6 +57,7 @@ export class CiMergeCmd implements Command {
56
57
  'in case of merge conflict during checkout, resolve according to the provided strategy: [ours, theirs, manual]',
57
58
  ],
58
59
  ['', 'force-theirs', 'do not merge during checkout, just overwrite with incoming files'],
60
+ ['', 'lane-name <name>', 'specify the lane name to delete after merge (auto-detected if not provided)'],
59
61
  ];
60
62
 
61
63
  constructor(
@@ -98,6 +100,7 @@ export class CiMergeCmd implements Command {
98
100
  versionsFile: options.versionsFile,
99
101
  autoMergeResolve: options.autoMergeResolve,
100
102
  forceTheirs: options.forceTheirs,
103
+ laneName: options.laneName,
101
104
  });
102
105
  }
103
106
  }
@@ -45,9 +45,7 @@ export class CiPrCmd implements Command {
45
45
  if (!currentBranch) {
46
46
  throw new Error('Failed to get branch name');
47
47
  }
48
- // Sanitize branch name to make it valid for Bit lane IDs by replacing slashes and dots with dashes
49
- const sanitizedBranch = currentBranch.replace(/[/.]/g, '-');
50
- laneIdStr = `${this.workspace.defaultScope}/${sanitizedBranch}`;
48
+ laneIdStr = this.ci.convertBranchToLaneId(currentBranch);
51
49
  }
52
50
 
53
51
  if (options.message) {
@@ -97,6 +97,16 @@ export declare class CiMain {
97
97
  CheckoutMain
98
98
  ], config: CiWorkspaceConfig): Promise<CiMain>;
99
99
  getBranchName(): Promise<string>;
100
+ /**
101
+ * Converts a branch name to a lane ID string using Bit's naming conventions.
102
+ * Sanitizes branch name by replacing slashes and dots with dashes, then
103
+ * prefixes with the workspace's default scope.
104
+ *
105
+ * @param branchName - The git branch name to convert
106
+ * @returns Lane ID in format: {defaultScope}/{sanitizedBranch}
107
+ * @example convertBranchToLaneId("feature/new-component") => "my-scope/feature-new-component"
108
+ */
109
+ convertBranchToLaneId(branchName: string): string;
100
110
  getDefaultBranchName(): Promise<string>;
101
111
  getGitCommitMessage(): Promise<string | null>;
102
112
  private parseVersionBumpFromCommit;
@@ -113,7 +123,7 @@ export declare class CiMain {
113
123
  build: boolean | undefined;
114
124
  strict: boolean | undefined;
115
125
  }): Promise<"No changes detected, nothing to snap" | undefined>;
116
- mergePr({ message: argMessage, build, strict, releaseType, preReleaseId, incrementBy, explicitVersionBump, verbose, versionsFile, autoMergeResolve, forceTheirs, }: {
126
+ mergePr({ message: argMessage, build, strict, releaseType, preReleaseId, incrementBy, explicitVersionBump, verbose, versionsFile, autoMergeResolve, forceTheirs, laneName, }: {
117
127
  message?: string;
118
128
  build?: boolean;
119
129
  strict?: boolean;
@@ -125,10 +135,20 @@ export declare class CiMain {
125
135
  versionsFile?: string;
126
136
  autoMergeResolve?: MergeStrategy;
127
137
  forceTheirs?: boolean;
138
+ laneName?: string;
128
139
  }): Promise<{
129
140
  code: number;
130
141
  data: string;
131
142
  }>;
143
+ /**
144
+ * Performs lane cleanup by attempting to detect and delete the source lane
145
+ * after a successful merge, even when running on the main branch
146
+ */
147
+ private performLaneCleanup;
148
+ /**
149
+ * Archives (deletes) a lane with proper error handling and logging
150
+ */
151
+ private archiveLane;
132
152
  /**
133
153
  * Auto-detect version bump from commit messages if no explicit version bump was provided
134
154
  */
@@ -137,6 +137,13 @@ function _componentId() {
137
137
  };
138
138
  return data;
139
139
  }
140
+ function _sourceBranchDetector() {
141
+ const data = require("./source-branch-detector");
142
+ _sourceBranchDetector = function () {
143
+ return data;
144
+ };
145
+ return data;
146
+ }
140
147
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
141
148
  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; }
142
149
  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; }
@@ -174,6 +181,21 @@ class CiMain {
174
181
  throw new Error(`Unable to read branch: ${e.toString()}`);
175
182
  }
176
183
  }
184
+
185
+ /**
186
+ * Converts a branch name to a lane ID string using Bit's naming conventions.
187
+ * Sanitizes branch name by replacing slashes and dots with dashes, then
188
+ * prefixes with the workspace's default scope.
189
+ *
190
+ * @param branchName - The git branch name to convert
191
+ * @returns Lane ID in format: {defaultScope}/{sanitizedBranch}
192
+ * @example convertBranchToLaneId("feature/new-component") => "my-scope/feature-new-component"
193
+ */
194
+ convertBranchToLaneId(branchName) {
195
+ // Sanitize branch name to make it valid for Bit lane IDs by replacing slashes and dots with dashes
196
+ const sanitizedBranch = branchName.replace(/[/.]/g, '-');
197
+ return `${this.workspace.defaultScope}/${sanitizedBranch}`;
198
+ }
177
199
  async getDefaultBranchName() {
178
200
  try {
179
201
  // Try to get the default branch from git symbolic-ref
@@ -438,7 +460,8 @@ class CiMain {
438
460
  verbose,
439
461
  versionsFile,
440
462
  autoMergeResolve,
441
- forceTheirs
463
+ forceTheirs,
464
+ laneName
442
465
  }) {
443
466
  const message = argMessage || (await this.getGitCommitMessage());
444
467
  if (!message) {
@@ -592,25 +615,79 @@ class CiMain {
592
615
  this.logger.console(_chalk().default.yellow('No components were tagged, skipping export and git operations'));
593
616
  }
594
617
  this.logger.console(_chalk().default.green('Merged PR'));
618
+
619
+ // Enhanced lane cleanup logic
620
+ await this.performLaneCleanup(currentLane, laneName);
621
+ return {
622
+ code: 0,
623
+ data: ''
624
+ };
625
+ }
626
+
627
+ /**
628
+ * Performs lane cleanup by attempting to detect and delete the source lane
629
+ * after a successful merge, even when running on the main branch
630
+ */
631
+ async performLaneCleanup(currentLane, explicitLaneName) {
632
+ this.logger.console('🗑️ Lane Cleanup');
633
+
634
+ // If we already have a current lane, use it
595
635
  if (currentLane) {
596
- this.logger.console('🗑️ Lane Cleanup');
636
+ this.logger.console(_chalk().default.blue(`Found current lane: ${currentLane.name}`));
597
637
  const laneId = currentLane.id();
598
- this.logger.console(_chalk().default.blue(`Archiving lane ${laneId}`));
638
+ await this.archiveLane(laneId, currentLane.name);
639
+ return;
640
+ }
641
+
642
+ // If no current lane but explicit lane name provided, try to delete it
643
+ if (explicitLaneName) {
644
+ this.logger.console(_chalk().default.blue(`Using explicitly provided lane name: ${explicitLaneName}`));
645
+ try {
646
+ const laneId = await this.lanes.parseLaneId(explicitLaneName);
647
+ await this.archiveLane(laneId, explicitLaneName);
648
+ return;
649
+ } catch (e) {
650
+ this.logger.console(_chalk().default.yellow(`Failed to parse lane name '${explicitLaneName}': ${e.message}`));
651
+ }
652
+ }
653
+
654
+ // Try to auto-detect source branch/lane name using the dedicated detector
655
+ const sourceBranchDetector = new (_sourceBranchDetector().SourceBranchDetector)(this.logger);
656
+ const sourceBranchName = await sourceBranchDetector.getSourceBranchName();
657
+ if (!sourceBranchName) {
658
+ this.logger.console(_chalk().default.yellow('No current lane and unable to detect source branch - skipping lane cleanup'));
659
+ return;
660
+ }
661
+ try {
662
+ const laneIdStr = this.convertBranchToLaneId(sourceBranchName);
663
+ this.logger.console(_chalk().default.blue(`Attempting to delete lane based on source branch: ${sourceBranchName} -> ${laneIdStr}`));
664
+ const laneId = await this.lanes.parseLaneId(laneIdStr);
665
+ await this.archiveLane(laneId, laneIdStr);
666
+ } catch (e) {
667
+ this.logger.console(_chalk().default.yellow(`Error during lane cleanup for source branch '${sourceBranchName}': ${e.message}`));
668
+ }
669
+ }
670
+
671
+ /**
672
+ * Archives (deletes) a lane with proper error handling and logging
673
+ */
674
+ async archiveLane(laneId, laneName) {
675
+ try {
676
+ this.logger.console(_chalk().default.blue(`Archiving lane ${laneName}`));
599
677
  // force means to remove the lane even if it was not merged. in this case, we don't care much because main already has the changes.
600
678
  const archiveLane = await this.lanes.removeLanes([laneId], {
601
679
  remote: true,
602
680
  force: true
603
681
  });
604
682
  if (archiveLane.length) {
605
- this.logger.console(_chalk().default.green('Lane archived'));
683
+ this.logger.console(_chalk().default.green(`Lane '${laneName}' archived successfully`));
606
684
  } else {
607
- this.logger.console(_chalk().default.yellow('Failed to archive lane'));
685
+ this.logger.console(_chalk().default.yellow(`Failed to archive lane '${laneName}' - no lanes were removed`));
608
686
  }
687
+ } catch (e) {
688
+ this.logger.console(_chalk().default.red(`Error archiving lane '${laneName}': ${e.message}`));
689
+ // Don't throw the error - lane cleanup is not critical to the merge process
609
690
  }
610
- return {
611
- code: 0,
612
- data: ''
613
- };
614
691
  }
615
692
 
616
693
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_logger","_workspace","_builder","_status","_lanes","_snapping","_export","_importer","_checkout","_execa","_interopRequireDefault","_chalk","_ci","_ci2","_verify","_pr","_merge","_git","_componentId","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","CiMain","constructor","workspace","builder","status","lanes","snapping","exporter","importer","checkout","logger","config","provider","cli","loggerAspect","createLogger","CiAspect","id","ci","ciCmd","CiCmd","commands","CiVerifyCmd","CiPrCmd","CiMergeCmd","register","getBranchName","process","env","GITHUB_HEAD_REF","branch","git","current","Error","toString","getDefaultBranchName","result","raw","defaultBranch","trim","split","pop","branches","all","includes","console","chalk","yellow","getGitCommitMessage","commit","log","maxCount","latest","message","body","parseVersionBumpFromCommit","commitMessage","useExplicitBumpKeywords","blue","useConventionalCommitsForVersionBump","test","getCustomCommitMessage","commitMessageScript","parts","command","args","slice","execa","cwd","path","encoding","customMessage","stdout","green","verifyWorkspaceStatusInternal","strict","statusOutput","code","formatStatusOutput","warnings","failOnError","consoleSuccess","switchToLane","laneName","options","switchLanes","forceOurs","head","workspaceOnly","skipDependencyInstallation","red","verifyWorkspaceStatus","components","list","build","throwErrorsIfExist","snapPrCommit","laneIdStr","originalLane","getCurrentLane","laneId","parseLaneId","import","ids","installNpmPackages","writeConfigFiles","catch","availableLanesInScope","getLanes","remote","scope","laneExists","find","lane","name","foundErr","importLaneObject","consumer","setCurrentLane","laneIds","toComponentIds","compId","bitMap","updateComponentId","write","importCurrentObjects","createLane","forkLaneNewScope","currentLane","results","snap","exitOnFirstFailedTask","snappedComponents","snapOutput","snapResultOutput","exportResults","export","componentsIds","skipNpmInstall","mergePr","argMessage","releaseType","preReleaseId","incrementBy","explicitVersionBump","verbose","versionsFile","autoMergeResolve","forceTheirs","changedIds","resetLaneComponentsToNew","changedIdsList","ComponentIdList","fromArray","legacyScope","removeMany","clearCache","gitStatus","hasChanges","files","stash","pull","checkoutProps","mergeStrategy","checkoutResults","checkoutOutput","leftUnresolvedConflicts","componentsWithConflicts","c","filesStatus","values","some","conflictedComponentIds","map","bold","gray","hasSoftTaggedComponents","softTaggedComponents","finalReleaseType","determineReleaseType","tagResults","tag","failFast","persist","tagOutput","tagResultOutput","hasTaggedComponents","taggedComponents","exportResult","addConfig","statusBeforeCommit","file","working_dir","index","diff","error","add","statusAfterCommit","archiveLane","removeLanes","force","lastCommit","detectedReleaseType","exports","MainRuntime","CLIAspect","WorkspaceAspect","LoggerAspect","BuilderAspect","StatusAspect","LanesAspect","SnappingAspect","ExportAspect","ImporterAspect","CheckoutAspect","addRuntime"],"sources":["ci.main.runtime.ts"],"sourcesContent":["import type { RuntimeDefinition } from '@teambit/harmony';\nimport { CLIAspect, type CLIMain, MainRuntime } from '@teambit/cli';\nimport { LoggerAspect, type LoggerMain, type Logger } from '@teambit/logger';\nimport { WorkspaceAspect, type Workspace } from '@teambit/workspace';\nimport { BuilderAspect, type BuilderMain } from '@teambit/builder';\nimport { StatusAspect, type StatusMain } from '@teambit/status';\nimport { LanesAspect } from '@teambit/lanes';\nimport type { SwitchLaneOptions, LanesMain } from '@teambit/lanes';\nimport { SnappingAspect, tagResultOutput, snapResultOutput } from '@teambit/snapping';\nimport type { SnapResults, SnappingMain } from '@teambit/snapping';\nimport { ExportAspect, type ExportMain } from '@teambit/export';\nimport { ImporterAspect, type ImporterMain } from '@teambit/importer';\nimport { CheckoutAspect, checkoutOutput, type CheckoutMain } from '@teambit/checkout';\nimport type { MergeStrategy } from '@teambit/component.modules.merge-helper';\nimport execa from 'execa';\nimport chalk from 'chalk';\nimport type { ReleaseType } from 'semver';\nimport { CiAspect } from './ci.aspect';\nimport { CiCmd } from './ci.cmd';\nimport { CiVerifyCmd } from './commands/verify.cmd';\nimport { CiPrCmd } from './commands/pr.cmd';\nimport { CiMergeCmd } from './commands/merge.cmd';\nimport { git } from './git';\nimport { ComponentIdList } from '@teambit/component-id';\n\nexport interface CiWorkspaceConfig {\n /**\n * Path to a custom script that generates commit messages for `bit ci merge` operations.\n * The script will be executed when components are tagged and committed to the repository.\n * If not specified, falls back to the default commit message:\n * \"chore: update .bitmap and lockfiles as needed [skip ci]\"\n *\n * @example\n * ```json\n * {\n * \"teambit.git/ci\": {\n * \"commitMessageScript\": \"node scripts/generate-commit-message.js\"\n * }\n * }\n * ```\n */\n commitMessageScript?: string;\n\n /**\n * Enables automatic version bump detection from conventional commit messages.\n * When enabled, the system analyzes commit messages to determine the appropriate version bump:\n * - `feat!:` or `BREAKING CHANGE` → major version bump\n * - `feat:` → minor version bump\n * - `fix:` → patch version bump\n *\n * Only applies when no explicit version flags (--patch, --minor, --major) are provided.\n *\n * @default false\n * @example\n * ```json\n * {\n * \"teambit.git/ci\": {\n * \"useConventionalCommitsForVersionBump\": true\n * }\n * }\n * ```\n */\n useConventionalCommitsForVersionBump?: boolean;\n\n /**\n * Enables detection of explicit version bump keywords in commit messages.\n * When enabled, the system looks for these keywords in commit messages:\n * - `BIT-BUMP-MAJOR` → major version bump\n * - `BIT-BUMP-MINOR` → minor version bump\n *\n * These keywords have higher priority than conventional commits parsing.\n * Only applies when no explicit version flags are provided.\n *\n * @default true\n * @example\n * ```json\n * {\n * \"teambit.git/ci\": {\n * \"useExplicitBumpKeywords\": true\n * }\n * }\n * ```\n */\n useExplicitBumpKeywords?: boolean;\n}\n\nexport class CiMain {\n static runtime = MainRuntime as RuntimeDefinition;\n\n static dependencies: any = [\n CLIAspect,\n WorkspaceAspect,\n LoggerAspect,\n BuilderAspect,\n StatusAspect,\n LanesAspect,\n SnappingAspect,\n ExportAspect,\n ImporterAspect,\n CheckoutAspect,\n ];\n\n static slots: any = [];\n\n constructor(\n private workspace: Workspace,\n\n private builder: BuilderMain,\n\n private status: StatusMain,\n\n private lanes: LanesMain,\n\n private snapping: SnappingMain,\n\n private exporter: ExportMain,\n\n private importer: ImporterMain,\n\n private checkout: CheckoutMain,\n\n private logger: Logger,\n\n private config: CiWorkspaceConfig\n ) {}\n\n static async provider(\n [cli, workspace, loggerAspect, builder, status, lanes, snapping, exporter, importer, checkout]: [\n CLIMain,\n Workspace,\n LoggerMain,\n BuilderMain,\n StatusMain,\n LanesMain,\n SnappingMain,\n ExportMain,\n ImporterMain,\n CheckoutMain,\n ],\n config: CiWorkspaceConfig\n ) {\n const logger = loggerAspect.createLogger(CiAspect.id);\n const ci = new CiMain(workspace, builder, status, lanes, snapping, exporter, importer, checkout, logger, config);\n const ciCmd = new CiCmd(workspace, logger);\n ciCmd.commands = [\n new CiVerifyCmd(workspace, logger, ci),\n new CiPrCmd(workspace, logger, ci),\n new CiMergeCmd(workspace, logger, ci),\n ];\n cli.register(ciCmd);\n\n return ci;\n }\n\n async getBranchName() {\n try {\n // if we are running on github, use the GITHUB_HEAD_REF env var\n if (process.env.GITHUB_HEAD_REF) return process.env.GITHUB_HEAD_REF;\n\n const branch = await git.branch();\n return branch.current;\n } catch (e: any) {\n throw new Error(`Unable to read branch: ${e.toString()}`);\n }\n }\n\n async getDefaultBranchName() {\n try {\n // Try to get the default branch from git symbolic-ref\n const result = await git.raw(['symbolic-ref', 'refs/remotes/origin/HEAD']);\n const defaultBranch = result.trim().split('/').pop();\n return defaultBranch || 'master';\n } catch (e: any) {\n // Fallback to common default branch names\n try {\n const branches = await git.branch(['-r']);\n if (branches.all.includes('origin/main')) return 'main';\n if (branches.all.includes('origin/master')) return 'master';\n return 'master'; // Final fallback\n } catch {\n this.logger.console(chalk.yellow(`Unable to detect default branch, using 'master': ${e.toString()}`));\n return 'master';\n }\n }\n }\n\n async getGitCommitMessage() {\n try {\n const commit = await git.log({\n maxCount: 1,\n });\n if (!commit.latest) {\n return null;\n }\n const { message, body } = commit.latest;\n return body ? `${message}\\n\\n${body}` : message;\n } catch (e: any) {\n throw new Error(`Unable to read commit message: ${e.toString()}`);\n }\n }\n\n private parseVersionBumpFromCommit(commitMessage: string): ReleaseType | null {\n // Check explicit bump keywords (highest priority after env vars)\n if (this.config.useExplicitBumpKeywords !== false) {\n // default to true\n if (commitMessage.includes('BIT-BUMP-MAJOR')) {\n this.logger.console(chalk.blue('Found BIT-BUMP-MAJOR keyword in commit message'));\n return 'major';\n }\n if (commitMessage.includes('BIT-BUMP-MINOR')) {\n this.logger.console(chalk.blue('Found BIT-BUMP-MINOR keyword in commit message'));\n return 'minor';\n }\n }\n\n // Check conventional commits if enabled\n if (this.config.useConventionalCommitsForVersionBump) {\n // Check for breaking changes (major version bump)\n if (/^feat!(\\(.+\\))?:|^fix!(\\(.+\\))?:|BREAKING CHANGE/m.test(commitMessage)) {\n this.logger.console(chalk.blue('Found breaking changes in commit message (conventional commits)'));\n return 'major';\n }\n\n // Check for features (minor version bump)\n if (/^feat(\\(.+\\))?:/m.test(commitMessage)) {\n this.logger.console(chalk.blue('Found feature commits (conventional commits)'));\n return 'minor';\n }\n\n // Check for fixes (patch version bump) - explicit patch not needed as it's default\n if (/^fix(\\(.+\\))?:/m.test(commitMessage)) {\n this.logger.console(chalk.blue('Found fix commits (conventional commits) - using default patch'));\n return 'patch';\n }\n }\n\n return null; // No specific version bump detected\n }\n\n private async getCustomCommitMessage() {\n try {\n const commitMessageScript = this.config.commitMessageScript;\n\n if (commitMessageScript) {\n this.logger.console(chalk.blue(`Running custom commit message script: ${commitMessageScript}`));\n\n // Parse the command to avoid shell injection\n const parts = commitMessageScript.split(' ');\n const command = parts[0];\n const args = parts.slice(1);\n\n const result = await execa(command, args, {\n cwd: this.workspace.path,\n encoding: 'utf8',\n });\n const customMessage = result.stdout.trim();\n\n if (customMessage) {\n this.logger.console(chalk.green(`Using custom commit message: ${customMessage}`));\n return customMessage;\n }\n }\n } catch (e: any) {\n this.logger.console(chalk.yellow(`Failed to run custom commit message script: ${e.toString()}`));\n }\n\n // Fallback to default message\n return 'chore: update .bitmap and lockfiles as needed [skip ci]';\n }\n\n private async verifyWorkspaceStatusInternal(strict: boolean = false) {\n this.logger.console('📊 Workspace Status');\n this.logger.console(chalk.blue('Verifying status of workspace'));\n\n const status = await this.status.status({ lanes: true });\n const { data: statusOutput, code } = await this.status.formatStatusOutput(\n status,\n strict\n ? { strict: true, warnings: true } // When strict=true, fail on both errors and warnings\n : { failOnError: true, warnings: false } // By default, fail only on errors (tag blockers)\n );\n\n // Log the formatted status output\n this.logger.console(statusOutput);\n\n if (code !== 0) {\n throw new Error('Workspace status verification failed');\n }\n\n this.logger.consoleSuccess(chalk.green('Workspace status is correct'));\n return { status };\n }\n\n private async switchToLane(laneName: string, options: SwitchLaneOptions = {}) {\n this.logger.console(chalk.blue(`Switching to ${laneName}`));\n try {\n await this.lanes.switchLanes(laneName, {\n forceOurs: true,\n head: true,\n workspaceOnly: true,\n skipDependencyInstallation: true,\n ...options,\n });\n } catch (e: any) {\n if (e.toString().includes('already checked out')) {\n this.logger.console(chalk.yellow(`Lane ${laneName} already checked out, skipping checkout`));\n return true;\n }\n this.logger.console(chalk.red(`Failed switching to ${laneName}: ${e.toString()}`));\n }\n }\n\n async verifyWorkspaceStatus() {\n await this.verifyWorkspaceStatusInternal();\n\n this.logger.console('🔨 Build Process');\n const components = await this.workspace.list();\n\n this.logger.console(chalk.blue(`Building ${components.length} components`));\n\n const build = await this.builder.build(components);\n\n build.throwErrorsIfExist();\n\n this.logger.console(chalk.green('Components built'));\n\n return { code: 0, data: '' };\n }\n\n async snapPrCommit({\n laneIdStr,\n message,\n build,\n strict,\n }: {\n laneIdStr: string;\n message: string;\n build: boolean | undefined;\n strict: boolean | undefined;\n }) {\n this.logger.console(chalk.blue(`Lane name: ${laneIdStr}`));\n\n const originalLane = await this.lanes.getCurrentLane();\n\n const laneId = await this.lanes.parseLaneId(laneIdStr);\n\n await this.verifyWorkspaceStatusInternal(strict);\n\n await this.importer\n .import({\n ids: [],\n installNpmPackages: false,\n writeConfigFiles: false,\n })\n .catch((e) => {\n throw new Error(`Failed to import components: ${e.toString()}`);\n });\n\n this.logger.console('🔄 Lane Management');\n const availableLanesInScope = await this.lanes\n .getLanes({\n remote: laneId.scope,\n })\n .catch((e) => {\n throw new Error(`Failed to get lanes in scope ${laneId.scope}: ${e.toString()}`);\n });\n\n const laneExists = availableLanesInScope.find((lane) => lane.id.name === laneId.name);\n\n let foundErr: Error | undefined;\n try {\n if (laneExists) {\n const lane = await this.lanes.importLaneObject(laneId, true);\n this.workspace.consumer.setCurrentLane(laneId, true);\n const laneIds = lane.toComponentIds();\n laneIds.forEach((compId) => this.workspace.consumer.bitMap.updateComponentId(compId));\n await this.workspace.bitMap.write();\n await this.importer.importCurrentObjects();\n\n this.logger.console(chalk.green(`Imported lane ${laneId.toString()}`));\n } else {\n this.logger.console(chalk.blue(`Creating lane ${laneId.toString()}`));\n\n try {\n await this.lanes.createLane(laneId.name, {\n scope: laneId.scope,\n forkLaneNewScope: true,\n });\n } catch (e: any) {\n if (e.message.includes('already exists')) {\n this.logger.console(chalk.yellow(`Lane ${laneId.toString()} already exists, skipping creation`));\n } else {\n throw new Error(`Failed to create lane ${laneId.toString()}: ${e.toString()}`);\n }\n }\n }\n\n const currentLane = await this.lanes.getCurrentLane();\n\n this.logger.console(chalk.blue(`Current lane: ${currentLane?.name ?? 'main'}`));\n\n if (currentLane?.name === laneId.name) {\n this.logger.console(chalk.yellow(`Current lane is already ${laneId.name}, skipping switch`));\n } else {\n await this.switchToLane(laneId.toString());\n }\n\n this.logger.console('📦 Snapping Components');\n const results = await this.snapping.snap({\n message,\n build,\n exitOnFirstFailedTask: true,\n });\n\n if (!results) {\n return 'No changes detected, nothing to snap';\n }\n\n const { snappedComponents }: SnapResults = results;\n\n const snapOutput = snapResultOutput(results);\n this.logger.console(snapOutput);\n\n this.logger.console(chalk.blue(`Exporting ${snappedComponents.length} components`));\n\n const exportResults = await this.exporter.export();\n\n this.logger.console(chalk.green(`Exported ${exportResults.componentsIds.length} components`));\n } catch (e: any) {\n foundErr = e;\n throw e;\n } finally {\n if (foundErr) {\n this.logger.console(chalk.red(`Found error: ${foundErr.message}`));\n }\n // Whatever happens, switch back to the original lane\n this.logger.console('🔄 Cleanup');\n this.logger.console(chalk.blue(`Switching back to ${originalLane?.name ?? 'main'}`));\n const lane = await this.lanes.getCurrentLane();\n if (!lane) {\n this.logger.console(chalk.yellow('Already on main, no need to switch. Checking out to head'));\n await this.lanes.checkout.checkout({\n head: true,\n skipNpmInstall: true,\n });\n } else {\n await this.switchToLane(originalLane?.name ?? 'main');\n }\n }\n }\n\n async mergePr({\n message: argMessage,\n build,\n strict,\n releaseType,\n preReleaseId,\n incrementBy,\n explicitVersionBump,\n verbose,\n versionsFile,\n autoMergeResolve,\n forceTheirs,\n }: {\n message?: string;\n build?: boolean;\n strict?: boolean;\n releaseType: ReleaseType;\n preReleaseId?: string;\n incrementBy?: number;\n explicitVersionBump?: boolean;\n verbose?: boolean;\n versionsFile?: string;\n autoMergeResolve?: MergeStrategy;\n forceTheirs?: boolean;\n }) {\n const message = argMessage || (await this.getGitCommitMessage());\n if (!message) {\n throw new Error('Failed to get commit message from git. Please provide a message using --message option.');\n }\n\n const currentLane = await this.lanes.getCurrentLane();\n if (currentLane) {\n // this doesn't normally happen. we expect this mergePr to be called from the default branch, which normally checks\n // out to main lane.\n this.logger.console(chalk.blue(`Currently on lane ${currentLane.name}, switching to main`));\n await this.switchToLane('main');\n // this is needed to make sure components that were created on the lane are now available on main.\n // without this, the switch to main above, marks those components as not-available, and won't be tagged later on.\n // don't use the high-level `consumer.resetLaneNew()`, because it deletes the entire local scope.\n const changedIds = this.workspace.consumer.bitMap.resetLaneComponentsToNew();\n if (changedIds.length) {\n const changedIdsList = ComponentIdList.fromArray(changedIds);\n await this.workspace.scope.legacyScope.removeMany(changedIdsList, true);\n\n await this.workspace.clearCache();\n await this.workspace.bitMap.write('reset lane new');\n }\n\n this.logger.console(chalk.green('Switched to main lane'));\n }\n\n // Pull latest changes from remote to ensure we have the most up-to-date .bitmap\n // This prevents issues when multiple PRs are merged in sequence\n const defaultBranch = await this.getDefaultBranchName();\n this.logger.console(chalk.blue(`Pulling latest git changes from ${defaultBranch} branch`));\n\n // Check if there are any changes to stash before rebasing\n const gitStatus = await git.status();\n const hasChanges = gitStatus.files.length > 0;\n\n if (hasChanges) {\n this.logger.console(chalk.yellow('Stashing uncommitted changes before rebase'));\n await git.stash(['push', '-u', '-m', 'CI merge temporary stash']);\n }\n\n await git.pull('origin', defaultBranch, { '--rebase': 'true' });\n\n if (hasChanges) {\n this.logger.console(chalk.yellow('Restoring stashed changes after rebase'));\n await git.stash(['pop']);\n }\n\n this.logger.console(chalk.green('Pulled latest git changes'));\n\n this.logger.console('🔄 Checking out to main head');\n await this.importer.importCurrentObjects();\n\n const checkoutProps = {\n forceOurs: !forceTheirs && !autoMergeResolve, // only force ours if neither forceTheirs nor autoMergeResolve is specified\n head: true,\n skipNpmInstall: true,\n ...(forceTheirs && { forceTheirs }),\n ...(autoMergeResolve && { mergeStrategy: autoMergeResolve }),\n };\n const checkoutResults = await this.checkout.checkout(checkoutProps);\n await this.workspace.bitMap.write('checkout head');\n this.logger.console(checkoutOutput(checkoutResults, checkoutProps));\n\n // Check for conflicts when using manual merge strategy\n if (autoMergeResolve === 'manual' && checkoutResults.leftUnresolvedConflicts) {\n const componentsWithConflicts =\n checkoutResults.components?.filter(\n (c) => c.filesStatus && Object.values(c.filesStatus).some((status) => status === 'manual')\n ) || [];\n\n const conflictedComponentIds = componentsWithConflicts.map((c) => c.id.toString());\n\n this.logger.console(chalk.red('❌ Merge conflicts detected during checkout'));\n this.logger.console(chalk.yellow('The following components have conflicts:'));\n conflictedComponentIds.forEach((id) => {\n this.logger.console(chalk.yellow(` - ${id}`));\n });\n this.logger.console(chalk.blue('\\nTo resolve these conflicts, please run:'));\n this.logger.console(chalk.bold(' bit checkout head'));\n this.logger.console(chalk.gray('\\nThis will allow you to manually resolve the conflicts.'));\n\n throw new Error(\n 'Cannot complete CI merge due to unresolved conflicts. Please resolve conflicts manually and try again.'\n );\n }\n\n const { status } = await this.verifyWorkspaceStatusInternal(strict);\n\n const hasSoftTaggedComponents = status.softTaggedComponents.length > 0;\n\n this.logger.console('📦 Component Operations');\n this.logger.console(chalk.blue('Tagging components'));\n const finalReleaseType = await this.determineReleaseType(releaseType, explicitVersionBump);\n const tagResults = await this.snapping.tag({\n all: true,\n message,\n build,\n failFast: true,\n persist: hasSoftTaggedComponents,\n releaseType: finalReleaseType,\n preReleaseId,\n incrementBy,\n versionsFile,\n });\n\n if (tagResults) {\n const tagOutput = tagResultOutput(tagResults);\n this.logger.console(tagOutput);\n } else {\n this.logger.console(chalk.yellow('No components to tag'));\n }\n\n const hasTaggedComponents = tagResults?.taggedComponents && tagResults.taggedComponents.length > 0;\n\n if (hasTaggedComponents) {\n this.logger.console(chalk.blue('Exporting components'));\n const exportResult = await this.exporter.export();\n\n if (exportResult.componentsIds.length > 0) {\n this.logger.console(chalk.green(`Exported ${exportResult.componentsIds.length} component(s)`));\n } else {\n this.logger.console(chalk.yellow('Nothing to export'));\n }\n\n this.logger.console('🔄 Git Operations');\n // Set user.email and user.name\n await git.addConfig('user.email', 'bit-ci[bot]@bit.cloud');\n await git.addConfig('user.name', 'Bit CI');\n\n // Check git status before commit\n const statusBeforeCommit = await git.status();\n this.logger.console(chalk.blue(`Git status before commit: ${statusBeforeCommit.files.length} files`));\n statusBeforeCommit.files.forEach((file) => {\n this.logger.console(chalk.gray(` ${file.working_dir}${file.index} ${file.path}`));\n });\n\n // Show git diff if there are uncommitted changes\n if (verbose && statusBeforeCommit.files.length > 0) {\n try {\n const diff = await git.diff();\n if (diff) {\n this.logger.console(chalk.blue('Git diff before commit:'));\n this.logger.console(diff);\n }\n } catch (error) {\n this.logger.console(chalk.yellow(`Failed to show git diff: ${error}`));\n }\n }\n\n // Previously we committed only .bitmap and pnpm-lock.yaml files.\n // However, it's possible that \"bit checkout head\" we did above, modified other files as well.\n // So now we commit all files that were changed.\n await git.add(['.']);\n\n const commitMessage = await this.getCustomCommitMessage();\n await git.commit(commitMessage);\n\n // Check git status after commit\n const statusAfterCommit = await git.status();\n this.logger.console(chalk.blue(`Git status after commit: ${statusAfterCommit.files.length} files`));\n statusAfterCommit.files.forEach((file) => {\n this.logger.console(chalk.gray(` ${file.working_dir}${file.index} ${file.path}`));\n });\n\n await git.pull('origin', defaultBranch, { '--rebase': 'true' });\n await git.push('origin', defaultBranch);\n } else {\n this.logger.console(chalk.yellow('No components were tagged, skipping export and git operations'));\n }\n\n this.logger.console(chalk.green('Merged PR'));\n\n if (currentLane) {\n this.logger.console('🗑️ Lane Cleanup');\n const laneId = currentLane.id();\n this.logger.console(chalk.blue(`Archiving lane ${laneId}`));\n // force means to remove the lane even if it was not merged. in this case, we don't care much because main already has the changes.\n const archiveLane = await this.lanes.removeLanes([laneId], { remote: true, force: true });\n if (archiveLane.length) {\n this.logger.console(chalk.green('Lane archived'));\n } else {\n this.logger.console(chalk.yellow('Failed to archive lane'));\n }\n }\n\n return { code: 0, data: '' };\n }\n\n /**\n * Auto-detect version bump from commit messages if no explicit version bump was provided\n */\n private async determineReleaseType(releaseType: ReleaseType, explicitVersionBump?: boolean): Promise<ReleaseType> {\n if (explicitVersionBump) {\n this.logger.console(chalk.blue(`Using explicit version bump: ${releaseType}`));\n return releaseType;\n }\n // Only auto-detect if user didn't specify any version flags\n const lastCommit = await this.getGitCommitMessage();\n if (!lastCommit) {\n this.logger.console(chalk.blue('No commit message found, using default patch'));\n return releaseType;\n }\n const detectedReleaseType = this.parseVersionBumpFromCommit(lastCommit);\n if (detectedReleaseType) {\n this.logger.console(chalk.green(`Auto-detected version bump: ${detectedReleaseType}`));\n return detectedReleaseType;\n }\n this.logger.console(chalk.blue('No specific version bump detected, using default patch'));\n return releaseType;\n }\n}\n\nCiAspect.addRuntime(CiMain);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cli","data","require","_logger","_workspace","_builder","_status","_lanes","_snapping","_export","_importer","_checkout","_execa","_interopRequireDefault","_chalk","_ci","_ci2","_verify","_pr","_merge","_git","_componentId","_sourceBranchDetector","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","CiMain","constructor","workspace","builder","status","lanes","snapping","exporter","importer","checkout","logger","config","provider","cli","loggerAspect","createLogger","CiAspect","id","ci","ciCmd","CiCmd","commands","CiVerifyCmd","CiPrCmd","CiMergeCmd","register","getBranchName","process","env","GITHUB_HEAD_REF","branch","git","current","Error","toString","convertBranchToLaneId","branchName","sanitizedBranch","replace","defaultScope","getDefaultBranchName","result","raw","defaultBranch","trim","split","pop","branches","all","includes","console","chalk","yellow","getGitCommitMessage","commit","log","maxCount","latest","message","body","parseVersionBumpFromCommit","commitMessage","useExplicitBumpKeywords","blue","useConventionalCommitsForVersionBump","test","getCustomCommitMessage","commitMessageScript","parts","command","args","slice","execa","cwd","path","encoding","customMessage","stdout","green","verifyWorkspaceStatusInternal","strict","statusOutput","code","formatStatusOutput","warnings","failOnError","consoleSuccess","switchToLane","laneName","options","switchLanes","forceOurs","head","workspaceOnly","skipDependencyInstallation","red","verifyWorkspaceStatus","components","list","build","throwErrorsIfExist","snapPrCommit","laneIdStr","originalLane","getCurrentLane","laneId","parseLaneId","import","ids","installNpmPackages","writeConfigFiles","catch","availableLanesInScope","getLanes","remote","scope","laneExists","find","lane","name","foundErr","importLaneObject","consumer","setCurrentLane","laneIds","toComponentIds","compId","bitMap","updateComponentId","write","importCurrentObjects","createLane","forkLaneNewScope","currentLane","results","snap","exitOnFirstFailedTask","snappedComponents","snapOutput","snapResultOutput","exportResults","export","componentsIds","skipNpmInstall","mergePr","argMessage","releaseType","preReleaseId","incrementBy","explicitVersionBump","verbose","versionsFile","autoMergeResolve","forceTheirs","changedIds","resetLaneComponentsToNew","changedIdsList","ComponentIdList","fromArray","legacyScope","removeMany","clearCache","gitStatus","hasChanges","files","stash","pull","checkoutProps","mergeStrategy","checkoutResults","checkoutOutput","leftUnresolvedConflicts","componentsWithConflicts","c","filesStatus","values","some","conflictedComponentIds","map","bold","gray","hasSoftTaggedComponents","softTaggedComponents","finalReleaseType","determineReleaseType","tagResults","tag","failFast","persist","tagOutput","tagResultOutput","hasTaggedComponents","taggedComponents","exportResult","addConfig","statusBeforeCommit","file","working_dir","index","diff","error","add","statusAfterCommit","performLaneCleanup","explicitLaneName","archiveLane","sourceBranchDetector","SourceBranchDetector","sourceBranchName","getSourceBranchName","removeLanes","force","lastCommit","detectedReleaseType","exports","MainRuntime","CLIAspect","WorkspaceAspect","LoggerAspect","BuilderAspect","StatusAspect","LanesAspect","SnappingAspect","ExportAspect","ImporterAspect","CheckoutAspect","addRuntime"],"sources":["ci.main.runtime.ts"],"sourcesContent":["import type { RuntimeDefinition } from '@teambit/harmony';\nimport { CLIAspect, type CLIMain, MainRuntime } from '@teambit/cli';\nimport { LoggerAspect, type LoggerMain, type Logger } from '@teambit/logger';\nimport { WorkspaceAspect, type Workspace } from '@teambit/workspace';\nimport { BuilderAspect, type BuilderMain } from '@teambit/builder';\nimport { StatusAspect, type StatusMain } from '@teambit/status';\nimport { LanesAspect } from '@teambit/lanes';\nimport type { SwitchLaneOptions, LanesMain } from '@teambit/lanes';\nimport { SnappingAspect, tagResultOutput, snapResultOutput } from '@teambit/snapping';\nimport type { SnapResults, SnappingMain } from '@teambit/snapping';\nimport { ExportAspect, type ExportMain } from '@teambit/export';\nimport { ImporterAspect, type ImporterMain } from '@teambit/importer';\nimport { CheckoutAspect, checkoutOutput, type CheckoutMain } from '@teambit/checkout';\nimport type { MergeStrategy } from '@teambit/component.modules.merge-helper';\nimport execa from 'execa';\nimport chalk from 'chalk';\nimport type { ReleaseType } from 'semver';\nimport { CiAspect } from './ci.aspect';\nimport { CiCmd } from './ci.cmd';\nimport { CiVerifyCmd } from './commands/verify.cmd';\nimport { CiPrCmd } from './commands/pr.cmd';\nimport { CiMergeCmd } from './commands/merge.cmd';\nimport { git } from './git';\nimport { ComponentIdList } from '@teambit/component-id';\nimport { SourceBranchDetector } from './source-branch-detector';\n\nexport interface CiWorkspaceConfig {\n /**\n * Path to a custom script that generates commit messages for `bit ci merge` operations.\n * The script will be executed when components are tagged and committed to the repository.\n * If not specified, falls back to the default commit message:\n * \"chore: update .bitmap and lockfiles as needed [skip ci]\"\n *\n * @example\n * ```json\n * {\n * \"teambit.git/ci\": {\n * \"commitMessageScript\": \"node scripts/generate-commit-message.js\"\n * }\n * }\n * ```\n */\n commitMessageScript?: string;\n\n /**\n * Enables automatic version bump detection from conventional commit messages.\n * When enabled, the system analyzes commit messages to determine the appropriate version bump:\n * - `feat!:` or `BREAKING CHANGE` → major version bump\n * - `feat:` → minor version bump\n * - `fix:` → patch version bump\n *\n * Only applies when no explicit version flags (--patch, --minor, --major) are provided.\n *\n * @default false\n * @example\n * ```json\n * {\n * \"teambit.git/ci\": {\n * \"useConventionalCommitsForVersionBump\": true\n * }\n * }\n * ```\n */\n useConventionalCommitsForVersionBump?: boolean;\n\n /**\n * Enables detection of explicit version bump keywords in commit messages.\n * When enabled, the system looks for these keywords in commit messages:\n * - `BIT-BUMP-MAJOR` → major version bump\n * - `BIT-BUMP-MINOR` → minor version bump\n *\n * These keywords have higher priority than conventional commits parsing.\n * Only applies when no explicit version flags are provided.\n *\n * @default true\n * @example\n * ```json\n * {\n * \"teambit.git/ci\": {\n * \"useExplicitBumpKeywords\": true\n * }\n * }\n * ```\n */\n useExplicitBumpKeywords?: boolean;\n}\n\nexport class CiMain {\n static runtime = MainRuntime as RuntimeDefinition;\n\n static dependencies: any = [\n CLIAspect,\n WorkspaceAspect,\n LoggerAspect,\n BuilderAspect,\n StatusAspect,\n LanesAspect,\n SnappingAspect,\n ExportAspect,\n ImporterAspect,\n CheckoutAspect,\n ];\n\n static slots: any = [];\n\n constructor(\n private workspace: Workspace,\n\n private builder: BuilderMain,\n\n private status: StatusMain,\n\n private lanes: LanesMain,\n\n private snapping: SnappingMain,\n\n private exporter: ExportMain,\n\n private importer: ImporterMain,\n\n private checkout: CheckoutMain,\n\n private logger: Logger,\n\n private config: CiWorkspaceConfig\n ) {}\n\n static async provider(\n [cli, workspace, loggerAspect, builder, status, lanes, snapping, exporter, importer, checkout]: [\n CLIMain,\n Workspace,\n LoggerMain,\n BuilderMain,\n StatusMain,\n LanesMain,\n SnappingMain,\n ExportMain,\n ImporterMain,\n CheckoutMain,\n ],\n config: CiWorkspaceConfig\n ) {\n const logger = loggerAspect.createLogger(CiAspect.id);\n const ci = new CiMain(workspace, builder, status, lanes, snapping, exporter, importer, checkout, logger, config);\n const ciCmd = new CiCmd(workspace, logger);\n ciCmd.commands = [\n new CiVerifyCmd(workspace, logger, ci),\n new CiPrCmd(workspace, logger, ci),\n new CiMergeCmd(workspace, logger, ci),\n ];\n cli.register(ciCmd);\n\n return ci;\n }\n\n async getBranchName() {\n try {\n // if we are running on github, use the GITHUB_HEAD_REF env var\n if (process.env.GITHUB_HEAD_REF) return process.env.GITHUB_HEAD_REF;\n\n const branch = await git.branch();\n return branch.current;\n } catch (e: any) {\n throw new Error(`Unable to read branch: ${e.toString()}`);\n }\n }\n\n /**\n * Converts a branch name to a lane ID string using Bit's naming conventions.\n * Sanitizes branch name by replacing slashes and dots with dashes, then\n * prefixes with the workspace's default scope.\n *\n * @param branchName - The git branch name to convert\n * @returns Lane ID in format: {defaultScope}/{sanitizedBranch}\n * @example convertBranchToLaneId(\"feature/new-component\") => \"my-scope/feature-new-component\"\n */\n convertBranchToLaneId(branchName: string): string {\n // Sanitize branch name to make it valid for Bit lane IDs by replacing slashes and dots with dashes\n const sanitizedBranch = branchName.replace(/[/.]/g, '-');\n return `${this.workspace.defaultScope}/${sanitizedBranch}`;\n }\n\n async getDefaultBranchName() {\n try {\n // Try to get the default branch from git symbolic-ref\n const result = await git.raw(['symbolic-ref', 'refs/remotes/origin/HEAD']);\n const defaultBranch = result.trim().split('/').pop();\n return defaultBranch || 'master';\n } catch (e: any) {\n // Fallback to common default branch names\n try {\n const branches = await git.branch(['-r']);\n if (branches.all.includes('origin/main')) return 'main';\n if (branches.all.includes('origin/master')) return 'master';\n return 'master'; // Final fallback\n } catch {\n this.logger.console(chalk.yellow(`Unable to detect default branch, using 'master': ${e.toString()}`));\n return 'master';\n }\n }\n }\n\n async getGitCommitMessage() {\n try {\n const commit = await git.log({\n maxCount: 1,\n });\n if (!commit.latest) {\n return null;\n }\n const { message, body } = commit.latest;\n return body ? `${message}\\n\\n${body}` : message;\n } catch (e: any) {\n throw new Error(`Unable to read commit message: ${e.toString()}`);\n }\n }\n\n private parseVersionBumpFromCommit(commitMessage: string): ReleaseType | null {\n // Check explicit bump keywords (highest priority after env vars)\n if (this.config.useExplicitBumpKeywords !== false) {\n // default to true\n if (commitMessage.includes('BIT-BUMP-MAJOR')) {\n this.logger.console(chalk.blue('Found BIT-BUMP-MAJOR keyword in commit message'));\n return 'major';\n }\n if (commitMessage.includes('BIT-BUMP-MINOR')) {\n this.logger.console(chalk.blue('Found BIT-BUMP-MINOR keyword in commit message'));\n return 'minor';\n }\n }\n\n // Check conventional commits if enabled\n if (this.config.useConventionalCommitsForVersionBump) {\n // Check for breaking changes (major version bump)\n if (/^feat!(\\(.+\\))?:|^fix!(\\(.+\\))?:|BREAKING CHANGE/m.test(commitMessage)) {\n this.logger.console(chalk.blue('Found breaking changes in commit message (conventional commits)'));\n return 'major';\n }\n\n // Check for features (minor version bump)\n if (/^feat(\\(.+\\))?:/m.test(commitMessage)) {\n this.logger.console(chalk.blue('Found feature commits (conventional commits)'));\n return 'minor';\n }\n\n // Check for fixes (patch version bump) - explicit patch not needed as it's default\n if (/^fix(\\(.+\\))?:/m.test(commitMessage)) {\n this.logger.console(chalk.blue('Found fix commits (conventional commits) - using default patch'));\n return 'patch';\n }\n }\n\n return null; // No specific version bump detected\n }\n\n private async getCustomCommitMessage() {\n try {\n const commitMessageScript = this.config.commitMessageScript;\n\n if (commitMessageScript) {\n this.logger.console(chalk.blue(`Running custom commit message script: ${commitMessageScript}`));\n\n // Parse the command to avoid shell injection\n const parts = commitMessageScript.split(' ');\n const command = parts[0];\n const args = parts.slice(1);\n\n const result = await execa(command, args, {\n cwd: this.workspace.path,\n encoding: 'utf8',\n });\n const customMessage = result.stdout.trim();\n\n if (customMessage) {\n this.logger.console(chalk.green(`Using custom commit message: ${customMessage}`));\n return customMessage;\n }\n }\n } catch (e: any) {\n this.logger.console(chalk.yellow(`Failed to run custom commit message script: ${e.toString()}`));\n }\n\n // Fallback to default message\n return 'chore: update .bitmap and lockfiles as needed [skip ci]';\n }\n\n private async verifyWorkspaceStatusInternal(strict: boolean = false) {\n this.logger.console('📊 Workspace Status');\n this.logger.console(chalk.blue('Verifying status of workspace'));\n\n const status = await this.status.status({ lanes: true });\n const { data: statusOutput, code } = await this.status.formatStatusOutput(\n status,\n strict\n ? { strict: true, warnings: true } // When strict=true, fail on both errors and warnings\n : { failOnError: true, warnings: false } // By default, fail only on errors (tag blockers)\n );\n\n // Log the formatted status output\n this.logger.console(statusOutput);\n\n if (code !== 0) {\n throw new Error('Workspace status verification failed');\n }\n\n this.logger.consoleSuccess(chalk.green('Workspace status is correct'));\n return { status };\n }\n\n private async switchToLane(laneName: string, options: SwitchLaneOptions = {}) {\n this.logger.console(chalk.blue(`Switching to ${laneName}`));\n try {\n await this.lanes.switchLanes(laneName, {\n forceOurs: true,\n head: true,\n workspaceOnly: true,\n skipDependencyInstallation: true,\n ...options,\n });\n } catch (e: any) {\n if (e.toString().includes('already checked out')) {\n this.logger.console(chalk.yellow(`Lane ${laneName} already checked out, skipping checkout`));\n return true;\n }\n this.logger.console(chalk.red(`Failed switching to ${laneName}: ${e.toString()}`));\n }\n }\n\n async verifyWorkspaceStatus() {\n await this.verifyWorkspaceStatusInternal();\n\n this.logger.console('🔨 Build Process');\n const components = await this.workspace.list();\n\n this.logger.console(chalk.blue(`Building ${components.length} components`));\n\n const build = await this.builder.build(components);\n\n build.throwErrorsIfExist();\n\n this.logger.console(chalk.green('Components built'));\n\n return { code: 0, data: '' };\n }\n\n async snapPrCommit({\n laneIdStr,\n message,\n build,\n strict,\n }: {\n laneIdStr: string;\n message: string;\n build: boolean | undefined;\n strict: boolean | undefined;\n }) {\n this.logger.console(chalk.blue(`Lane name: ${laneIdStr}`));\n\n const originalLane = await this.lanes.getCurrentLane();\n\n const laneId = await this.lanes.parseLaneId(laneIdStr);\n\n await this.verifyWorkspaceStatusInternal(strict);\n\n await this.importer\n .import({\n ids: [],\n installNpmPackages: false,\n writeConfigFiles: false,\n })\n .catch((e) => {\n throw new Error(`Failed to import components: ${e.toString()}`);\n });\n\n this.logger.console('🔄 Lane Management');\n const availableLanesInScope = await this.lanes\n .getLanes({\n remote: laneId.scope,\n })\n .catch((e) => {\n throw new Error(`Failed to get lanes in scope ${laneId.scope}: ${e.toString()}`);\n });\n\n const laneExists = availableLanesInScope.find((lane) => lane.id.name === laneId.name);\n\n let foundErr: Error | undefined;\n try {\n if (laneExists) {\n const lane = await this.lanes.importLaneObject(laneId, true);\n this.workspace.consumer.setCurrentLane(laneId, true);\n const laneIds = lane.toComponentIds();\n laneIds.forEach((compId) => this.workspace.consumer.bitMap.updateComponentId(compId));\n await this.workspace.bitMap.write();\n await this.importer.importCurrentObjects();\n\n this.logger.console(chalk.green(`Imported lane ${laneId.toString()}`));\n } else {\n this.logger.console(chalk.blue(`Creating lane ${laneId.toString()}`));\n\n try {\n await this.lanes.createLane(laneId.name, {\n scope: laneId.scope,\n forkLaneNewScope: true,\n });\n } catch (e: any) {\n if (e.message.includes('already exists')) {\n this.logger.console(chalk.yellow(`Lane ${laneId.toString()} already exists, skipping creation`));\n } else {\n throw new Error(`Failed to create lane ${laneId.toString()}: ${e.toString()}`);\n }\n }\n }\n\n const currentLane = await this.lanes.getCurrentLane();\n\n this.logger.console(chalk.blue(`Current lane: ${currentLane?.name ?? 'main'}`));\n\n if (currentLane?.name === laneId.name) {\n this.logger.console(chalk.yellow(`Current lane is already ${laneId.name}, skipping switch`));\n } else {\n await this.switchToLane(laneId.toString());\n }\n\n this.logger.console('📦 Snapping Components');\n const results = await this.snapping.snap({\n message,\n build,\n exitOnFirstFailedTask: true,\n });\n\n if (!results) {\n return 'No changes detected, nothing to snap';\n }\n\n const { snappedComponents }: SnapResults = results;\n\n const snapOutput = snapResultOutput(results);\n this.logger.console(snapOutput);\n\n this.logger.console(chalk.blue(`Exporting ${snappedComponents.length} components`));\n\n const exportResults = await this.exporter.export();\n\n this.logger.console(chalk.green(`Exported ${exportResults.componentsIds.length} components`));\n } catch (e: any) {\n foundErr = e;\n throw e;\n } finally {\n if (foundErr) {\n this.logger.console(chalk.red(`Found error: ${foundErr.message}`));\n }\n // Whatever happens, switch back to the original lane\n this.logger.console('🔄 Cleanup');\n this.logger.console(chalk.blue(`Switching back to ${originalLane?.name ?? 'main'}`));\n const lane = await this.lanes.getCurrentLane();\n if (!lane) {\n this.logger.console(chalk.yellow('Already on main, no need to switch. Checking out to head'));\n await this.lanes.checkout.checkout({\n head: true,\n skipNpmInstall: true,\n });\n } else {\n await this.switchToLane(originalLane?.name ?? 'main');\n }\n }\n }\n\n async mergePr({\n message: argMessage,\n build,\n strict,\n releaseType,\n preReleaseId,\n incrementBy,\n explicitVersionBump,\n verbose,\n versionsFile,\n autoMergeResolve,\n forceTheirs,\n laneName,\n }: {\n message?: string;\n build?: boolean;\n strict?: boolean;\n releaseType: ReleaseType;\n preReleaseId?: string;\n incrementBy?: number;\n explicitVersionBump?: boolean;\n verbose?: boolean;\n versionsFile?: string;\n autoMergeResolve?: MergeStrategy;\n forceTheirs?: boolean;\n laneName?: string;\n }) {\n const message = argMessage || (await this.getGitCommitMessage());\n if (!message) {\n throw new Error('Failed to get commit message from git. Please provide a message using --message option.');\n }\n\n const currentLane = await this.lanes.getCurrentLane();\n if (currentLane) {\n // this doesn't normally happen. we expect this mergePr to be called from the default branch, which normally checks\n // out to main lane.\n this.logger.console(chalk.blue(`Currently on lane ${currentLane.name}, switching to main`));\n await this.switchToLane('main');\n // this is needed to make sure components that were created on the lane are now available on main.\n // without this, the switch to main above, marks those components as not-available, and won't be tagged later on.\n // don't use the high-level `consumer.resetLaneNew()`, because it deletes the entire local scope.\n const changedIds = this.workspace.consumer.bitMap.resetLaneComponentsToNew();\n if (changedIds.length) {\n const changedIdsList = ComponentIdList.fromArray(changedIds);\n await this.workspace.scope.legacyScope.removeMany(changedIdsList, true);\n\n await this.workspace.clearCache();\n await this.workspace.bitMap.write('reset lane new');\n }\n\n this.logger.console(chalk.green('Switched to main lane'));\n }\n\n // Pull latest changes from remote to ensure we have the most up-to-date .bitmap\n // This prevents issues when multiple PRs are merged in sequence\n const defaultBranch = await this.getDefaultBranchName();\n this.logger.console(chalk.blue(`Pulling latest git changes from ${defaultBranch} branch`));\n\n // Check if there are any changes to stash before rebasing\n const gitStatus = await git.status();\n const hasChanges = gitStatus.files.length > 0;\n\n if (hasChanges) {\n this.logger.console(chalk.yellow('Stashing uncommitted changes before rebase'));\n await git.stash(['push', '-u', '-m', 'CI merge temporary stash']);\n }\n\n await git.pull('origin', defaultBranch, { '--rebase': 'true' });\n\n if (hasChanges) {\n this.logger.console(chalk.yellow('Restoring stashed changes after rebase'));\n await git.stash(['pop']);\n }\n\n this.logger.console(chalk.green('Pulled latest git changes'));\n\n this.logger.console('🔄 Checking out to main head');\n await this.importer.importCurrentObjects();\n\n const checkoutProps = {\n forceOurs: !forceTheirs && !autoMergeResolve, // only force ours if neither forceTheirs nor autoMergeResolve is specified\n head: true,\n skipNpmInstall: true,\n ...(forceTheirs && { forceTheirs }),\n ...(autoMergeResolve && { mergeStrategy: autoMergeResolve }),\n };\n const checkoutResults = await this.checkout.checkout(checkoutProps);\n await this.workspace.bitMap.write('checkout head');\n this.logger.console(checkoutOutput(checkoutResults, checkoutProps));\n\n // Check for conflicts when using manual merge strategy\n if (autoMergeResolve === 'manual' && checkoutResults.leftUnresolvedConflicts) {\n const componentsWithConflicts =\n checkoutResults.components?.filter(\n (c) => c.filesStatus && Object.values(c.filesStatus).some((status) => status === 'manual')\n ) || [];\n\n const conflictedComponentIds = componentsWithConflicts.map((c) => c.id.toString());\n\n this.logger.console(chalk.red('❌ Merge conflicts detected during checkout'));\n this.logger.console(chalk.yellow('The following components have conflicts:'));\n conflictedComponentIds.forEach((id) => {\n this.logger.console(chalk.yellow(` - ${id}`));\n });\n this.logger.console(chalk.blue('\\nTo resolve these conflicts, please run:'));\n this.logger.console(chalk.bold(' bit checkout head'));\n this.logger.console(chalk.gray('\\nThis will allow you to manually resolve the conflicts.'));\n\n throw new Error(\n 'Cannot complete CI merge due to unresolved conflicts. Please resolve conflicts manually and try again.'\n );\n }\n\n const { status } = await this.verifyWorkspaceStatusInternal(strict);\n\n const hasSoftTaggedComponents = status.softTaggedComponents.length > 0;\n\n this.logger.console('📦 Component Operations');\n this.logger.console(chalk.blue('Tagging components'));\n const finalReleaseType = await this.determineReleaseType(releaseType, explicitVersionBump);\n const tagResults = await this.snapping.tag({\n all: true,\n message,\n build,\n failFast: true,\n persist: hasSoftTaggedComponents,\n releaseType: finalReleaseType,\n preReleaseId,\n incrementBy,\n versionsFile,\n });\n\n if (tagResults) {\n const tagOutput = tagResultOutput(tagResults);\n this.logger.console(tagOutput);\n } else {\n this.logger.console(chalk.yellow('No components to tag'));\n }\n\n const hasTaggedComponents = tagResults?.taggedComponents && tagResults.taggedComponents.length > 0;\n\n if (hasTaggedComponents) {\n this.logger.console(chalk.blue('Exporting components'));\n const exportResult = await this.exporter.export();\n\n if (exportResult.componentsIds.length > 0) {\n this.logger.console(chalk.green(`Exported ${exportResult.componentsIds.length} component(s)`));\n } else {\n this.logger.console(chalk.yellow('Nothing to export'));\n }\n\n this.logger.console('🔄 Git Operations');\n // Set user.email and user.name\n await git.addConfig('user.email', 'bit-ci[bot]@bit.cloud');\n await git.addConfig('user.name', 'Bit CI');\n\n // Check git status before commit\n const statusBeforeCommit = await git.status();\n this.logger.console(chalk.blue(`Git status before commit: ${statusBeforeCommit.files.length} files`));\n statusBeforeCommit.files.forEach((file) => {\n this.logger.console(chalk.gray(` ${file.working_dir}${file.index} ${file.path}`));\n });\n\n // Show git diff if there are uncommitted changes\n if (verbose && statusBeforeCommit.files.length > 0) {\n try {\n const diff = await git.diff();\n if (diff) {\n this.logger.console(chalk.blue('Git diff before commit:'));\n this.logger.console(diff);\n }\n } catch (error) {\n this.logger.console(chalk.yellow(`Failed to show git diff: ${error}`));\n }\n }\n\n // Previously we committed only .bitmap and pnpm-lock.yaml files.\n // However, it's possible that \"bit checkout head\" we did above, modified other files as well.\n // So now we commit all files that were changed.\n await git.add(['.']);\n\n const commitMessage = await this.getCustomCommitMessage();\n await git.commit(commitMessage);\n\n // Check git status after commit\n const statusAfterCommit = await git.status();\n this.logger.console(chalk.blue(`Git status after commit: ${statusAfterCommit.files.length} files`));\n statusAfterCommit.files.forEach((file) => {\n this.logger.console(chalk.gray(` ${file.working_dir}${file.index} ${file.path}`));\n });\n\n await git.pull('origin', defaultBranch, { '--rebase': 'true' });\n await git.push('origin', defaultBranch);\n } else {\n this.logger.console(chalk.yellow('No components were tagged, skipping export and git operations'));\n }\n\n this.logger.console(chalk.green('Merged PR'));\n\n // Enhanced lane cleanup logic\n await this.performLaneCleanup(currentLane, laneName);\n\n return { code: 0, data: '' };\n }\n\n /**\n * Performs lane cleanup by attempting to detect and delete the source lane\n * after a successful merge, even when running on the main branch\n */\n private async performLaneCleanup(currentLane: any, explicitLaneName?: string) {\n this.logger.console('🗑️ Lane Cleanup');\n\n // If we already have a current lane, use it\n if (currentLane) {\n this.logger.console(chalk.blue(`Found current lane: ${currentLane.name}`));\n const laneId = currentLane.id();\n await this.archiveLane(laneId, currentLane.name);\n return;\n }\n\n // If no current lane but explicit lane name provided, try to delete it\n if (explicitLaneName) {\n this.logger.console(chalk.blue(`Using explicitly provided lane name: ${explicitLaneName}`));\n try {\n const laneId = await this.lanes.parseLaneId(explicitLaneName);\n await this.archiveLane(laneId, explicitLaneName);\n return;\n } catch (e: any) {\n this.logger.console(chalk.yellow(`Failed to parse lane name '${explicitLaneName}': ${e.message}`));\n }\n }\n\n // Try to auto-detect source branch/lane name using the dedicated detector\n const sourceBranchDetector = new SourceBranchDetector(this.logger);\n const sourceBranchName = await sourceBranchDetector.getSourceBranchName();\n if (!sourceBranchName) {\n this.logger.console(chalk.yellow('No current lane and unable to detect source branch - skipping lane cleanup'));\n return;\n }\n try {\n const laneIdStr = this.convertBranchToLaneId(sourceBranchName);\n\n this.logger.console(\n chalk.blue(`Attempting to delete lane based on source branch: ${sourceBranchName} -> ${laneIdStr}`)\n );\n\n const laneId = await this.lanes.parseLaneId(laneIdStr);\n await this.archiveLane(laneId, laneIdStr);\n } catch (e: any) {\n this.logger.console(\n chalk.yellow(`Error during lane cleanup for source branch '${sourceBranchName}': ${e.message}`)\n );\n }\n }\n\n /**\n * Archives (deletes) a lane with proper error handling and logging\n */\n private async archiveLane(laneId: any, laneName: string) {\n try {\n this.logger.console(chalk.blue(`Archiving lane ${laneName}`));\n // force means to remove the lane even if it was not merged. in this case, we don't care much because main already has the changes.\n const archiveLane = await this.lanes.removeLanes([laneId], { remote: true, force: true });\n if (archiveLane.length) {\n this.logger.console(chalk.green(`Lane '${laneName}' archived successfully`));\n } else {\n this.logger.console(chalk.yellow(`Failed to archive lane '${laneName}' - no lanes were removed`));\n }\n } catch (e: any) {\n this.logger.console(chalk.red(`Error archiving lane '${laneName}': ${e.message}`));\n // Don't throw the error - lane cleanup is not critical to the merge process\n }\n }\n\n /**\n * Auto-detect version bump from commit messages if no explicit version bump was provided\n */\n private async determineReleaseType(releaseType: ReleaseType, explicitVersionBump?: boolean): Promise<ReleaseType> {\n if (explicitVersionBump) {\n this.logger.console(chalk.blue(`Using explicit version bump: ${releaseType}`));\n return releaseType;\n }\n // Only auto-detect if user didn't specify any version flags\n const lastCommit = await this.getGitCommitMessage();\n if (!lastCommit) {\n this.logger.console(chalk.blue('No commit message found, using default patch'));\n return releaseType;\n }\n const detectedReleaseType = this.parseVersionBumpFromCommit(lastCommit);\n if (detectedReleaseType) {\n this.logger.console(chalk.green(`Auto-detected version bump: ${detectedReleaseType}`));\n return detectedReleaseType;\n }\n this.logger.console(chalk.blue('No specific version bump detected, using default patch'));\n return releaseType;\n }\n}\n\nCiAspect.addRuntime(CiMain);\n"],"mappings":"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","ignoreList":[]}
@@ -19,6 +19,7 @@ type Options = {
19
19
  versionsFile?: string;
20
20
  autoMergeResolve?: MergeStrategy;
21
21
  forceTheirs?: boolean;
22
+ laneName?: string;
22
23
  };
23
24
  export declare class CiMergeCmd implements Command {
24
25
  private workspace;
@@ -36,7 +36,7 @@ class CiMergeCmd {
36
36
  _defineProperty(this, "name", 'merge');
37
37
  _defineProperty(this, "description", 'Merges a PR');
38
38
  _defineProperty(this, "group", 'collaborate');
39
- _defineProperty(this, "options", [['m', 'message <message>', 'If set, use it as the tag message, if not, try and grab from git-commit-message'], ['b', 'build', 'Set to true to build the app locally, false (default) will build on Ripple CI'], ['s', 'strict', 'Set to true to fail on warnings as well as errors, false (default) only fails on errors'], ['l', 'increment <level>', 'options are: [major, premajor, minor, preminor, patch, prepatch, prerelease], default to patch'], ['', 'prerelease-id <id>', 'prerelease identifier (e.g. "dev" to get "1.0.0-dev.1")'], ['p', 'patch', 'syntactic sugar for "--increment patch"'], ['', 'minor', 'syntactic sugar for "--increment minor"'], ['', 'major', 'syntactic sugar for "--increment major"'], ['', 'pre-release [identifier]', 'syntactic sugar for "--increment prerelease" and `--prerelease-id <identifier>`'], ['', 'increment-by <number>', '(default to 1) increment semver flag (patch/minor/major) by. e.g. incrementing patch by 2: 0.0.1 -> 0.0.3.'], ['', 'versions-file <path>', 'path to a file containing component versions. format: "component-id: version"'], ['', 'verbose', 'show verbose output'], ['r', 'auto-merge-resolve <merge-strategy>', 'in case of merge conflict during checkout, resolve according to the provided strategy: [ours, theirs, manual]'], ['', 'force-theirs', 'do not merge during checkout, just overwrite with incoming files']]);
39
+ _defineProperty(this, "options", [['m', 'message <message>', 'If set, use it as the tag message, if not, try and grab from git-commit-message'], ['b', 'build', 'Set to true to build the app locally, false (default) will build on Ripple CI'], ['s', 'strict', 'Set to true to fail on warnings as well as errors, false (default) only fails on errors'], ['l', 'increment <level>', 'options are: [major, premajor, minor, preminor, patch, prepatch, prerelease], default to patch'], ['', 'prerelease-id <id>', 'prerelease identifier (e.g. "dev" to get "1.0.0-dev.1")'], ['p', 'patch', 'syntactic sugar for "--increment patch"'], ['', 'minor', 'syntactic sugar for "--increment minor"'], ['', 'major', 'syntactic sugar for "--increment major"'], ['', 'pre-release [identifier]', 'syntactic sugar for "--increment prerelease" and `--prerelease-id <identifier>`'], ['', 'increment-by <number>', '(default to 1) increment semver flag (patch/minor/major) by. e.g. incrementing patch by 2: 0.0.1 -> 0.0.3.'], ['', 'versions-file <path>', 'path to a file containing component versions. format: "component-id: version"'], ['', 'verbose', 'show verbose output'], ['r', 'auto-merge-resolve <merge-strategy>', 'in case of merge conflict during checkout, resolve according to the provided strategy: [ours, theirs, manual]'], ['', 'force-theirs', 'do not merge during checkout, just overwrite with incoming files'], ['', 'lane-name <name>', 'specify the lane name to delete after merge (auto-detected if not provided)']]);
40
40
  }
41
41
  async report(args, options) {
42
42
  this.logger.console('\n\n');
@@ -65,7 +65,8 @@ class CiMergeCmd {
65
65
  verbose: options.verbose,
66
66
  versionsFile: options.versionsFile,
67
67
  autoMergeResolve: options.autoMergeResolve,
68
- forceTheirs: options.forceTheirs
68
+ forceTheirs: options.forceTheirs,
69
+ laneName: options.laneName
69
70
  });
70
71
  }
71
72
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_workspace","data","require","_snapping","_bitError","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CiMergeCmd","constructor","workspace","logger","ci","report","args","options","console","OutsideWorkspaceError","autoMergeResolve","BitError","releaseType","preReleaseId","validateOptions","explicitVersionBump","Boolean","increment","patch","minor","major","preRelease","mergePr","message","build","strict","incrementBy","verbose","versionsFile","forceTheirs","exports"],"sources":["merge.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport type { Logger } from '@teambit/logger';\nimport { OutsideWorkspaceError, type Workspace } from '@teambit/workspace';\nimport type { ReleaseType } from 'semver';\nimport { validateOptions } from '@teambit/snapping';\nimport { BitError } from '@teambit/bit-error';\nimport type { MergeStrategy } from '@teambit/component.modules.merge-helper';\nimport type { CiMain } from '../ci.main.runtime';\n\ntype Options = {\n message?: string;\n build?: boolean;\n strict?: boolean;\n increment?: ReleaseType;\n patch?: boolean;\n minor?: boolean;\n major?: boolean;\n preRelease?: string;\n prereleaseId?: string;\n incrementBy?: number;\n verbose?: boolean;\n versionsFile?: string;\n autoMergeResolve?: MergeStrategy;\n forceTheirs?: boolean;\n};\n\nexport class CiMergeCmd implements Command {\n name = 'merge';\n description = 'Merges a PR';\n group = 'collaborate';\n\n options: CommandOptions = [\n ['m', 'message <message>', 'If set, use it as the tag message, if not, try and grab from git-commit-message'],\n ['b', 'build', 'Set to true to build the app locally, false (default) will build on Ripple CI'],\n ['s', 'strict', 'Set to true to fail on warnings as well as errors, false (default) only fails on errors'],\n [\n 'l',\n 'increment <level>',\n 'options are: [major, premajor, minor, preminor, patch, prepatch, prerelease], default to patch',\n ],\n ['', 'prerelease-id <id>', 'prerelease identifier (e.g. \"dev\" to get \"1.0.0-dev.1\")'],\n ['p', 'patch', 'syntactic sugar for \"--increment patch\"'],\n ['', 'minor', 'syntactic sugar for \"--increment minor\"'],\n ['', 'major', 'syntactic sugar for \"--increment major\"'],\n ['', 'pre-release [identifier]', 'syntactic sugar for \"--increment prerelease\" and `--prerelease-id <identifier>`'],\n [\n '',\n 'increment-by <number>',\n '(default to 1) increment semver flag (patch/minor/major) by. e.g. incrementing patch by 2: 0.0.1 -> 0.0.3.',\n ],\n ['', 'versions-file <path>', 'path to a file containing component versions. format: \"component-id: version\"'],\n ['', 'verbose', 'show verbose output'],\n [\n 'r',\n 'auto-merge-resolve <merge-strategy>',\n 'in case of merge conflict during checkout, resolve according to the provided strategy: [ours, theirs, manual]',\n ],\n ['', 'force-theirs', 'do not merge during checkout, just overwrite with incoming files'],\n ];\n\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private ci: CiMain\n ) {}\n\n async report(args: unknown, options: Options) {\n this.logger.console('\\n\\n');\n this.logger.console('🚀 Initializing Merge command');\n if (!this.workspace) throw new OutsideWorkspaceError();\n\n // Validate autoMergeResolve option\n if (\n options.autoMergeResolve &&\n options.autoMergeResolve !== 'ours' &&\n options.autoMergeResolve !== 'theirs' &&\n options.autoMergeResolve !== 'manual'\n ) {\n throw new BitError('--auto-merge-resolve must be one of the following: [ours, theirs, manual]');\n }\n\n const { releaseType, preReleaseId } = validateOptions(options);\n\n // Check if user explicitly provided any version bump flags\n const explicitVersionBump = Boolean(\n options.increment || options.patch || options.minor || options.major || options.preRelease\n );\n\n return this.ci.mergePr({\n message: options.message,\n build: options.build,\n strict: options.strict,\n releaseType,\n preReleaseId,\n incrementBy: options.incrementBy,\n explicitVersionBump,\n verbose: options.verbose,\n versionsFile: options.versionsFile,\n autoMergeResolve: options.autoMergeResolve,\n forceTheirs: options.forceTheirs,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_workspace","data","require","_snapping","_bitError","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CiMergeCmd","constructor","workspace","logger","ci","report","args","options","console","OutsideWorkspaceError","autoMergeResolve","BitError","releaseType","preReleaseId","validateOptions","explicitVersionBump","Boolean","increment","patch","minor","major","preRelease","mergePr","message","build","strict","incrementBy","verbose","versionsFile","forceTheirs","laneName","exports"],"sources":["merge.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport type { Logger } from '@teambit/logger';\nimport { OutsideWorkspaceError, type Workspace } from '@teambit/workspace';\nimport type { ReleaseType } from 'semver';\nimport { validateOptions } from '@teambit/snapping';\nimport { BitError } from '@teambit/bit-error';\nimport type { MergeStrategy } from '@teambit/component.modules.merge-helper';\nimport type { CiMain } from '../ci.main.runtime';\n\ntype Options = {\n message?: string;\n build?: boolean;\n strict?: boolean;\n increment?: ReleaseType;\n patch?: boolean;\n minor?: boolean;\n major?: boolean;\n preRelease?: string;\n prereleaseId?: string;\n incrementBy?: number;\n verbose?: boolean;\n versionsFile?: string;\n autoMergeResolve?: MergeStrategy;\n forceTheirs?: boolean;\n laneName?: string;\n};\n\nexport class CiMergeCmd implements Command {\n name = 'merge';\n description = 'Merges a PR';\n group = 'collaborate';\n\n options: CommandOptions = [\n ['m', 'message <message>', 'If set, use it as the tag message, if not, try and grab from git-commit-message'],\n ['b', 'build', 'Set to true to build the app locally, false (default) will build on Ripple CI'],\n ['s', 'strict', 'Set to true to fail on warnings as well as errors, false (default) only fails on errors'],\n [\n 'l',\n 'increment <level>',\n 'options are: [major, premajor, minor, preminor, patch, prepatch, prerelease], default to patch',\n ],\n ['', 'prerelease-id <id>', 'prerelease identifier (e.g. \"dev\" to get \"1.0.0-dev.1\")'],\n ['p', 'patch', 'syntactic sugar for \"--increment patch\"'],\n ['', 'minor', 'syntactic sugar for \"--increment minor\"'],\n ['', 'major', 'syntactic sugar for \"--increment major\"'],\n ['', 'pre-release [identifier]', 'syntactic sugar for \"--increment prerelease\" and `--prerelease-id <identifier>`'],\n [\n '',\n 'increment-by <number>',\n '(default to 1) increment semver flag (patch/minor/major) by. e.g. incrementing patch by 2: 0.0.1 -> 0.0.3.',\n ],\n ['', 'versions-file <path>', 'path to a file containing component versions. format: \"component-id: version\"'],\n ['', 'verbose', 'show verbose output'],\n [\n 'r',\n 'auto-merge-resolve <merge-strategy>',\n 'in case of merge conflict during checkout, resolve according to the provided strategy: [ours, theirs, manual]',\n ],\n ['', 'force-theirs', 'do not merge during checkout, just overwrite with incoming files'],\n ['', 'lane-name <name>', 'specify the lane name to delete after merge (auto-detected if not provided)'],\n ];\n\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private ci: CiMain\n ) {}\n\n async report(args: unknown, options: Options) {\n this.logger.console('\\n\\n');\n this.logger.console('🚀 Initializing Merge command');\n if (!this.workspace) throw new OutsideWorkspaceError();\n\n // Validate autoMergeResolve option\n if (\n options.autoMergeResolve &&\n options.autoMergeResolve !== 'ours' &&\n options.autoMergeResolve !== 'theirs' &&\n options.autoMergeResolve !== 'manual'\n ) {\n throw new BitError('--auto-merge-resolve must be one of the following: [ours, theirs, manual]');\n }\n\n const { releaseType, preReleaseId } = validateOptions(options);\n\n // Check if user explicitly provided any version bump flags\n const explicitVersionBump = Boolean(\n options.increment || options.patch || options.minor || options.major || options.preRelease\n );\n\n return this.ci.mergePr({\n message: options.message,\n build: options.build,\n strict: options.strict,\n releaseType,\n preReleaseId,\n incrementBy: options.incrementBy,\n explicitVersionBump,\n verbose: options.verbose,\n versionsFile: options.versionsFile,\n autoMergeResolve: options.autoMergeResolve,\n forceTheirs: options.forceTheirs,\n laneName: options.laneName,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -39,9 +39,7 @@ class CiPrCmd {
39
39
  if (!currentBranch) {
40
40
  throw new Error('Failed to get branch name');
41
41
  }
42
- // Sanitize branch name to make it valid for Bit lane IDs by replacing slashes and dots with dashes
43
- const sanitizedBranch = currentBranch.replace(/[/.]/g, '-');
44
- laneIdStr = `${this.workspace.defaultScope}/${sanitizedBranch}`;
42
+ laneIdStr = this.ci.convertBranchToLaneId(currentBranch);
45
43
  }
46
44
  if (options.message) {
47
45
  message = options.message;
@@ -1 +1 @@
1
- {"version":3,"names":["_workspace","data","require","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CiPrCmd","constructor","workspace","logger","ci","report","args","options","console","OutsideWorkspaceError","laneIdStr","message","lane","currentBranch","getBranchName","catch","Error","toString","sanitizedBranch","replace","defaultScope","commitMessage","getGitCommitMessage","results","snapPrCommit","build","strict","exports"],"sources":["pr.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport type { Logger } from '@teambit/logger';\nimport { OutsideWorkspaceError, type Workspace } from '@teambit/workspace';\nimport type { CiMain } from '../ci.main.runtime';\n\ntype Options = {\n message?: string;\n build?: boolean;\n lane?: string;\n strict?: boolean;\n};\n\nexport class CiPrCmd implements Command {\n name = 'pr';\n description = 'This command is meant to run when a PR was open/updated and meant to export a lane to bit-cloud.';\n group = 'collaborate';\n\n options: CommandOptions = [\n ['m', 'message <message>', 'If set, set it as the snap message, if not, try and grab from git-commit-message'],\n ['l', 'lane <lane>', 'If set, use as the lane name, if not available, grab from git-branch name'],\n ['b', 'build', 'Set to true to build the app locally, false (default) will build on Ripple CI'],\n ['s', 'strict', 'Set to true to fail on warnings as well as errors, false (default) only fails on errors'],\n ];\n\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private ci: CiMain\n ) {}\n\n async report(args: unknown, options: Options) {\n this.logger.console('\\n\\n');\n this.logger.console('🚀 Initializing PR command');\n if (!this.workspace) throw new OutsideWorkspaceError();\n\n let laneIdStr: string;\n let message: string;\n\n if (options.lane) {\n laneIdStr = options.lane;\n } else {\n const currentBranch = await this.ci.getBranchName().catch((e) => {\n throw new Error(`Failed to get branch name from Git: ${e.toString()}`);\n });\n if (!currentBranch) {\n throw new Error('Failed to get branch name');\n }\n // Sanitize branch name to make it valid for Bit lane IDs by replacing slashes and dots with dashes\n const sanitizedBranch = currentBranch.replace(/[/.]/g, '-');\n laneIdStr = `${this.workspace.defaultScope}/${sanitizedBranch}`;\n }\n\n if (options.message) {\n message = options.message;\n } else {\n const commitMessage = await this.ci.getGitCommitMessage();\n if (!commitMessage) {\n throw new Error('Failed to get commit message');\n }\n message = commitMessage;\n }\n\n const results = await this.ci.snapPrCommit({\n laneIdStr: laneIdStr,\n message,\n build: options.build,\n strict: options.strict,\n });\n\n if (results) {\n return results;\n }\n\n return `PR command executed successfully`;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_workspace","data","require","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CiPrCmd","constructor","workspace","logger","ci","report","args","options","console","OutsideWorkspaceError","laneIdStr","message","lane","currentBranch","getBranchName","catch","Error","toString","convertBranchToLaneId","commitMessage","getGitCommitMessage","results","snapPrCommit","build","strict","exports"],"sources":["pr.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport type { Logger } from '@teambit/logger';\nimport { OutsideWorkspaceError, type Workspace } from '@teambit/workspace';\nimport type { CiMain } from '../ci.main.runtime';\n\ntype Options = {\n message?: string;\n build?: boolean;\n lane?: string;\n strict?: boolean;\n};\n\nexport class CiPrCmd implements Command {\n name = 'pr';\n description = 'This command is meant to run when a PR was open/updated and meant to export a lane to bit-cloud.';\n group = 'collaborate';\n\n options: CommandOptions = [\n ['m', 'message <message>', 'If set, set it as the snap message, if not, try and grab from git-commit-message'],\n ['l', 'lane <lane>', 'If set, use as the lane name, if not available, grab from git-branch name'],\n ['b', 'build', 'Set to true to build the app locally, false (default) will build on Ripple CI'],\n ['s', 'strict', 'Set to true to fail on warnings as well as errors, false (default) only fails on errors'],\n ];\n\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private ci: CiMain\n ) {}\n\n async report(args: unknown, options: Options) {\n this.logger.console('\\n\\n');\n this.logger.console('🚀 Initializing PR command');\n if (!this.workspace) throw new OutsideWorkspaceError();\n\n let laneIdStr: string;\n let message: string;\n\n if (options.lane) {\n laneIdStr = options.lane;\n } else {\n const currentBranch = await this.ci.getBranchName().catch((e) => {\n throw new Error(`Failed to get branch name from Git: ${e.toString()}`);\n });\n if (!currentBranch) {\n throw new Error('Failed to get branch name');\n }\n laneIdStr = this.ci.convertBranchToLaneId(currentBranch);\n }\n\n if (options.message) {\n message = options.message;\n } else {\n const commitMessage = await this.ci.getGitCommitMessage();\n if (!commitMessage) {\n throw new Error('Failed to get commit message');\n }\n message = commitMessage;\n }\n\n const results = await this.ci.snapPrCommit({\n laneIdStr: laneIdStr,\n message,\n build: options.build,\n strict: options.strict,\n });\n\n if (results) {\n return results;\n }\n\n return `PR command executed successfully`;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  ;
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.git_ci@1.0.79/dist/ci.docs.mdx';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.git_ci@1.0.80/dist/ci.docs.mdx';
3
3
 
4
4
  export const compositions = [];
5
5
  export const overview = [overview_0];
@@ -0,0 +1,54 @@
1
+ import type { Logger } from '@teambit/logger';
2
+ /**
3
+ * Utility class for detecting source branch names in CI environments after PR merge.
4
+ *
5
+ * **Core Challenge**: When `bit ci merge` runs on CI after a PR is merged, the current
6
+ * branch is main/master, but we need to identify which branch was just merged in order
7
+ * to delete the corresponding Bit lane. CI environment variables like GITHUB_HEAD_REF
8
+ * are only available during pull_request events, not push events after merge.
9
+ *
10
+ * **Solution Strategy**:
11
+ * 1. GitHub API - Query PR information using current commit SHA (works post-merge)
12
+ * 2. Commit message parsing - Extract branch names from merge commit messages
13
+ * 3. Multi-platform repository detection - Works across GitHub Actions, CircleCI, etc.
14
+ *
15
+ * This enables automatic lane cleanup even when CI runs on main branch after merge.
16
+ */
17
+ export declare class SourceBranchDetector {
18
+ private logger;
19
+ constructor(logger: Logger);
20
+ /**
21
+ * Determines which branch was just merged into main/master in CI environments.
22
+ *
23
+ * **Use Case**: When CI runs `bit ci merge` after a PR merge, we're on main branch
24
+ * but need to identify the source branch to delete its corresponding Bit lane.
25
+ *
26
+ * **Detection Methods** (in order of preference):
27
+ * 1. GitHub API - Most reliable for GitHub repos (works with/without token)
28
+ * 2. Commit message parsing - Universal fallback for all Git platforms
29
+ *
30
+ * @returns The source branch name that was merged, or null if undetectable
31
+ * @example
32
+ * ```typescript
33
+ * const detector = new SourceBranchDetector(logger);
34
+ * const branch = await detector.getSourceBranchName();
35
+ * // Returns: "feature/new-component" (the branch that was just merged)
36
+ * ```
37
+ */
38
+ getSourceBranchName(): Promise<string | null>;
39
+ /**
40
+ * Uses GitHub API to get pull request information from the current commit SHA.
41
+ * This works even when running on push events after PR merge.
42
+ * Enhanced to work with CircleCI and open source repos without tokens.
43
+ */
44
+ private getSourceBranchFromGitHubAPI;
45
+ /**
46
+ * Attempts to determine the GitHub repository (owner/repo) from environment variables
47
+ * or by parsing the git remote origin URL. Works across different CI platforms.
48
+ */
49
+ private getGitHubRepository;
50
+ /**
51
+ * Gets the current git commit message
52
+ */
53
+ private getGitCommitMessage;
54
+ }
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SourceBranchDetector = void 0;
7
+ function _git() {
8
+ const data = require("./git");
9
+ _git = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ /**
15
+ * Utility class for detecting source branch names in CI environments after PR merge.
16
+ *
17
+ * **Core Challenge**: When `bit ci merge` runs on CI after a PR is merged, the current
18
+ * branch is main/master, but we need to identify which branch was just merged in order
19
+ * to delete the corresponding Bit lane. CI environment variables like GITHUB_HEAD_REF
20
+ * are only available during pull_request events, not push events after merge.
21
+ *
22
+ * **Solution Strategy**:
23
+ * 1. GitHub API - Query PR information using current commit SHA (works post-merge)
24
+ * 2. Commit message parsing - Extract branch names from merge commit messages
25
+ * 3. Multi-platform repository detection - Works across GitHub Actions, CircleCI, etc.
26
+ *
27
+ * This enables automatic lane cleanup even when CI runs on main branch after merge.
28
+ */
29
+ class SourceBranchDetector {
30
+ constructor(logger) {
31
+ this.logger = logger;
32
+ }
33
+
34
+ /**
35
+ * Determines which branch was just merged into main/master in CI environments.
36
+ *
37
+ * **Use Case**: When CI runs `bit ci merge` after a PR merge, we're on main branch
38
+ * but need to identify the source branch to delete its corresponding Bit lane.
39
+ *
40
+ * **Detection Methods** (in order of preference):
41
+ * 1. GitHub API - Most reliable for GitHub repos (works with/without token)
42
+ * 2. Commit message parsing - Universal fallback for all Git platforms
43
+ *
44
+ * @returns The source branch name that was merged, or null if undetectable
45
+ * @example
46
+ * ```typescript
47
+ * const detector = new SourceBranchDetector(logger);
48
+ * const branch = await detector.getSourceBranchName();
49
+ * // Returns: "feature/new-component" (the branch that was just merged)
50
+ * ```
51
+ */
52
+ async getSourceBranchName() {
53
+ try {
54
+ // Primary approach: GitHub API - query PR info from current commit SHA
55
+ // This is the most reliable method for GitHub repositories
56
+ const githubBranch = await this.getSourceBranchFromGitHubAPI();
57
+ if (githubBranch) {
58
+ return githubBranch;
59
+ }
60
+
61
+ // Fallback: parse from git commit message (works universally)
62
+ // This handles GitLab, Azure DevOps, and other platforms
63
+ const commitMessage = await this.getGitCommitMessage();
64
+ if (commitMessage) {
65
+ // Pattern: "Merge pull request #123 from user/branch-name"
66
+ const mergePattern = /Merge pull request #\d+ from [^/]+\/(.+)/;
67
+ const match = commitMessage.match(mergePattern);
68
+ if (match) {
69
+ const branchName = match[1];
70
+ this.logger.console(`Found source branch from merge commit message: ${branchName}`);
71
+ return branchName;
72
+ }
73
+
74
+ // Pattern: "Merge branch 'branch-name' into main"
75
+ const directMergePattern = /Merge branch '([^']+)'/;
76
+ const directMatch = commitMessage.match(directMergePattern);
77
+ if (directMatch && directMatch[1] !== 'main' && directMatch[1] !== 'master') {
78
+ const branchName = directMatch[1];
79
+ this.logger.console(`Found source branch from direct merge commit: ${branchName}`);
80
+ return branchName;
81
+ }
82
+
83
+ // Pattern: "Merge remote-tracking branch 'origin/branch-name'"
84
+ const remoteTrackingPattern = /Merge remote-tracking branch 'origin\/([^']+)'/;
85
+ const remoteMatch = commitMessage.match(remoteTrackingPattern);
86
+ if (remoteMatch && remoteMatch[1] !== 'main' && remoteMatch[1] !== 'master') {
87
+ const branchName = remoteMatch[1];
88
+ this.logger.console(`Found source branch from remote tracking merge: ${branchName}`);
89
+ return branchName;
90
+ }
91
+
92
+ // GitLab-specific pattern: "Merge branch 'feature-branch' into 'main'"
93
+ const gitlabMergePattern = /Merge branch '([^']+)' into '[^']+'/;
94
+ const gitlabMatch = commitMessage.match(gitlabMergePattern);
95
+ if (gitlabMatch && gitlabMatch[1] !== 'main' && gitlabMatch[1] !== 'master') {
96
+ const branchName = gitlabMatch[1];
97
+ this.logger.console(`Found source branch from GitLab merge commit: ${branchName}`);
98
+ return branchName;
99
+ }
100
+ }
101
+ this.logger.console('Unable to determine source branch name from API or git commit history');
102
+ return null;
103
+ } catch (e) {
104
+ this.logger.console(`Error determining source branch name: ${e.toString()}`);
105
+ return null;
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Uses GitHub API to get pull request information from the current commit SHA.
111
+ * This works even when running on push events after PR merge.
112
+ * Enhanced to work with CircleCI and open source repos without tokens.
113
+ */
114
+ async getSourceBranchFromGitHubAPI() {
115
+ try {
116
+ // Try to get GitHub repository info from environment or git remote
117
+ const githubRepository = await this.getGitHubRepository();
118
+ if (!githubRepository) {
119
+ this.logger.console('Not a GitHub repository, skipping GitHub API approach');
120
+ return null;
121
+ }
122
+
123
+ // Get current commit SHA
124
+ const currentCommit = await _git().git.revparse(['HEAD']);
125
+ if (!currentCommit) {
126
+ this.logger.console('Unable to get current commit SHA');
127
+ return null;
128
+ }
129
+ this.logger.console(`Querying GitHub API for PR info using commit SHA: ${currentCommit.trim()}`);
130
+
131
+ // Query GitHub API for pull requests associated with this commit
132
+ const apiUrl = `https://api.github.com/repos/${githubRepository}/commits/${currentCommit.trim()}/pulls`;
133
+
134
+ // Try with token first (if available), then without token for public repos
135
+ const githubToken = process.env.GITHUB_TOKEN;
136
+ const headers = {
137
+ Accept: 'application/vnd.github+json',
138
+ 'X-GitHub-Api-Version': '2022-11-28'
139
+ };
140
+ if (githubToken) {
141
+ headers.Authorization = `Bearer ${githubToken}`;
142
+ this.logger.console('Using GitHub token for API request');
143
+ } else {
144
+ this.logger.console('No GitHub token found, attempting public API access');
145
+ }
146
+ const response = await fetch(apiUrl, {
147
+ headers
148
+ });
149
+ if (!response.ok) {
150
+ if (response.status === 401 || response.status === 403) {
151
+ if (!githubToken) {
152
+ this.logger.console(`GitHub API request failed (${response.status}): Repository may be private. Please set GITHUB_TOKEN environment variable.`);
153
+ } else {
154
+ this.logger.console(`GitHub API request failed (${response.status}): Token may be invalid or insufficient permissions`);
155
+ }
156
+ } else {
157
+ this.logger.console(`GitHub API request failed: ${response.status} ${response.statusText}`);
158
+ }
159
+ return null;
160
+ }
161
+ const pullRequests = await response.json();
162
+ if (pullRequests && pullRequests.length > 0) {
163
+ // Get the first (most recent) PR that contains this commit
164
+ const pr = pullRequests[0];
165
+ const sourceBranch = pr.head.ref;
166
+ this.logger.console(`Found source branch from GitHub API: ${sourceBranch} (PR #${pr.number})`);
167
+ return sourceBranch;
168
+ } else {
169
+ this.logger.console('No pull requests found for current commit SHA');
170
+ return null;
171
+ }
172
+ } catch (e) {
173
+ this.logger.console(`Error querying GitHub API: ${e.toString()}`);
174
+ return null;
175
+ }
176
+ }
177
+
178
+ /**
179
+ * Attempts to determine the GitHub repository (owner/repo) from environment variables
180
+ * or by parsing the git remote origin URL. Works across different CI platforms.
181
+ */
182
+ async getGitHubRepository() {
183
+ try {
184
+ // First, try environment variables (GitHub Actions)
185
+ if (process.env.GITHUB_REPOSITORY) {
186
+ this.logger.console(`Found GitHub repository from GITHUB_REPOSITORY: ${process.env.GITHUB_REPOSITORY}`);
187
+ return process.env.GITHUB_REPOSITORY;
188
+ }
189
+
190
+ // CircleCI provides repository info in different format
191
+ if (process.env.CIRCLE_PROJECT_USERNAME && process.env.CIRCLE_PROJECT_REPONAME) {
192
+ const repo = `${process.env.CIRCLE_PROJECT_USERNAME}/${process.env.CIRCLE_PROJECT_REPONAME}`;
193
+ this.logger.console(`Found GitHub repository from CircleCI: ${repo}`);
194
+ return repo;
195
+ }
196
+
197
+ // Fallback: parse from git remote origin URL
198
+ this.logger.console('Attempting to extract GitHub repository from git remote origin');
199
+ const remoteUrl = await _git().git.raw(['config', '--get', 'remote.origin.url']);
200
+ if (remoteUrl) {
201
+ const trimmedUrl = remoteUrl.trim();
202
+
203
+ // Match GitHub URLs in various formats:
204
+ // https://github.com/owner/repo.git
205
+ // git@github.com:owner/repo.git
206
+ // https://github.com/owner/repo
207
+ const githubPatterns = [/github\.com[:/]([^/]+)\/([^/.]+)(?:\.git)?/, /github\.com\/([^/]+)\/([^/.]+)/];
208
+ for (const pattern of githubPatterns) {
209
+ const match = trimmedUrl.match(pattern);
210
+ if (match) {
211
+ const repo = `${match[1]}/${match[2]}`;
212
+ this.logger.console(`Extracted GitHub repository from git remote: ${repo}`);
213
+ return repo;
214
+ }
215
+ }
216
+ }
217
+ this.logger.console('Unable to determine GitHub repository from environment or git remote');
218
+ return null;
219
+ } catch (e) {
220
+ this.logger.console(`Error determining GitHub repository: ${e.toString()}`);
221
+ return null;
222
+ }
223
+ }
224
+
225
+ /**
226
+ * Gets the current git commit message
227
+ */
228
+ async getGitCommitMessage() {
229
+ try {
230
+ const commit = await _git().git.log({
231
+ maxCount: 1
232
+ });
233
+ if (!commit.latest) {
234
+ return null;
235
+ }
236
+ const {
237
+ message,
238
+ body
239
+ } = commit.latest;
240
+ return body ? `${message}\n\n${body}` : message;
241
+ } catch (e) {
242
+ this.logger.console(`Unable to read commit message: ${e.toString()}`);
243
+ return null;
244
+ }
245
+ }
246
+ }
247
+ exports.SourceBranchDetector = SourceBranchDetector;
248
+
249
+ //# sourceMappingURL=source-branch-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_git","data","require","SourceBranchDetector","constructor","logger","getSourceBranchName","githubBranch","getSourceBranchFromGitHubAPI","commitMessage","getGitCommitMessage","mergePattern","match","branchName","console","directMergePattern","directMatch","remoteTrackingPattern","remoteMatch","gitlabMergePattern","gitlabMatch","e","toString","githubRepository","getGitHubRepository","currentCommit","git","revparse","trim","apiUrl","githubToken","process","env","GITHUB_TOKEN","headers","Accept","Authorization","response","fetch","ok","status","statusText","pullRequests","json","length","pr","sourceBranch","head","ref","number","GITHUB_REPOSITORY","CIRCLE_PROJECT_USERNAME","CIRCLE_PROJECT_REPONAME","repo","remoteUrl","raw","trimmedUrl","githubPatterns","pattern","commit","log","maxCount","latest","message","body","exports"],"sources":["source-branch-detector.ts"],"sourcesContent":["import type { Logger } from '@teambit/logger';\nimport { git } from './git';\n\n/**\n * Utility class for detecting source branch names in CI environments after PR merge.\n *\n * **Core Challenge**: When `bit ci merge` runs on CI after a PR is merged, the current\n * branch is main/master, but we need to identify which branch was just merged in order\n * to delete the corresponding Bit lane. CI environment variables like GITHUB_HEAD_REF\n * are only available during pull_request events, not push events after merge.\n *\n * **Solution Strategy**:\n * 1. GitHub API - Query PR information using current commit SHA (works post-merge)\n * 2. Commit message parsing - Extract branch names from merge commit messages\n * 3. Multi-platform repository detection - Works across GitHub Actions, CircleCI, etc.\n *\n * This enables automatic lane cleanup even when CI runs on main branch after merge.\n */\nexport class SourceBranchDetector {\n constructor(private logger: Logger) {}\n\n /**\n * Determines which branch was just merged into main/master in CI environments.\n *\n * **Use Case**: When CI runs `bit ci merge` after a PR merge, we're on main branch\n * but need to identify the source branch to delete its corresponding Bit lane.\n *\n * **Detection Methods** (in order of preference):\n * 1. GitHub API - Most reliable for GitHub repos (works with/without token)\n * 2. Commit message parsing - Universal fallback for all Git platforms\n *\n * @returns The source branch name that was merged, or null if undetectable\n * @example\n * ```typescript\n * const detector = new SourceBranchDetector(logger);\n * const branch = await detector.getSourceBranchName();\n * // Returns: \"feature/new-component\" (the branch that was just merged)\n * ```\n */\n async getSourceBranchName(): Promise<string | null> {\n try {\n // Primary approach: GitHub API - query PR info from current commit SHA\n // This is the most reliable method for GitHub repositories\n const githubBranch = await this.getSourceBranchFromGitHubAPI();\n if (githubBranch) {\n return githubBranch;\n }\n\n // Fallback: parse from git commit message (works universally)\n // This handles GitLab, Azure DevOps, and other platforms\n const commitMessage = await this.getGitCommitMessage();\n if (commitMessage) {\n // Pattern: \"Merge pull request #123 from user/branch-name\"\n const mergePattern = /Merge pull request #\\d+ from [^/]+\\/(.+)/;\n const match = commitMessage.match(mergePattern);\n if (match) {\n const branchName = match[1];\n this.logger.console(`Found source branch from merge commit message: ${branchName}`);\n return branchName;\n }\n\n // Pattern: \"Merge branch 'branch-name' into main\"\n const directMergePattern = /Merge branch '([^']+)'/;\n const directMatch = commitMessage.match(directMergePattern);\n if (directMatch && directMatch[1] !== 'main' && directMatch[1] !== 'master') {\n const branchName = directMatch[1];\n this.logger.console(`Found source branch from direct merge commit: ${branchName}`);\n return branchName;\n }\n\n // Pattern: \"Merge remote-tracking branch 'origin/branch-name'\"\n const remoteTrackingPattern = /Merge remote-tracking branch 'origin\\/([^']+)'/;\n const remoteMatch = commitMessage.match(remoteTrackingPattern);\n if (remoteMatch && remoteMatch[1] !== 'main' && remoteMatch[1] !== 'master') {\n const branchName = remoteMatch[1];\n this.logger.console(`Found source branch from remote tracking merge: ${branchName}`);\n return branchName;\n }\n\n // GitLab-specific pattern: \"Merge branch 'feature-branch' into 'main'\"\n const gitlabMergePattern = /Merge branch '([^']+)' into '[^']+'/;\n const gitlabMatch = commitMessage.match(gitlabMergePattern);\n if (gitlabMatch && gitlabMatch[1] !== 'main' && gitlabMatch[1] !== 'master') {\n const branchName = gitlabMatch[1];\n this.logger.console(`Found source branch from GitLab merge commit: ${branchName}`);\n return branchName;\n }\n }\n\n this.logger.console('Unable to determine source branch name from API or git commit history');\n return null;\n } catch (e: any) {\n this.logger.console(`Error determining source branch name: ${e.toString()}`);\n return null;\n }\n }\n\n /**\n * Uses GitHub API to get pull request information from the current commit SHA.\n * This works even when running on push events after PR merge.\n * Enhanced to work with CircleCI and open source repos without tokens.\n */\n private async getSourceBranchFromGitHubAPI(): Promise<string | null> {\n try {\n // Try to get GitHub repository info from environment or git remote\n const githubRepository = await this.getGitHubRepository();\n if (!githubRepository) {\n this.logger.console('Not a GitHub repository, skipping GitHub API approach');\n return null;\n }\n\n // Get current commit SHA\n const currentCommit = await git.revparse(['HEAD']);\n if (!currentCommit) {\n this.logger.console('Unable to get current commit SHA');\n return null;\n }\n\n this.logger.console(`Querying GitHub API for PR info using commit SHA: ${currentCommit.trim()}`);\n\n // Query GitHub API for pull requests associated with this commit\n const apiUrl = `https://api.github.com/repos/${githubRepository}/commits/${currentCommit.trim()}/pulls`;\n\n // Try with token first (if available), then without token for public repos\n const githubToken = process.env.GITHUB_TOKEN;\n const headers: Record<string, string> = {\n Accept: 'application/vnd.github+json',\n 'X-GitHub-Api-Version': '2022-11-28',\n };\n\n if (githubToken) {\n headers.Authorization = `Bearer ${githubToken}`;\n this.logger.console('Using GitHub token for API request');\n } else {\n this.logger.console('No GitHub token found, attempting public API access');\n }\n\n const response = await fetch(apiUrl, { headers });\n\n if (!response.ok) {\n if (response.status === 401 || response.status === 403) {\n if (!githubToken) {\n this.logger.console(\n `GitHub API request failed (${response.status}): Repository may be private. Please set GITHUB_TOKEN environment variable.`\n );\n } else {\n this.logger.console(\n `GitHub API request failed (${response.status}): Token may be invalid or insufficient permissions`\n );\n }\n } else {\n this.logger.console(`GitHub API request failed: ${response.status} ${response.statusText}`);\n }\n return null;\n }\n\n const pullRequests = await response.json();\n\n if (pullRequests && pullRequests.length > 0) {\n // Get the first (most recent) PR that contains this commit\n const pr = pullRequests[0];\n const sourceBranch = pr.head.ref;\n this.logger.console(`Found source branch from GitHub API: ${sourceBranch} (PR #${pr.number})`);\n return sourceBranch;\n } else {\n this.logger.console('No pull requests found for current commit SHA');\n return null;\n }\n } catch (e: any) {\n this.logger.console(`Error querying GitHub API: ${e.toString()}`);\n return null;\n }\n }\n\n /**\n * Attempts to determine the GitHub repository (owner/repo) from environment variables\n * or by parsing the git remote origin URL. Works across different CI platforms.\n */\n private async getGitHubRepository(): Promise<string | null> {\n try {\n // First, try environment variables (GitHub Actions)\n if (process.env.GITHUB_REPOSITORY) {\n this.logger.console(`Found GitHub repository from GITHUB_REPOSITORY: ${process.env.GITHUB_REPOSITORY}`);\n return process.env.GITHUB_REPOSITORY;\n }\n\n // CircleCI provides repository info in different format\n if (process.env.CIRCLE_PROJECT_USERNAME && process.env.CIRCLE_PROJECT_REPONAME) {\n const repo = `${process.env.CIRCLE_PROJECT_USERNAME}/${process.env.CIRCLE_PROJECT_REPONAME}`;\n this.logger.console(`Found GitHub repository from CircleCI: ${repo}`);\n return repo;\n }\n\n // Fallback: parse from git remote origin URL\n this.logger.console('Attempting to extract GitHub repository from git remote origin');\n const remoteUrl = await git.raw(['config', '--get', 'remote.origin.url']);\n\n if (remoteUrl) {\n const trimmedUrl = remoteUrl.trim();\n\n // Match GitHub URLs in various formats:\n // https://github.com/owner/repo.git\n // git@github.com:owner/repo.git\n // https://github.com/owner/repo\n const githubPatterns = [/github\\.com[:/]([^/]+)\\/([^/.]+)(?:\\.git)?/, /github\\.com\\/([^/]+)\\/([^/.]+)/];\n\n for (const pattern of githubPatterns) {\n const match = trimmedUrl.match(pattern);\n if (match) {\n const repo = `${match[1]}/${match[2]}`;\n this.logger.console(`Extracted GitHub repository from git remote: ${repo}`);\n return repo;\n }\n }\n }\n\n this.logger.console('Unable to determine GitHub repository from environment or git remote');\n return null;\n } catch (e: any) {\n this.logger.console(`Error determining GitHub repository: ${e.toString()}`);\n return null;\n }\n }\n\n /**\n * Gets the current git commit message\n */\n private async getGitCommitMessage(): Promise<string | null> {\n try {\n const commit = await git.log({\n maxCount: 1,\n });\n if (!commit.latest) {\n return null;\n }\n const { message, body } = commit.latest;\n return body ? `${message}\\n\\n${body}` : message;\n } catch (e: any) {\n this.logger.console(`Unable to read commit message: ${e.toString()}`);\n return null;\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,oBAAoB,CAAC;EAChCC,WAAWA,CAASC,MAAc,EAAE;IAAA,KAAhBA,MAAc,GAAdA,MAAc;EAAG;;EAErC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,mBAAmBA,CAAA,EAA2B;IAClD,IAAI;MACF;MACA;MACA,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACC,4BAA4B,CAAC,CAAC;MAC9D,IAAID,YAAY,EAAE;QAChB,OAAOA,YAAY;MACrB;;MAEA;MACA;MACA,MAAME,aAAa,GAAG,MAAM,IAAI,CAACC,mBAAmB,CAAC,CAAC;MACtD,IAAID,aAAa,EAAE;QACjB;QACA,MAAME,YAAY,GAAG,0CAA0C;QAC/D,MAAMC,KAAK,GAAGH,aAAa,CAACG,KAAK,CAACD,YAAY,CAAC;QAC/C,IAAIC,KAAK,EAAE;UACT,MAAMC,UAAU,GAAGD,KAAK,CAAC,CAAC,CAAC;UAC3B,IAAI,CAACP,MAAM,CAACS,OAAO,CAAC,kDAAkDD,UAAU,EAAE,CAAC;UACnF,OAAOA,UAAU;QACnB;;QAEA;QACA,MAAME,kBAAkB,GAAG,wBAAwB;QACnD,MAAMC,WAAW,GAAGP,aAAa,CAACG,KAAK,CAACG,kBAAkB,CAAC;QAC3D,IAAIC,WAAW,IAAIA,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,IAAIA,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;UAC3E,MAAMH,UAAU,GAAGG,WAAW,CAAC,CAAC,CAAC;UACjC,IAAI,CAACX,MAAM,CAACS,OAAO,CAAC,iDAAiDD,UAAU,EAAE,CAAC;UAClF,OAAOA,UAAU;QACnB;;QAEA;QACA,MAAMI,qBAAqB,GAAG,gDAAgD;QAC9E,MAAMC,WAAW,GAAGT,aAAa,CAACG,KAAK,CAACK,qBAAqB,CAAC;QAC9D,IAAIC,WAAW,IAAIA,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,IAAIA,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;UAC3E,MAAML,UAAU,GAAGK,WAAW,CAAC,CAAC,CAAC;UACjC,IAAI,CAACb,MAAM,CAACS,OAAO,CAAC,mDAAmDD,UAAU,EAAE,CAAC;UACpF,OAAOA,UAAU;QACnB;;QAEA;QACA,MAAMM,kBAAkB,GAAG,qCAAqC;QAChE,MAAMC,WAAW,GAAGX,aAAa,CAACG,KAAK,CAACO,kBAAkB,CAAC;QAC3D,IAAIC,WAAW,IAAIA,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,IAAIA,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;UAC3E,MAAMP,UAAU,GAAGO,WAAW,CAAC,CAAC,CAAC;UACjC,IAAI,CAACf,MAAM,CAACS,OAAO,CAAC,iDAAiDD,UAAU,EAAE,CAAC;UAClF,OAAOA,UAAU;QACnB;MACF;MAEA,IAAI,CAACR,MAAM,CAACS,OAAO,CAAC,uEAAuE,CAAC;MAC5F,OAAO,IAAI;IACb,CAAC,CAAC,OAAOO,CAAM,EAAE;MACf,IAAI,CAAChB,MAAM,CAACS,OAAO,CAAC,yCAAyCO,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,CAAC;MAC5E,OAAO,IAAI;IACb;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAcd,4BAA4BA,CAAA,EAA2B;IACnE,IAAI;MACF;MACA,MAAMe,gBAAgB,GAAG,MAAM,IAAI,CAACC,mBAAmB,CAAC,CAAC;MACzD,IAAI,CAACD,gBAAgB,EAAE;QACrB,IAAI,CAAClB,MAAM,CAACS,OAAO,CAAC,uDAAuD,CAAC;QAC5E,OAAO,IAAI;MACb;;MAEA;MACA,MAAMW,aAAa,GAAG,MAAMC,UAAG,CAACC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;MAClD,IAAI,CAACF,aAAa,EAAE;QAClB,IAAI,CAACpB,MAAM,CAACS,OAAO,CAAC,kCAAkC,CAAC;QACvD,OAAO,IAAI;MACb;MAEA,IAAI,CAACT,MAAM,CAACS,OAAO,CAAC,qDAAqDW,aAAa,CAACG,IAAI,CAAC,CAAC,EAAE,CAAC;;MAEhG;MACA,MAAMC,MAAM,GAAG,gCAAgCN,gBAAgB,YAAYE,aAAa,CAACG,IAAI,CAAC,CAAC,QAAQ;;MAEvG;MACA,MAAME,WAAW,GAAGC,OAAO,CAACC,GAAG,CAACC,YAAY;MAC5C,MAAMC,OAA+B,GAAG;QACtCC,MAAM,EAAE,6BAA6B;QACrC,sBAAsB,EAAE;MAC1B,CAAC;MAED,IAAIL,WAAW,EAAE;QACfI,OAAO,CAACE,aAAa,GAAG,UAAUN,WAAW,EAAE;QAC/C,IAAI,CAACzB,MAAM,CAACS,OAAO,CAAC,oCAAoC,CAAC;MAC3D,CAAC,MAAM;QACL,IAAI,CAACT,MAAM,CAACS,OAAO,CAAC,qDAAqD,CAAC;MAC5E;MAEA,MAAMuB,QAAQ,GAAG,MAAMC,KAAK,CAACT,MAAM,EAAE;QAAEK;MAAQ,CAAC,CAAC;MAEjD,IAAI,CAACG,QAAQ,CAACE,EAAE,EAAE;QAChB,IAAIF,QAAQ,CAACG,MAAM,KAAK,GAAG,IAAIH,QAAQ,CAACG,MAAM,KAAK,GAAG,EAAE;UACtD,IAAI,CAACV,WAAW,EAAE;YAChB,IAAI,CAACzB,MAAM,CAACS,OAAO,CACjB,8BAA8BuB,QAAQ,CAACG,MAAM,6EAC/C,CAAC;UACH,CAAC,MAAM;YACL,IAAI,CAACnC,MAAM,CAACS,OAAO,CACjB,8BAA8BuB,QAAQ,CAACG,MAAM,qDAC/C,CAAC;UACH;QACF,CAAC,MAAM;UACL,IAAI,CAACnC,MAAM,CAACS,OAAO,CAAC,8BAA8BuB,QAAQ,CAACG,MAAM,IAAIH,QAAQ,CAACI,UAAU,EAAE,CAAC;QAC7F;QACA,OAAO,IAAI;MACb;MAEA,MAAMC,YAAY,GAAG,MAAML,QAAQ,CAACM,IAAI,CAAC,CAAC;MAE1C,IAAID,YAAY,IAAIA,YAAY,CAACE,MAAM,GAAG,CAAC,EAAE;QAC3C;QACA,MAAMC,EAAE,GAAGH,YAAY,CAAC,CAAC,CAAC;QAC1B,MAAMI,YAAY,GAAGD,EAAE,CAACE,IAAI,CAACC,GAAG;QAChC,IAAI,CAAC3C,MAAM,CAACS,OAAO,CAAC,wCAAwCgC,YAAY,SAASD,EAAE,CAACI,MAAM,GAAG,CAAC;QAC9F,OAAOH,YAAY;MACrB,CAAC,MAAM;QACL,IAAI,CAACzC,MAAM,CAACS,OAAO,CAAC,+CAA+C,CAAC;QACpE,OAAO,IAAI;MACb;IACF,CAAC,CAAC,OAAOO,CAAM,EAAE;MACf,IAAI,CAAChB,MAAM,CAACS,OAAO,CAAC,8BAA8BO,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,CAAC;MACjE,OAAO,IAAI;IACb;EACF;;EAEA;AACF;AACA;AACA;EACE,MAAcE,mBAAmBA,CAAA,EAA2B;IAC1D,IAAI;MACF;MACA,IAAIO,OAAO,CAACC,GAAG,CAACkB,iBAAiB,EAAE;QACjC,IAAI,CAAC7C,MAAM,CAACS,OAAO,CAAC,mDAAmDiB,OAAO,CAACC,GAAG,CAACkB,iBAAiB,EAAE,CAAC;QACvG,OAAOnB,OAAO,CAACC,GAAG,CAACkB,iBAAiB;MACtC;;MAEA;MACA,IAAInB,OAAO,CAACC,GAAG,CAACmB,uBAAuB,IAAIpB,OAAO,CAACC,GAAG,CAACoB,uBAAuB,EAAE;QAC9E,MAAMC,IAAI,GAAG,GAAGtB,OAAO,CAACC,GAAG,CAACmB,uBAAuB,IAAIpB,OAAO,CAACC,GAAG,CAACoB,uBAAuB,EAAE;QAC5F,IAAI,CAAC/C,MAAM,CAACS,OAAO,CAAC,0CAA0CuC,IAAI,EAAE,CAAC;QACrE,OAAOA,IAAI;MACb;;MAEA;MACA,IAAI,CAAChD,MAAM,CAACS,OAAO,CAAC,gEAAgE,CAAC;MACrF,MAAMwC,SAAS,GAAG,MAAM5B,UAAG,CAAC6B,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;MAEzE,IAAID,SAAS,EAAE;QACb,MAAME,UAAU,GAAGF,SAAS,CAAC1B,IAAI,CAAC,CAAC;;QAEnC;QACA;QACA;QACA;QACA,MAAM6B,cAAc,GAAG,CAAC,4CAA4C,EAAE,gCAAgC,CAAC;QAEvG,KAAK,MAAMC,OAAO,IAAID,cAAc,EAAE;UACpC,MAAM7C,KAAK,GAAG4C,UAAU,CAAC5C,KAAK,CAAC8C,OAAO,CAAC;UACvC,IAAI9C,KAAK,EAAE;YACT,MAAMyC,IAAI,GAAG,GAAGzC,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,EAAE;YACtC,IAAI,CAACP,MAAM,CAACS,OAAO,CAAC,gDAAgDuC,IAAI,EAAE,CAAC;YAC3E,OAAOA,IAAI;UACb;QACF;MACF;MAEA,IAAI,CAAChD,MAAM,CAACS,OAAO,CAAC,sEAAsE,CAAC;MAC3F,OAAO,IAAI;IACb,CAAC,CAAC,OAAOO,CAAM,EAAE;MACf,IAAI,CAAChB,MAAM,CAACS,OAAO,CAAC,wCAAwCO,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,CAAC;MAC3E,OAAO,IAAI;IACb;EACF;;EAEA;AACF;AACA;EACE,MAAcZ,mBAAmBA,CAAA,EAA2B;IAC1D,IAAI;MACF,MAAMiD,MAAM,GAAG,MAAMjC,UAAG,CAACkC,GAAG,CAAC;QAC3BC,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,IAAI,CAACF,MAAM,CAACG,MAAM,EAAE;QAClB,OAAO,IAAI;MACb;MACA,MAAM;QAAEC,OAAO;QAAEC;MAAK,CAAC,GAAGL,MAAM,CAACG,MAAM;MACvC,OAAOE,IAAI,GAAG,GAAGD,OAAO,OAAOC,IAAI,EAAE,GAAGD,OAAO;IACjD,CAAC,CAAC,OAAO1C,CAAM,EAAE;MACf,IAAI,CAAChB,MAAM,CAACS,OAAO,CAAC,kCAAkCO,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,CAAC;MACrE,OAAO,IAAI;IACb;EACF;AACF;AAAC2C,OAAA,CAAA9D,oBAAA,GAAAA,oBAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/ci",
3
- "version": "1.0.79",
3
+ "version": "1.0.80",
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.79"
9
+ "version": "1.0.80"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -16,17 +16,17 @@
16
16
  "@teambit/harmony": "0.4.7",
17
17
  "@teambit/cli": "0.0.1268",
18
18
  "@teambit/logger": "0.0.1361",
19
- "@teambit/component-id": "1.2.4",
20
- "@teambit/component.modules.merge-helper": "0.0.9",
21
- "@teambit/bit-error": "0.0.404",
22
19
  "@teambit/workspace": "1.0.726",
23
20
  "@teambit/builder": "1.0.726",
24
21
  "@teambit/checkout": "1.0.726",
22
+ "@teambit/component-id": "1.2.4",
23
+ "@teambit/component.modules.merge-helper": "0.0.9",
25
24
  "@teambit/export": "1.0.726",
26
25
  "@teambit/importer": "1.0.726",
27
26
  "@teambit/lanes": "1.0.727",
28
27
  "@teambit/snapping": "1.0.726",
29
- "@teambit/status": "1.0.728"
28
+ "@teambit/status": "1.0.728",
29
+ "@teambit/bit-error": "0.0.404"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/semver": "7.5.8",