@teambit/ci 0.0.16 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ci.docs.mdx CHANGED
@@ -96,6 +96,25 @@ bit ci merge [--message <string>] [--build] [--increment <level>] [--patch|--min
96
96
  | `--prerelease-id` | | Prerelease identifier (e.g. "dev" to get "1.0.0-dev.1"). |
97
97
  | `--increment-by` | | Increment by more than 1 (e.g. `--increment-by 2` with patch: 0.0.1 → 0.0.3). |
98
98
 
99
+ ### Automatic Version Bump Detection
100
+
101
+ When **no explicit version flags** are provided, `bit ci merge` can automatically determine the version bump level from the commit message:
102
+
103
+ 1. **Explicit Keywords** (highest priority):
104
+
105
+ - `BIT-BUMP-MAJOR` anywhere in commit message → major version bump
106
+ - `BIT-BUMP-MINOR` anywhere in commit message → minor version bump
107
+
108
+ 2. **Conventional Commits** (when enabled):
109
+
110
+ - `feat!:` or `BREAKING CHANGE` → major version bump
111
+ - `feat:` → minor version bump
112
+ - `fix:` → patch version bump
113
+
114
+ 3. **Default**: patch version bump
115
+
116
+ **Note**: Auto-detection only occurs when no version flags (`--patch`, `--minor`, `--major`, etc.) are provided. Explicit flags always take precedence.
117
+
99
118
  ### Internal flow
100
119
 
101
120
  1. **Ensure main lane**
@@ -123,20 +142,34 @@ bit ci merge [--message <string>] [--build] [--increment <level>] [--patch|--min
123
142
  ### Version bump examples
124
143
 
125
144
  ```bash
126
- # Default patch increment (1.0.0 1.0.1)
127
- bit ci merge --message "fix: resolve memory leak"
128
-
129
- # Minor version bump (1.0.0 → 1.1.0)
145
+ # Explicit version bump (takes precedence over auto-detection)
130
146
  bit ci merge --minor --message "feat: add new API endpoint"
131
-
132
- # Major version bump (1.0.0 → 2.0.0)
133
147
  bit ci merge --major --message "feat!: breaking API changes"
148
+ bit ci merge --patch --increment-by 3 --message "fix: critical patches"
134
149
 
135
- # Prerelease increment (1.0.0 1.0.1-dev.1)
136
- bit ci merge --pre-release dev --message "feat: experimental feature"
150
+ # Automatic detection from commit message (no flags needed)
151
+ git commit -m "feat: add new API endpoint"
152
+ bit ci merge --build # → auto-detects minor bump
137
153
 
138
- # Custom increment amount (1.0.0 1.0.3)
139
- bit ci merge --patch --increment-by 3 --message "fix: critical patches"
154
+ git commit -m "feat!: breaking API changes"
155
+ bit ci merge --build # → auto-detects major bump
156
+
157
+ git commit -m "fix: resolve memory leak"
158
+ bit ci merge --build # → auto-detects patch bump (if conventional commits enabled)
159
+
160
+ # Using explicit keywords for auto-detection
161
+ git commit -m "feat: add new feature BIT-BUMP-MINOR"
162
+ bit ci merge --build # → auto-detects minor bump
163
+
164
+ git commit -m "refactor: major code restructure BIT-BUMP-MAJOR"
165
+ bit ci merge --build # → auto-detects major bump
166
+
167
+ # Default patch increment (when no detection rules match)
168
+ git commit -m "chore: update dependencies"
169
+ bit ci merge --build # → defaults to patch bump
170
+
171
+ # Prerelease increment (explicit flag required)
172
+ bit ci merge --pre-release dev --message "feat: experimental feature"
140
173
  ```
141
174
 
142
175
  ### CI hint
@@ -152,7 +185,9 @@ The CI aspect supports configuration in `workspace.jsonc`:
152
185
  ```json
153
186
  {
154
187
  "teambit.git/ci": {
155
- "commitMessageScript": "node scripts/generate-commit-message.js"
188
+ "commitMessageScript": "node scripts/generate-commit-message.js",
189
+ "useConventionalCommitsForVersionBump": true,
190
+ "useExplicitBumpKeywords": true
156
191
  }
157
192
  }
158
193
  ```
@@ -179,3 +214,45 @@ try {
179
214
  console.log('chore: update .bitmap and lockfiles as needed [skip ci]');
180
215
  }
181
216
  ```
217
+
218
+ ### `useConventionalCommitsForVersionBump`
219
+
220
+ **Optional.** Enable automatic version bump detection based on conventional commit patterns.
221
+
222
+ - **Default**: `false` (disabled)
223
+ - **When enabled**: Analyzes commit messages for conventional commit patterns:
224
+ - `feat!:` or `BREAKING CHANGE` → major version bump
225
+ - `feat:` → minor version bump
226
+ - `fix:` → patch version bump
227
+
228
+ ```json
229
+ {
230
+ "teambit.git/ci": {
231
+ "useConventionalCommitsForVersionBump": true
232
+ }
233
+ }
234
+ ```
235
+
236
+ ### `useExplicitBumpKeywords`
237
+
238
+ **Optional.** Enable automatic version bump detection using explicit keywords.
239
+
240
+ - **Default**: `true` (enabled)
241
+ - **Keywords**:
242
+ - `BIT-BUMP-MAJOR` anywhere in commit message → major version bump
243
+ - `BIT-BUMP-MINOR` anywhere in commit message → minor version bump
244
+
245
+ ```json
246
+ {
247
+ "teambit.git/ci": {
248
+ "useExplicitBumpKeywords": false // disable explicit keywords
249
+ }
250
+ }
251
+ ```
252
+
253
+ **Example usage:**
254
+
255
+ ```bash
256
+ git commit -m "feat: add new feature BIT-BUMP-MINOR"
257
+ bit ci merge --build # → automatically uses minor version bump
258
+ ```
@@ -57,6 +57,11 @@ export class CiMergeCmd implements Command {
57
57
 
58
58
  const { releaseType, preReleaseId } = validateOptions(options);
59
59
 
60
+ // Check if user explicitly provided any version bump flags
61
+ const explicitVersionBump = Boolean(
62
+ options.increment || options.patch || options.minor || options.major || options.preRelease
63
+ );
64
+
60
65
  return this.ci.mergePr({
61
66
  message: options.message,
62
67
  build: options.build,
@@ -64,6 +69,7 @@ export class CiMergeCmd implements Command {
64
69
  releaseType,
65
70
  preReleaseId,
66
71
  incrementBy: options.incrementBy,
72
+ explicitVersionBump,
67
73
  });
68
74
  }
69
75
  }
package/dist/ci.docs.mdx CHANGED
@@ -96,6 +96,25 @@ bit ci merge [--message <string>] [--build] [--increment <level>] [--patch|--min
96
96
  | `--prerelease-id` | | Prerelease identifier (e.g. "dev" to get "1.0.0-dev.1"). |
97
97
  | `--increment-by` | | Increment by more than 1 (e.g. `--increment-by 2` with patch: 0.0.1 → 0.0.3). |
98
98
 
99
+ ### Automatic Version Bump Detection
100
+
101
+ When **no explicit version flags** are provided, `bit ci merge` can automatically determine the version bump level from the commit message:
102
+
103
+ 1. **Explicit Keywords** (highest priority):
104
+
105
+ - `BIT-BUMP-MAJOR` anywhere in commit message → major version bump
106
+ - `BIT-BUMP-MINOR` anywhere in commit message → minor version bump
107
+
108
+ 2. **Conventional Commits** (when enabled):
109
+
110
+ - `feat!:` or `BREAKING CHANGE` → major version bump
111
+ - `feat:` → minor version bump
112
+ - `fix:` → patch version bump
113
+
114
+ 3. **Default**: patch version bump
115
+
116
+ **Note**: Auto-detection only occurs when no version flags (`--patch`, `--minor`, `--major`, etc.) are provided. Explicit flags always take precedence.
117
+
99
118
  ### Internal flow
100
119
 
101
120
  1. **Ensure main lane**
@@ -123,20 +142,34 @@ bit ci merge [--message <string>] [--build] [--increment <level>] [--patch|--min
123
142
  ### Version bump examples
124
143
 
125
144
  ```bash
126
- # Default patch increment (1.0.0 1.0.1)
127
- bit ci merge --message "fix: resolve memory leak"
128
-
129
- # Minor version bump (1.0.0 → 1.1.0)
145
+ # Explicit version bump (takes precedence over auto-detection)
130
146
  bit ci merge --minor --message "feat: add new API endpoint"
131
-
132
- # Major version bump (1.0.0 → 2.0.0)
133
147
  bit ci merge --major --message "feat!: breaking API changes"
148
+ bit ci merge --patch --increment-by 3 --message "fix: critical patches"
134
149
 
135
- # Prerelease increment (1.0.0 1.0.1-dev.1)
136
- bit ci merge --pre-release dev --message "feat: experimental feature"
150
+ # Automatic detection from commit message (no flags needed)
151
+ git commit -m "feat: add new API endpoint"
152
+ bit ci merge --build # → auto-detects minor bump
137
153
 
138
- # Custom increment amount (1.0.0 1.0.3)
139
- bit ci merge --patch --increment-by 3 --message "fix: critical patches"
154
+ git commit -m "feat!: breaking API changes"
155
+ bit ci merge --build # → auto-detects major bump
156
+
157
+ git commit -m "fix: resolve memory leak"
158
+ bit ci merge --build # → auto-detects patch bump (if conventional commits enabled)
159
+
160
+ # Using explicit keywords for auto-detection
161
+ git commit -m "feat: add new feature BIT-BUMP-MINOR"
162
+ bit ci merge --build # → auto-detects minor bump
163
+
164
+ git commit -m "refactor: major code restructure BIT-BUMP-MAJOR"
165
+ bit ci merge --build # → auto-detects major bump
166
+
167
+ # Default patch increment (when no detection rules match)
168
+ git commit -m "chore: update dependencies"
169
+ bit ci merge --build # → defaults to patch bump
170
+
171
+ # Prerelease increment (explicit flag required)
172
+ bit ci merge --pre-release dev --message "feat: experimental feature"
140
173
  ```
141
174
 
142
175
  ### CI hint
@@ -152,7 +185,9 @@ The CI aspect supports configuration in `workspace.jsonc`:
152
185
  ```json
153
186
  {
154
187
  "teambit.git/ci": {
155
- "commitMessageScript": "node scripts/generate-commit-message.js"
188
+ "commitMessageScript": "node scripts/generate-commit-message.js",
189
+ "useConventionalCommitsForVersionBump": true,
190
+ "useExplicitBumpKeywords": true
156
191
  }
157
192
  }
158
193
  ```
@@ -179,3 +214,45 @@ try {
179
214
  console.log('chore: update .bitmap and lockfiles as needed [skip ci]');
180
215
  }
181
216
  ```
217
+
218
+ ### `useConventionalCommitsForVersionBump`
219
+
220
+ **Optional.** Enable automatic version bump detection based on conventional commit patterns.
221
+
222
+ - **Default**: `false` (disabled)
223
+ - **When enabled**: Analyzes commit messages for conventional commit patterns:
224
+ - `feat!:` or `BREAKING CHANGE` → major version bump
225
+ - `feat:` → minor version bump
226
+ - `fix:` → patch version bump
227
+
228
+ ```json
229
+ {
230
+ "teambit.git/ci": {
231
+ "useConventionalCommitsForVersionBump": true
232
+ }
233
+ }
234
+ ```
235
+
236
+ ### `useExplicitBumpKeywords`
237
+
238
+ **Optional.** Enable automatic version bump detection using explicit keywords.
239
+
240
+ - **Default**: `true` (enabled)
241
+ - **Keywords**:
242
+ - `BIT-BUMP-MAJOR` anywhere in commit message → major version bump
243
+ - `BIT-BUMP-MINOR` anywhere in commit message → minor version bump
244
+
245
+ ```json
246
+ {
247
+ "teambit.git/ci": {
248
+ "useExplicitBumpKeywords": false // disable explicit keywords
249
+ }
250
+ }
251
+ ```
252
+
253
+ **Example usage:**
254
+
255
+ ```bash
256
+ git commit -m "feat: add new feature BIT-BUMP-MINOR"
257
+ bit ci merge --build # → automatically uses minor version bump
258
+ ```
@@ -11,7 +11,62 @@ import { type ImporterMain } from '@teambit/importer';
11
11
  import { type CheckoutMain } from '@teambit/checkout';
12
12
  import { ReleaseType } from 'semver';
13
13
  export interface CiWorkspaceConfig {
14
+ /**
15
+ * Path to a custom script that generates commit messages for `bit ci merge` operations.
16
+ * The script will be executed when components are tagged and committed to the repository.
17
+ * If not specified, falls back to the default commit message:
18
+ * "chore: update .bitmap and lockfiles as needed [skip ci]"
19
+ *
20
+ * @example
21
+ * ```json
22
+ * {
23
+ * "teambit.git/ci": {
24
+ * "commitMessageScript": "node scripts/generate-commit-message.js"
25
+ * }
26
+ * }
27
+ * ```
28
+ */
14
29
  commitMessageScript?: string;
30
+ /**
31
+ * Enables automatic version bump detection from conventional commit messages.
32
+ * When enabled, the system analyzes commit messages to determine the appropriate version bump:
33
+ * - `feat!:` or `BREAKING CHANGE` → major version bump
34
+ * - `feat:` → minor version bump
35
+ * - `fix:` → patch version bump
36
+ *
37
+ * Only applies when no explicit version flags (--patch, --minor, --major) are provided.
38
+ *
39
+ * @default false
40
+ * @example
41
+ * ```json
42
+ * {
43
+ * "teambit.git/ci": {
44
+ * "useConventionalCommitsForVersionBump": true
45
+ * }
46
+ * }
47
+ * ```
48
+ */
49
+ useConventionalCommitsForVersionBump?: boolean;
50
+ /**
51
+ * Enables detection of explicit version bump keywords in commit messages.
52
+ * When enabled, the system looks for these keywords in commit messages:
53
+ * - `BIT-BUMP-MAJOR` → major version bump
54
+ * - `BIT-BUMP-MINOR` → minor version bump
55
+ *
56
+ * These keywords have higher priority than conventional commits parsing.
57
+ * Only applies when no explicit version flags are provided.
58
+ *
59
+ * @default true
60
+ * @example
61
+ * ```json
62
+ * {
63
+ * "teambit.git/ci": {
64
+ * "useExplicitBumpKeywords": true
65
+ * }
66
+ * }
67
+ * ```
68
+ */
69
+ useExplicitBumpKeywords?: boolean;
15
70
  }
16
71
  export declare class CiMain {
17
72
  private workspace;
@@ -43,6 +98,7 @@ export declare class CiMain {
43
98
  getBranchName(): Promise<string>;
44
99
  getDefaultBranchName(): Promise<string>;
45
100
  getGitCommitMessage(): Promise<string | null>;
101
+ private parseVersionBumpFromCommit;
46
102
  private getCustomCommitMessage;
47
103
  private verifyWorkspaceStatusInternal;
48
104
  private switchToLane;
@@ -56,15 +112,20 @@ export declare class CiMain {
56
112
  build: boolean | undefined;
57
113
  strict: boolean | undefined;
58
114
  }): Promise<"No changes detected, nothing to snap" | undefined>;
59
- mergePr({ message: argMessage, build, strict, releaseType, preReleaseId, incrementBy, }: {
115
+ mergePr({ message: argMessage, build, strict, releaseType, preReleaseId, incrementBy, explicitVersionBump, }: {
60
116
  message?: string;
61
117
  build?: boolean;
62
118
  strict?: boolean;
63
- releaseType?: ReleaseType;
119
+ releaseType: ReleaseType;
64
120
  preReleaseId?: string;
65
121
  incrementBy?: number;
122
+ explicitVersionBump?: boolean;
66
123
  }): Promise<{
67
124
  code: number;
68
125
  data: string;
69
126
  }>;
127
+ /**
128
+ * Auto-detect version bump from commit messages if no explicit version bump was provided
129
+ */
130
+ private determineReleaseType;
70
131
  }
@@ -203,6 +203,42 @@ class CiMain {
203
203
  throw new Error(`Unable to read commit message: ${e.toString()}`);
204
204
  }
205
205
  }
206
+ parseVersionBumpFromCommit(commitMessage) {
207
+ // Check explicit bump keywords (highest priority after env vars)
208
+ if (this.config.useExplicitBumpKeywords !== false) {
209
+ // default to true
210
+ if (commitMessage.includes('BIT-BUMP-MAJOR')) {
211
+ this.logger.console(_chalk().default.blue('Found BIT-BUMP-MAJOR keyword in commit message'));
212
+ return 'major';
213
+ }
214
+ if (commitMessage.includes('BIT-BUMP-MINOR')) {
215
+ this.logger.console(_chalk().default.blue('Found BIT-BUMP-MINOR keyword in commit message'));
216
+ return 'minor';
217
+ }
218
+ }
219
+
220
+ // Check conventional commits if enabled
221
+ if (this.config.useConventionalCommitsForVersionBump) {
222
+ // Check for breaking changes (major version bump)
223
+ if (/^feat!(\(.+\))?:|^fix!(\(.+\))?:|BREAKING CHANGE/m.test(commitMessage)) {
224
+ this.logger.console(_chalk().default.blue('Found breaking changes in commit message (conventional commits)'));
225
+ return 'major';
226
+ }
227
+
228
+ // Check for features (minor version bump)
229
+ if (/^feat(\(.+\))?:/m.test(commitMessage)) {
230
+ this.logger.console(_chalk().default.blue('Found feature commits (conventional commits)'));
231
+ return 'minor';
232
+ }
233
+
234
+ // Check for fixes (patch version bump) - explicit patch not needed as it's default
235
+ if (/^fix(\(.+\))?:/m.test(commitMessage)) {
236
+ this.logger.console(_chalk().default.blue('Found fix commits (conventional commits) - using default patch'));
237
+ return 'patch';
238
+ }
239
+ }
240
+ return null; // No specific version bump detected
241
+ }
206
242
  async getCustomCommitMessage() {
207
243
  try {
208
244
  const commitMessageScript = this.config.commitMessageScript;
@@ -389,7 +425,8 @@ class CiMain {
389
425
  strict,
390
426
  releaseType,
391
427
  preReleaseId,
392
- incrementBy
428
+ incrementBy,
429
+ explicitVersionBump
393
430
  }) {
394
431
  const message = argMessage || (await this.getGitCommitMessage());
395
432
  if (!message) {
@@ -444,13 +481,14 @@ class CiMain {
444
481
  const hasSoftTaggedComponents = status.softTaggedComponents.length > 0;
445
482
  this.logger.console('📦 Component Operations');
446
483
  this.logger.console(_chalk().default.blue('Tagging components'));
484
+ const finalReleaseType = await this.determineReleaseType(releaseType, explicitVersionBump);
447
485
  const tagResults = await this.snapping.tag({
448
486
  all: true,
449
487
  message,
450
488
  build,
451
489
  failFast: true,
452
490
  persist: hasSoftTaggedComponents,
453
- releaseType,
491
+ releaseType: finalReleaseType,
454
492
  preReleaseId,
455
493
  incrementBy
456
494
  });
@@ -505,6 +543,29 @@ class CiMain {
505
543
  data: ''
506
544
  };
507
545
  }
546
+
547
+ /**
548
+ * Auto-detect version bump from commit messages if no explicit version bump was provided
549
+ */
550
+ async determineReleaseType(releaseType, explicitVersionBump) {
551
+ if (explicitVersionBump) {
552
+ this.logger.console(_chalk().default.blue(`Using explicit version bump: ${releaseType}`));
553
+ return releaseType;
554
+ }
555
+ // Only auto-detect if user didn't specify any version flags
556
+ const lastCommit = await this.getGitCommitMessage();
557
+ if (!lastCommit) {
558
+ this.logger.console(_chalk().default.blue('No commit message found, using default patch'));
559
+ return releaseType;
560
+ }
561
+ const detectedReleaseType = this.parseVersionBumpFromCommit(lastCommit);
562
+ if (detectedReleaseType) {
563
+ this.logger.console(_chalk().default.green(`Auto-detected version bump: ${detectedReleaseType}`));
564
+ return detectedReleaseType;
565
+ }
566
+ this.logger.console(_chalk().default.blue('No specific version bump detected, using default patch'));
567
+ return releaseType;
568
+ }
508
569
  }
509
570
 
510
571
  // @ts-ignore
@@ -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","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","getCustomCommitMessage","commitMessageScript","blue","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","catch","red","verifyWorkspaceStatus","components","list","build","throwErrorsIfExist","snapPrCommit","laneIdStr","originalLane","getCurrentLane","laneId","parseLaneId","import","ids","installNpmPackages","writeConfigFiles","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","gitStatus","hasChanges","files","stash","pull","checkoutProps","listIds","checkoutResults","checkoutOutput","hasSoftTaggedComponents","softTaggedComponents","tagResults","tag","failFast","persist","tagOutput","tagResultOutput","hasTaggedComponents","taggedComponents","exportResult","addConfig","add","commitMessage","archiveLane","removeLanes","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, type LanesMain } from '@teambit/lanes';\nimport { SnappingAspect, SnapResults, tagResultOutput, snapResultOutput, type 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 { SwitchLaneOptions } from '@teambit/lanes';\nimport execa from 'execa';\nimport chalk from 'chalk';\nimport { 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';\n\nexport interface CiWorkspaceConfig {\n commitMessageScript?: string;\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 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 await this.lanes\n .switchLanes(laneName, {\n forceOurs: true,\n head: true,\n workspaceOnly: true,\n skipDependencyInstallation: true,\n ...options,\n })\n .catch((e) => {\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 to checkout lane ${laneName}: ${e.toString()}`));\n return null;\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 }: {\n message?: string;\n build?: boolean;\n strict?: boolean;\n releaseType?: ReleaseType;\n preReleaseId?: string;\n incrementBy?: number;\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\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.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 ids: this.workspace.listIds(),\n forceOurs: true,\n head: true,\n skipNpmInstall: true,\n };\n const checkoutResults = await this.checkout.checkout(checkoutProps);\n await this.workspace.bitMap.write('checkout head');\n // all: true is to make it less verbose in the output. this workaround will be fixed later.\n this.logger.console(checkoutOutput(checkoutResults, { ...checkoutProps, all: true }));\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 tagResults = await this.snapping.tag({\n all: true,\n message,\n build,\n failFast: true,\n persist: hasSoftTaggedComponents,\n releaseType,\n preReleaseId,\n incrementBy,\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 // Commit the .bitmap and pnpm-lock.yaml files using Git\n await git.add(['.bitmap', 'pnpm-lock.yaml']);\n\n const commitMessage = await this.getCustomCommitMessage();\n await git.commit(commitMessage);\n\n // Pull latest changes and push the commit to the remote repository\n // At this point we have just committed changes, so no need to stash\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.toString()}`));\n const archiveLane = await this.lanes.removeLanes([laneId()]);\n if (archiveLane) {\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// @ts-ignore\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","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","catch","red","verifyWorkspaceStatus","components","list","build","throwErrorsIfExist","snapPrCommit","laneIdStr","originalLane","getCurrentLane","laneId","parseLaneId","import","ids","installNpmPackages","writeConfigFiles","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","gitStatus","hasChanges","files","stash","pull","checkoutProps","listIds","checkoutResults","checkoutOutput","hasSoftTaggedComponents","softTaggedComponents","finalReleaseType","determineReleaseType","tagResults","tag","failFast","persist","tagOutput","tagResultOutput","hasTaggedComponents","taggedComponents","exportResult","addConfig","add","archiveLane","removeLanes","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, type LanesMain } from '@teambit/lanes';\nimport { SnappingAspect, SnapResults, tagResultOutput, snapResultOutput, type 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 { SwitchLaneOptions } from '@teambit/lanes';\nimport execa from 'execa';\nimport chalk from 'chalk';\nimport { 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';\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 await this.lanes\n .switchLanes(laneName, {\n forceOurs: true,\n head: true,\n workspaceOnly: true,\n skipDependencyInstallation: true,\n ...options,\n })\n .catch((e) => {\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 to checkout lane ${laneName}: ${e.toString()}`));\n return null;\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 }: {\n message?: string;\n build?: boolean;\n strict?: boolean;\n releaseType: ReleaseType;\n preReleaseId?: string;\n incrementBy?: number;\n explicitVersionBump?: 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.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 ids: this.workspace.listIds(),\n forceOurs: true,\n head: true,\n skipNpmInstall: true,\n };\n const checkoutResults = await this.checkout.checkout(checkoutProps);\n await this.workspace.bitMap.write('checkout head');\n // all: true is to make it less verbose in the output. this workaround will be fixed later.\n this.logger.console(checkoutOutput(checkoutResults, { ...checkoutProps, all: true }));\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 });\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 // Commit the .bitmap and pnpm-lock.yaml files using Git\n await git.add(['.bitmap', 'pnpm-lock.yaml']);\n\n const commitMessage = await this.getCustomCommitMessage();\n await git.commit(commitMessage);\n\n // Pull latest changes and push the commit to the remote repository\n // At this point we have just committed changes, so no need to stash\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.toString()}`));\n const archiveLane = await this.lanes.removeLanes([laneId()]);\n if (archiveLane) {\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\n// @ts-ignore\nCiAspect.addRuntime(CiMain);\n"],"mappings":"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","ignoreList":[]}
@@ -39,13 +39,17 @@ class CiMergeCmd {
39
39
  releaseType,
40
40
  preReleaseId
41
41
  } = (0, _snapping().validateOptions)(options);
42
+
43
+ // Check if user explicitly provided any version bump flags
44
+ const explicitVersionBump = Boolean(options.increment || options.patch || options.minor || options.major || options.preRelease);
42
45
  return this.ci.mergePr({
43
46
  message: options.message,
44
47
  build: options.build,
45
48
  strict: options.strict,
46
49
  releaseType,
47
50
  preReleaseId,
48
- incrementBy: options.incrementBy
51
+ incrementBy: options.incrementBy,
52
+ explicitVersionBump
49
53
  });
50
54
  }
51
55
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_workspace","data","require","_snapping","_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","releaseType","preReleaseId","validateOptions","mergePr","message","build","strict","incrementBy","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 { ReleaseType } from 'semver';\nimport { validateOptions } from '@teambit/snapping';\nimport { 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};\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 ];\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 const { releaseType, preReleaseId } = validateOptions(options);\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 });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_workspace","data","require","_snapping","_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","releaseType","preReleaseId","validateOptions","explicitVersionBump","Boolean","increment","patch","minor","major","preRelease","mergePr","message","build","strict","incrementBy","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 { ReleaseType } from 'semver';\nimport { validateOptions } from '@teambit/snapping';\nimport { 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};\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 ];\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 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 });\n }\n}\n"],"mappings":";;;;;;AAEA,SAAAA,WAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,UAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,UAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAoD,SAAAG,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAgB7C,MAAMgB,UAAU,CAAoB;EA0BzCC,WAAWA,CACDC,SAAoB,EACpBC,MAAc,EACdC,EAAU,EAClB;IAAA,KAHQF,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,MAAc,GAAdA,MAAc;IAAA,KACdC,EAAU,GAAVA,EAAU;IAAAvB,eAAA,eA5Bb,OAAO;IAAAA,eAAA,sBACA,aAAa;IAAAA,eAAA,gBACnB,aAAa;IAAAA,eAAA,kBAEK,CACxB,CAAC,GAAG,EAAE,mBAAmB,EAAE,iFAAiF,CAAC,EAC7G,CAAC,GAAG,EAAE,OAAO,EAAE,+EAA+E,CAAC,EAC/F,CAAC,GAAG,EAAE,QAAQ,EAAE,yFAAyF,CAAC,EAC1G,CACE,GAAG,EACH,mBAAmB,EACnB,gGAAgG,CACjG,EACD,CAAC,EAAE,EAAE,oBAAoB,EAAE,yDAAyD,CAAC,EACrF,CAAC,GAAG,EAAE,OAAO,EAAE,yCAAyC,CAAC,EACzD,CAAC,EAAE,EAAE,OAAO,EAAE,yCAAyC,CAAC,EACxD,CAAC,EAAE,EAAE,OAAO,EAAE,yCAAyC,CAAC,EACxD,CAAC,EAAE,EAAE,0BAA0B,EAAE,iFAAiF,CAAC,EACnH,CACE,EAAE,EACF,uBAAuB,EACvB,4GAA4G,CAC7G,CACF;EAME;EAEH,MAAMwB,MAAMA,CAACC,IAAa,EAAEC,OAAgB,EAAE;IAC5C,IAAI,CAACJ,MAAM,CAACK,OAAO,CAAC,MAAM,CAAC;IAC3B,IAAI,CAACL,MAAM,CAACK,OAAO,CAAC,+BAA+B,CAAC;IACpD,IAAI,CAAC,IAAI,CAACN,SAAS,EAAE,MAAM,KAAIO,kCAAqB,EAAC,CAAC;IAEtD,MAAM;MAAEC,WAAW;MAAEC;IAAa,CAAC,GAAG,IAAAC,2BAAe,EAACL,OAAO,CAAC;;IAE9D;IACA,MAAMM,mBAAmB,GAAGC,OAAO,CACjCP,OAAO,CAACQ,SAAS,IAAIR,OAAO,CAACS,KAAK,IAAIT,OAAO,CAACU,KAAK,IAAIV,OAAO,CAACW,KAAK,IAAIX,OAAO,CAACY,UAClF,CAAC;IAED,OAAO,IAAI,CAACf,EAAE,CAACgB,OAAO,CAAC;MACrBC,OAAO,EAAEd,OAAO,CAACc,OAAO;MACxBC,KAAK,EAAEf,OAAO,CAACe,KAAK;MACpBC,MAAM,EAAEhB,OAAO,CAACgB,MAAM;MACtBb,WAAW;MACXC,YAAY;MACZa,WAAW,EAAEjB,OAAO,CAACiB,WAAW;MAChCX;IACF,CAAC,CAAC;EACJ;AACF;AAACY,OAAA,CAAAzB,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  ;
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.git_ci@0.0.16/dist/ci.docs.mdx';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.git_ci@1.0.0/dist/ci.docs.mdx';
3
3
 
4
4
  export const compositions = [];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/ci",
3
- "version": "0.0.16",
3
+ "version": "1.0.0",
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": "0.0.16"
9
+ "version": "1.0.0"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",