projen-pipelines 0.2.12 → 0.2.14
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/.jsii +5703 -1380
- package/API.md +5813 -1492
- package/README.md +253 -0
- package/docs/drift-detection.md +264 -0
- package/lib/assign-approver/base.js +1 -1
- package/lib/assign-approver/github.js +1 -1
- package/lib/awscdk/base.d.ts +21 -0
- package/lib/awscdk/base.js +246 -2
- package/lib/awscdk/bash.js +1 -1
- package/lib/awscdk/github.js +1 -1
- package/lib/awscdk/gitlab.js +1 -1
- package/lib/drift/base.d.ts +64 -0
- package/lib/drift/base.js +18 -0
- package/lib/drift/bash.d.ts +15 -0
- package/lib/drift/bash.js +170 -0
- package/lib/drift/detect-drift.d.ts +54 -0
- package/lib/drift/detect-drift.js +259 -0
- package/lib/drift/github.d.ts +21 -0
- package/lib/drift/github.js +232 -0
- package/lib/drift/gitlab.d.ts +20 -0
- package/lib/drift/gitlab.js +138 -0
- package/lib/drift/index.d.ts +5 -0
- package/lib/drift/index.js +22 -0
- package/lib/drift/step.d.ts +14 -0
- package/lib/drift/step.js +48 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/steps/artifact-steps.js +2 -2
- package/lib/steps/aws-assume-role.step.js +1 -1
- package/lib/steps/registries.js +2 -2
- package/lib/steps/step.d.ts +6 -1
- package/lib/steps/step.js +14 -10
- package/lib/versioning/computation.d.ts +63 -0
- package/lib/versioning/computation.js +121 -0
- package/lib/versioning/config.d.ts +41 -0
- package/lib/versioning/config.js +91 -0
- package/lib/versioning/index.d.ts +7 -0
- package/lib/versioning/index.js +46 -0
- package/lib/versioning/outputs.d.ts +87 -0
- package/lib/versioning/outputs.js +166 -0
- package/lib/versioning/setup.d.ts +30 -0
- package/lib/versioning/setup.js +165 -0
- package/lib/versioning/strategy.d.ts +21 -0
- package/lib/versioning/strategy.js +51 -0
- package/lib/versioning/types.d.ts +183 -0
- package/lib/versioning/types.js +3 -0
- package/lib/versioning/version-info.d.ts +106 -0
- package/lib/versioning/version-info.js +269 -0
- package/package.json +2 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.VersioningSetup = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* Sets up versioning tasks and integration for a project
|
|
8
|
+
*/
|
|
9
|
+
class VersioningSetup {
|
|
10
|
+
constructor(project, config) {
|
|
11
|
+
this.project = project;
|
|
12
|
+
this.config = config;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Set up all versioning-related tasks and configurations
|
|
16
|
+
*/
|
|
17
|
+
setup() {
|
|
18
|
+
// Create version computation task
|
|
19
|
+
this.createVersionComputeTask();
|
|
20
|
+
// Create version print task
|
|
21
|
+
this.createVersionPrintTask();
|
|
22
|
+
// Add version computation to build process
|
|
23
|
+
this.integrateWithBuildProcess();
|
|
24
|
+
// Add version file to gitignore
|
|
25
|
+
this.project.gitignore.exclude('~version.json');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create the version:compute task
|
|
29
|
+
*/
|
|
30
|
+
createVersionComputeTask() {
|
|
31
|
+
this.project.addTask('version:compute', {
|
|
32
|
+
description: 'Compute version information from git',
|
|
33
|
+
steps: [
|
|
34
|
+
{ exec: 'echo "Computing version information..."' },
|
|
35
|
+
{
|
|
36
|
+
exec: this.generateVersionComputeScript(),
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create the version:print task
|
|
43
|
+
*/
|
|
44
|
+
createVersionPrintTask() {
|
|
45
|
+
this.project.addTask('version:print', {
|
|
46
|
+
description: 'Print version information',
|
|
47
|
+
steps: [
|
|
48
|
+
{ exec: 'cat ~version.json' },
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Integrate version computation with the build process
|
|
54
|
+
*/
|
|
55
|
+
integrateWithBuildProcess() {
|
|
56
|
+
const compileTask = this.project.tasks.tryFind('compile');
|
|
57
|
+
const computeTask = this.project.tasks.tryFind('version:compute');
|
|
58
|
+
const printTask = this.project.tasks.tryFind('version:print');
|
|
59
|
+
if (compileTask && computeTask && printTask) {
|
|
60
|
+
compileTask.prependSpawn(printTask);
|
|
61
|
+
compileTask.prependSpawn(computeTask);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Generate the Node.js script for version computation
|
|
66
|
+
*/
|
|
67
|
+
generateVersionComputeScript() {
|
|
68
|
+
const strategyJson = JSON.stringify(this.config.strategy).replace(/"/g, '\\"');
|
|
69
|
+
return `node -e "
|
|
70
|
+
const fs = require('fs');
|
|
71
|
+
const cp = require('child_process');
|
|
72
|
+
|
|
73
|
+
// Import versioning modules
|
|
74
|
+
const { VersionComputer, VersioningStrategy } = require('projen-pipelines');
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
// Gather git information
|
|
78
|
+
const commitHash = cp.execSync('git rev-parse HEAD', {encoding: 'utf8'}).trim();
|
|
79
|
+
const commitHashShort = commitHash.substring(0, 8);
|
|
80
|
+
const commitCount = parseInt(cp.execSync('git rev-list --count HEAD', {encoding: 'utf8'}).trim());
|
|
81
|
+
const branch = cp.execSync('git rev-parse --abbrev-ref HEAD', {encoding: 'utf8'}).trim();
|
|
82
|
+
|
|
83
|
+
let tag = '';
|
|
84
|
+
let commitsSinceTag = 0;
|
|
85
|
+
try {
|
|
86
|
+
tag = cp.execSync('git describe --tags --exact-match --all', {encoding: 'utf8'}).trim();
|
|
87
|
+
} catch {
|
|
88
|
+
try {
|
|
89
|
+
const describeOutput = cp.execSync('git describe --tags --long --all', {encoding: 'utf8'}).trim();
|
|
90
|
+
const match = describeOutput.match(/^(.+)-(\\\\d+)-g[0-9a-f]+$/);
|
|
91
|
+
if (match) {
|
|
92
|
+
tag = match[1];
|
|
93
|
+
commitsSinceTag = parseInt(match[2]);
|
|
94
|
+
}
|
|
95
|
+
} catch {}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
let packageVersion = '0.0.0';
|
|
99
|
+
try {
|
|
100
|
+
packageVersion = JSON.parse(fs.readFileSync('package.json', 'utf8')).version;
|
|
101
|
+
} catch {}
|
|
102
|
+
|
|
103
|
+
// Create computation context
|
|
104
|
+
const context = {
|
|
105
|
+
gitInfo: {
|
|
106
|
+
commitHash,
|
|
107
|
+
commitHashShort,
|
|
108
|
+
branch,
|
|
109
|
+
tag,
|
|
110
|
+
commitsSinceTag,
|
|
111
|
+
commitCount,
|
|
112
|
+
packageVersion
|
|
113
|
+
},
|
|
114
|
+
environment: process.env.STAGE || process.env.ENVIRONMENT || 'unknown',
|
|
115
|
+
deployedBy: process.env.GITHUB_ACTOR || process.env.GITLAB_USER_LOGIN || process.env.USER || 'unknown',
|
|
116
|
+
buildNumber: process.env.BUILD_NUMBER || process.env.GITHUB_RUN_NUMBER,
|
|
117
|
+
repository: process.env.GITHUB_REPOSITORY || process.env.CI_PROJECT_PATH,
|
|
118
|
+
pipelineVersion: process.env.PIPELINE_VERSION
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// Create strategy from configuration
|
|
122
|
+
const strategyConfig = ${strategyJson};
|
|
123
|
+
const strategy = new VersioningStrategy(strategyConfig.format, strategyConfig.components);
|
|
124
|
+
|
|
125
|
+
// Compute version
|
|
126
|
+
const computer = new VersionComputer(strategy);
|
|
127
|
+
computer.computeVersionInfo(context).then(versionInfo => {
|
|
128
|
+
fs.writeFileSync('~version.json', versionInfo.toJson());
|
|
129
|
+
console.log('Version computed:', versionInfo.version, '(commit:', versionInfo.commitHashShort + ')');
|
|
130
|
+
}).catch(error => {
|
|
131
|
+
console.error('Error computing version:', error.message);
|
|
132
|
+
const fallback = {
|
|
133
|
+
version: '0.0.0',
|
|
134
|
+
commitHash: 'unknown',
|
|
135
|
+
commitHashShort: 'unknown',
|
|
136
|
+
branch: 'unknown',
|
|
137
|
+
commitCount: 0,
|
|
138
|
+
packageVersion: '0.0.0',
|
|
139
|
+
deployedAt: new Date().toISOString(),
|
|
140
|
+
deployedBy: 'unknown',
|
|
141
|
+
environment: 'unknown'
|
|
142
|
+
};
|
|
143
|
+
fs.writeFileSync('~version.json', JSON.stringify(fallback, null, 2));
|
|
144
|
+
});
|
|
145
|
+
} catch (e) {
|
|
146
|
+
console.error('Error in version computation:', e.message);
|
|
147
|
+
const fallback = {
|
|
148
|
+
version: '0.0.0',
|
|
149
|
+
commitHash: 'unknown',
|
|
150
|
+
commitHashShort: 'unknown',
|
|
151
|
+
branch: 'unknown',
|
|
152
|
+
commitCount: 0,
|
|
153
|
+
packageVersion: '0.0.0',
|
|
154
|
+
deployedAt: new Date().toISOString(),
|
|
155
|
+
deployedBy: 'unknown',
|
|
156
|
+
environment: 'unknown'
|
|
157
|
+
};
|
|
158
|
+
fs.writeFileSync('~version.json', JSON.stringify(fallback, null, 2));
|
|
159
|
+
}"`;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
exports.VersioningSetup = VersioningSetup;
|
|
163
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
164
|
+
VersioningSetup[_a] = { fqn: "projen-pipelines.VersioningSetup", version: "0.2.14" };
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVyc2lvbmluZy9zZXR1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBRTFCLFlBQTZCLE9BQWdCLEVBQW1CLE1BQXdCO1FBQTNELFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7SUFDeEYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUVoQyw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFOUIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBRWpDLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQ3RDLFdBQVcsRUFBRSxzQ0FBc0M7WUFDbkQsS0FBSyxFQUFFO2dCQUNMLEVBQUUsSUFBSSxFQUFFLHlDQUF5QyxFQUFFO2dCQUNuRDtvQkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLDRCQUE0QixFQUFFO2lCQUMxQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUNwQyxXQUFXLEVBQUUsMkJBQTJCO1lBQ3hDLEtBQUssRUFBRTtnQkFDTCxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRTthQUM5QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QjtRQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTlELElBQUksV0FBVyxJQUFJLFdBQVcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM1QyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLFdBQVcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLDRCQUE0QjtRQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvRSxPQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQkFxRGdCLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ3BDLENBQUM7SUFDRixDQUFDOztBQWhLSCwwQ0FpS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IFZlcnNpb25pbmdDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXRzIHVwIHZlcnNpb25pbmcgdGFza3MgYW5kIGludGVncmF0aW9uIGZvciBhIHByb2plY3RcbiAqL1xuZXhwb3J0IGNsYXNzIFZlcnNpb25pbmdTZXR1cCB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9qZWN0OiBQcm9qZWN0LCBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogVmVyc2lvbmluZ0NvbmZpZykge1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBhbGwgdmVyc2lvbmluZy1yZWxhdGVkIHRhc2tzIGFuZCBjb25maWd1cmF0aW9uc1xuICAgKi9cbiAgcHVibGljIHNldHVwKCk6IHZvaWQge1xuICAgIC8vIENyZWF0ZSB2ZXJzaW9uIGNvbXB1dGF0aW9uIHRhc2tcbiAgICB0aGlzLmNyZWF0ZVZlcnNpb25Db21wdXRlVGFzaygpO1xuXG4gICAgLy8gQ3JlYXRlIHZlcnNpb24gcHJpbnQgdGFza1xuICAgIHRoaXMuY3JlYXRlVmVyc2lvblByaW50VGFzaygpO1xuXG4gICAgLy8gQWRkIHZlcnNpb24gY29tcHV0YXRpb24gdG8gYnVpbGQgcHJvY2Vzc1xuICAgIHRoaXMuaW50ZWdyYXRlV2l0aEJ1aWxkUHJvY2VzcygpO1xuXG4gICAgLy8gQWRkIHZlcnNpb24gZmlsZSB0byBnaXRpZ25vcmVcbiAgICB0aGlzLnByb2plY3QuZ2l0aWdub3JlLmV4Y2x1ZGUoJ352ZXJzaW9uLmpzb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIHZlcnNpb246Y29tcHV0ZSB0YXNrXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVZlcnNpb25Db21wdXRlVGFzaygpOiB2b2lkIHtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygndmVyc2lvbjpjb21wdXRlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdDb21wdXRlIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSBnaXQnLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgeyBleGVjOiAnZWNobyBcIkNvbXB1dGluZyB2ZXJzaW9uIGluZm9ybWF0aW9uLi4uXCInIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiB0aGlzLmdlbmVyYXRlVmVyc2lvbkNvbXB1dGVTY3JpcHQoKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSB2ZXJzaW9uOnByaW50IHRhc2tcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlVmVyc2lvblByaW50VGFzaygpOiB2b2lkIHtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygndmVyc2lvbjpwcmludCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbicsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7IGV4ZWM6ICdjYXQgfnZlcnNpb24uanNvbicgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZWdyYXRlIHZlcnNpb24gY29tcHV0YXRpb24gd2l0aCB0aGUgYnVpbGQgcHJvY2Vzc1xuICAgKi9cbiAgcHJpdmF0ZSBpbnRlZ3JhdGVXaXRoQnVpbGRQcm9jZXNzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBpbGVUYXNrID0gdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoJ2NvbXBpbGUnKTtcbiAgICBjb25zdCBjb21wdXRlVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKCd2ZXJzaW9uOmNvbXB1dGUnKTtcbiAgICBjb25zdCBwcmludFRhc2sgPSB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZCgndmVyc2lvbjpwcmludCcpO1xuXG4gICAgaWYgKGNvbXBpbGVUYXNrICYmIGNvbXB1dGVUYXNrICYmIHByaW50VGFzaykge1xuICAgICAgY29tcGlsZVRhc2sucHJlcGVuZFNwYXduKHByaW50VGFzayk7XG4gICAgICBjb21waWxlVGFzay5wcmVwZW5kU3Bhd24oY29tcHV0ZVRhc2spO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgTm9kZS5qcyBzY3JpcHQgZm9yIHZlcnNpb24gY29tcHV0YXRpb25cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVWZXJzaW9uQ29tcHV0ZVNjcmlwdCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0cmF0ZWd5SnNvbiA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnLnN0cmF0ZWd5KS5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJyk7XG5cbiAgICByZXR1cm4gYG5vZGUgLWUgXCJcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IGNwID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuXG4vLyBJbXBvcnQgdmVyc2lvbmluZyBtb2R1bGVzXG5jb25zdCB7IFZlcnNpb25Db21wdXRlciwgVmVyc2lvbmluZ1N0cmF0ZWd5IH0gPSByZXF1aXJlKCdwcm9qZW4tcGlwZWxpbmVzJyk7XG5cbnRyeSB7XG4gIC8vIEdhdGhlciBnaXQgaW5mb3JtYXRpb25cbiAgY29uc3QgY29tbWl0SGFzaCA9IGNwLmV4ZWNTeW5jKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCB7ZW5jb2Rpbmc6ICd1dGY4J30pLnRyaW0oKTtcbiAgY29uc3QgY29tbWl0SGFzaFNob3J0ID0gY29tbWl0SGFzaC5zdWJzdHJpbmcoMCwgOCk7XG4gIGNvbnN0IGNvbW1pdENvdW50ID0gcGFyc2VJbnQoY3AuZXhlY1N5bmMoJ2dpdCByZXYtbGlzdCAtLWNvdW50IEhFQUQnLCB7ZW5jb2Rpbmc6ICd1dGY4J30pLnRyaW0oKSk7XG4gIGNvbnN0IGJyYW5jaCA9IGNwLmV4ZWNTeW5jKCdnaXQgcmV2LXBhcnNlIC0tYWJicmV2LXJlZiBIRUFEJywge2VuY29kaW5nOiAndXRmOCd9KS50cmltKCk7XG4gIFxuICBsZXQgdGFnID0gJyc7XG4gIGxldCBjb21taXRzU2luY2VUYWcgPSAwO1xuICB0cnkgeyBcbiAgICB0YWcgPSBjcC5leGVjU3luYygnZ2l0IGRlc2NyaWJlIC0tdGFncyAtLWV4YWN0LW1hdGNoIC0tYWxsJywge2VuY29kaW5nOiAndXRmOCd9KS50cmltKCk7XG4gIH0gY2F0Y2gge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZXNjcmliZU91dHB1dCA9IGNwLmV4ZWNTeW5jKCdnaXQgZGVzY3JpYmUgLS10YWdzIC0tbG9uZyAtLWFsbCcsIHtlbmNvZGluZzogJ3V0ZjgnfSkudHJpbSgpO1xuICAgICAgY29uc3QgbWF0Y2ggPSBkZXNjcmliZU91dHB1dC5tYXRjaCgvXiguKyktKFxcXFxcXFxcZCspLWdbMC05YS1mXSskLyk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgdGFnID0gbWF0Y2hbMV07XG4gICAgICAgIGNvbW1pdHNTaW5jZVRhZyA9IHBhcnNlSW50KG1hdGNoWzJdKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgXG4gIGxldCBwYWNrYWdlVmVyc2lvbiA9ICcwLjAuMCc7XG4gIHRyeSB7XG4gICAgcGFja2FnZVZlcnNpb24gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYygncGFja2FnZS5qc29uJywgJ3V0ZjgnKSkudmVyc2lvbjtcbiAgfSBjYXRjaCB7fVxuICBcbiAgLy8gQ3JlYXRlIGNvbXB1dGF0aW9uIGNvbnRleHRcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBnaXRJbmZvOiB7XG4gICAgICBjb21taXRIYXNoLFxuICAgICAgY29tbWl0SGFzaFNob3J0LFxuICAgICAgYnJhbmNoLFxuICAgICAgdGFnLFxuICAgICAgY29tbWl0c1NpbmNlVGFnLFxuICAgICAgY29tbWl0Q291bnQsXG4gICAgICBwYWNrYWdlVmVyc2lvblxuICAgIH0sXG4gICAgZW52aXJvbm1lbnQ6IHByb2Nlc3MuZW52LlNUQUdFIHx8IHByb2Nlc3MuZW52LkVOVklST05NRU5UIHx8ICd1bmtub3duJyxcbiAgICBkZXBsb3llZEJ5OiBwcm9jZXNzLmVudi5HSVRIVUJfQUNUT1IgfHwgcHJvY2Vzcy5lbnYuR0lUTEFCX1VTRVJfTE9HSU4gfHwgcHJvY2Vzcy5lbnYuVVNFUiB8fCAndW5rbm93bicsXG4gICAgYnVpbGROdW1iZXI6IHByb2Nlc3MuZW52LkJVSUxEX05VTUJFUiB8fCBwcm9jZXNzLmVudi5HSVRIVUJfUlVOX05VTUJFUixcbiAgICByZXBvc2l0b3J5OiBwcm9jZXNzLmVudi5HSVRIVUJfUkVQT1NJVE9SWSB8fCBwcm9jZXNzLmVudi5DSV9QUk9KRUNUX1BBVEgsXG4gICAgcGlwZWxpbmVWZXJzaW9uOiBwcm9jZXNzLmVudi5QSVBFTElORV9WRVJTSU9OXG4gIH07XG4gIFxuICAvLyBDcmVhdGUgc3RyYXRlZ3kgZnJvbSBjb25maWd1cmF0aW9uXG4gIGNvbnN0IHN0cmF0ZWd5Q29uZmlnID0gJHtzdHJhdGVneUpzb259O1xuICBjb25zdCBzdHJhdGVneSA9IG5ldyBWZXJzaW9uaW5nU3RyYXRlZ3koc3RyYXRlZ3lDb25maWcuZm9ybWF0LCBzdHJhdGVneUNvbmZpZy5jb21wb25lbnRzKTtcbiAgXG4gIC8vIENvbXB1dGUgdmVyc2lvblxuICBjb25zdCBjb21wdXRlciA9IG5ldyBWZXJzaW9uQ29tcHV0ZXIoc3RyYXRlZ3kpO1xuICBjb21wdXRlci5jb21wdXRlVmVyc2lvbkluZm8oY29udGV4dCkudGhlbih2ZXJzaW9uSW5mbyA9PiB7XG4gICAgZnMud3JpdGVGaWxlU3luYygnfnZlcnNpb24uanNvbicsIHZlcnNpb25JbmZvLnRvSnNvbigpKTtcbiAgICBjb25zb2xlLmxvZygnVmVyc2lvbiBjb21wdXRlZDonLCB2ZXJzaW9uSW5mby52ZXJzaW9uLCAnKGNvbW1pdDonLCB2ZXJzaW9uSW5mby5jb21taXRIYXNoU2hvcnQgKyAnKScpO1xuICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgY29tcHV0aW5nIHZlcnNpb246JywgZXJyb3IubWVzc2FnZSk7XG4gICAgY29uc3QgZmFsbGJhY2sgPSB7XG4gICAgICB2ZXJzaW9uOiAnMC4wLjAnLFxuICAgICAgY29tbWl0SGFzaDogJ3Vua25vd24nLFxuICAgICAgY29tbWl0SGFzaFNob3J0OiAndW5rbm93bicsXG4gICAgICBicmFuY2g6ICd1bmtub3duJyxcbiAgICAgIGNvbW1pdENvdW50OiAwLFxuICAgICAgcGFja2FnZVZlcnNpb246ICcwLjAuMCcsXG4gICAgICBkZXBsb3llZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBkZXBsb3llZEJ5OiAndW5rbm93bicsXG4gICAgICBlbnZpcm9ubWVudDogJ3Vua25vd24nXG4gICAgfTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKCd+dmVyc2lvbi5qc29uJywgSlNPTi5zdHJpbmdpZnkoZmFsbGJhY2ssIG51bGwsIDIpKTtcbiAgfSk7XG59IGNhdGNoIChlKSB7XG4gIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIHZlcnNpb24gY29tcHV0YXRpb246JywgZS5tZXNzYWdlKTtcbiAgY29uc3QgZmFsbGJhY2sgPSB7XG4gICAgdmVyc2lvbjogJzAuMC4wJyxcbiAgICBjb21taXRIYXNoOiAndW5rbm93bicsXG4gICAgY29tbWl0SGFzaFNob3J0OiAndW5rbm93bicsXG4gICAgYnJhbmNoOiAndW5rbm93bicsXG4gICAgY29tbWl0Q291bnQ6IDAsXG4gICAgcGFja2FnZVZlcnNpb246ICcwLjAuMCcsXG4gICAgZGVwbG95ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGRlcGxveWVkQnk6ICd1bmtub3duJyxcbiAgICBlbnZpcm9ubWVudDogJ3Vua25vd24nXG4gIH07XG4gIGZzLndyaXRlRmlsZVN5bmMoJ352ZXJzaW9uLmpzb24nLCBKU09OLnN0cmluZ2lmeShmYWxsYmFjaywgbnVsbCwgMikpO1xufVwiYDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GitTagConfig, PackageJsonConfig, CommitCountConfig, IVersioningStrategy, VersioningStrategyComponents, BuildNumberConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Composite versioning strategy that combines multiple strategies
|
|
4
|
+
*/
|
|
5
|
+
export declare class VersioningStrategy implements IVersioningStrategy {
|
|
6
|
+
readonly format: string;
|
|
7
|
+
readonly components: VersioningStrategyComponents;
|
|
8
|
+
/**
|
|
9
|
+
* Create a composite strategy with custom format and components
|
|
10
|
+
*/
|
|
11
|
+
static create(format: string, components: VersioningStrategyComponents): VersioningStrategy;
|
|
12
|
+
/**
|
|
13
|
+
* Create a build number based strategy
|
|
14
|
+
*/
|
|
15
|
+
static buildNumber(config?: BuildNumberConfig): VersioningStrategy;
|
|
16
|
+
static gitTag(config?: GitTagConfig): VersioningStrategy;
|
|
17
|
+
static packageJson(config?: PackageJsonConfig): VersioningStrategy;
|
|
18
|
+
static commitCount(config?: CommitCountConfig): VersioningStrategy;
|
|
19
|
+
static commitHash(): VersioningStrategy;
|
|
20
|
+
private constructor();
|
|
21
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.VersioningStrategy = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* Composite versioning strategy that combines multiple strategies
|
|
8
|
+
*/
|
|
9
|
+
class VersioningStrategy {
|
|
10
|
+
/**
|
|
11
|
+
* Create a composite strategy with custom format and components
|
|
12
|
+
*/
|
|
13
|
+
static create(format, components) {
|
|
14
|
+
return new VersioningStrategy(format, components);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a build number based strategy
|
|
18
|
+
*/
|
|
19
|
+
static buildNumber(config) {
|
|
20
|
+
const prefix = config?.prefix ?? 'build';
|
|
21
|
+
return new VersioningStrategy(`${prefix}-{commit-count}-{commit-hash:8}`, {
|
|
22
|
+
commitCount: config?.commitCount ?? { countFrom: 'all', padding: 5 },
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
static gitTag(config) {
|
|
26
|
+
return new VersioningStrategy('{git-tag}', {
|
|
27
|
+
gitTag: config ?? { stripPrefix: 'v' },
|
|
28
|
+
commitCount: { countFrom: 'all' },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
static packageJson(config) {
|
|
32
|
+
return new VersioningStrategy('{package-version}', { packageJson: config ?? {} });
|
|
33
|
+
}
|
|
34
|
+
static commitCount(config) {
|
|
35
|
+
return new VersioningStrategy('{commit-count}', {
|
|
36
|
+
commitCount: config ?? { countFrom: 'all' },
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
static commitHash() {
|
|
40
|
+
return new VersioningStrategy('{commit-hash}', {});
|
|
41
|
+
}
|
|
42
|
+
constructor(format, components) {
|
|
43
|
+
this.format = format;
|
|
44
|
+
this.components = components;
|
|
45
|
+
//
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.VersioningStrategy = VersioningStrategy;
|
|
49
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
50
|
+
VersioningStrategy[_a] = { fqn: "projen-pipelines.VersioningStrategy", version: "0.2.14" };
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVyc2lvbmluZy9zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBOztHQUVHO0FBQ0gsTUFBYSxrQkFBa0I7SUFFN0I7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUNsQixNQUFjLEVBQ2QsVUFBd0M7UUFFeEMsT0FBTyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQTBCO1FBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxNQUFNLElBQUksT0FBTyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLE1BQU0saUNBQWlDLEVBQUU7WUFDeEUsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7U0FDckUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBcUI7UUFDeEMsT0FBTyxJQUFJLGtCQUFrQixDQUFDLFdBQVcsRUFBRTtZQUN6QyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUN0QyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQTBCO1FBQ2xELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUEwQjtRQUNsRCxPQUFPLElBQUksa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUU7WUFDOUMsV0FBVyxFQUFFLE1BQU0sSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVO1FBQ3RCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFlBQ2tCLE1BQWMsRUFDZCxVQUF3QztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBOEI7UUFFeEQsRUFBRTtJQUNKLENBQUM7O0FBaERILGdEQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdpdFRhZ0NvbmZpZywgUGFja2FnZUpzb25Db25maWcsIENvbW1pdENvdW50Q29uZmlnLCBJVmVyc2lvbmluZ1N0cmF0ZWd5LCBWZXJzaW9uaW5nU3RyYXRlZ3lDb21wb25lbnRzLCBCdWlsZE51bWJlckNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5cbi8qKlxuICogQ29tcG9zaXRlIHZlcnNpb25pbmcgc3RyYXRlZ3kgdGhhdCBjb21iaW5lcyBtdWx0aXBsZSBzdHJhdGVnaWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBWZXJzaW9uaW5nU3RyYXRlZ3kgaW1wbGVtZW50cyBJVmVyc2lvbmluZ1N0cmF0ZWd5IHtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29tcG9zaXRlIHN0cmF0ZWd5IHdpdGggY3VzdG9tIGZvcm1hdCBhbmQgY29tcG9uZW50c1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUoXG4gICAgZm9ybWF0OiBzdHJpbmcsXG4gICAgY29tcG9uZW50czogVmVyc2lvbmluZ1N0cmF0ZWd5Q29tcG9uZW50cyxcbiAgKTogVmVyc2lvbmluZ1N0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IFZlcnNpb25pbmdTdHJhdGVneShmb3JtYXQsIGNvbXBvbmVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGJ1aWxkIG51bWJlciBiYXNlZCBzdHJhdGVneVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBidWlsZE51bWJlcihjb25maWc/OiBCdWlsZE51bWJlckNvbmZpZyk6IFZlcnNpb25pbmdTdHJhdGVneSB7XG4gICAgY29uc3QgcHJlZml4ID0gY29uZmlnPy5wcmVmaXggPz8gJ2J1aWxkJztcbiAgICByZXR1cm4gbmV3IFZlcnNpb25pbmdTdHJhdGVneShgJHtwcmVmaXh9LXtjb21taXQtY291bnR9LXtjb21taXQtaGFzaDo4fWAsIHtcbiAgICAgIGNvbW1pdENvdW50OiBjb25maWc/LmNvbW1pdENvdW50ID8/IHsgY291bnRGcm9tOiAnYWxsJywgcGFkZGluZzogNSB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnaXRUYWcoY29uZmlnPzogR2l0VGFnQ29uZmlnKTogVmVyc2lvbmluZ1N0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IFZlcnNpb25pbmdTdHJhdGVneSgne2dpdC10YWd9Jywge1xuICAgICAgZ2l0VGFnOiBjb25maWcgPz8geyBzdHJpcFByZWZpeDogJ3YnIH0sXG4gICAgICBjb21taXRDb3VudDogeyBjb3VudEZyb206ICdhbGwnIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHBhY2thZ2VKc29uKGNvbmZpZz86IFBhY2thZ2VKc29uQ29uZmlnKTogVmVyc2lvbmluZ1N0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IFZlcnNpb25pbmdTdHJhdGVneSgne3BhY2thZ2UtdmVyc2lvbn0nLCB7IHBhY2thZ2VKc29uOiBjb25maWcgPz8ge30gfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbW1pdENvdW50KGNvbmZpZz86IENvbW1pdENvdW50Q29uZmlnKTogVmVyc2lvbmluZ1N0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IFZlcnNpb25pbmdTdHJhdGVneSgne2NvbW1pdC1jb3VudH0nLCB7XG4gICAgICBjb21taXRDb3VudDogY29uZmlnID8/IHsgY291bnRGcm9tOiAnYWxsJyB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb21taXRIYXNoKCk6IFZlcnNpb25pbmdTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBWZXJzaW9uaW5nU3RyYXRlZ3koJ3tjb21taXQtaGFzaH0nLCB7fSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBmb3JtYXQ6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50czogVmVyc2lvbmluZ1N0cmF0ZWd5Q29tcG9uZW50cyxcbiAgKSB7XG4gICAgLy9cbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
export type StageOverrides = {
|
|
2
|
+
[stage: string]: VersioningConfig;
|
|
3
|
+
};
|
|
4
|
+
export interface VersioningConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Enable versioning feature
|
|
7
|
+
* @default true
|
|
8
|
+
*/
|
|
9
|
+
readonly enabled: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Primary versioning strategy
|
|
12
|
+
*/
|
|
13
|
+
readonly strategy: IVersioningStrategy;
|
|
14
|
+
/**
|
|
15
|
+
* Output configuration
|
|
16
|
+
*/
|
|
17
|
+
readonly outputs: VersioningOutputConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Stage-specific overrides
|
|
20
|
+
*/
|
|
21
|
+
readonly stageOverrides?: StageOverrides;
|
|
22
|
+
}
|
|
23
|
+
export interface VersioningStrategyComponents {
|
|
24
|
+
readonly gitTag?: GitTagConfig;
|
|
25
|
+
readonly packageJson?: PackageJsonConfig;
|
|
26
|
+
readonly commitCount?: CommitCountConfig;
|
|
27
|
+
}
|
|
28
|
+
export interface IVersioningStrategy {
|
|
29
|
+
/**
|
|
30
|
+
* Version format template
|
|
31
|
+
* Variables: {git-tag}, {package-version}, {commit-count}, {commit-hash},
|
|
32
|
+
* {commit-hash:8}, {branch}, {build-number}
|
|
33
|
+
*/
|
|
34
|
+
readonly format: string;
|
|
35
|
+
/**
|
|
36
|
+
* Components to include
|
|
37
|
+
*/
|
|
38
|
+
readonly components: VersioningStrategyComponents;
|
|
39
|
+
}
|
|
40
|
+
export interface GitTagConfig {
|
|
41
|
+
/**
|
|
42
|
+
* Only use annotated tags
|
|
43
|
+
*/
|
|
44
|
+
readonly annotatedOnly?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Tag pattern to match
|
|
47
|
+
*/
|
|
48
|
+
readonly pattern?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Strip prefix from tag
|
|
51
|
+
*/
|
|
52
|
+
readonly stripPrefix?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Include commits since tag
|
|
55
|
+
*/
|
|
56
|
+
readonly includeSinceTag?: boolean;
|
|
57
|
+
}
|
|
58
|
+
export interface PackageJsonConfig {
|
|
59
|
+
/**
|
|
60
|
+
* Path to package.json
|
|
61
|
+
*/
|
|
62
|
+
readonly path?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Include pre-release version
|
|
65
|
+
*/
|
|
66
|
+
readonly includePrerelease?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Append commit info
|
|
69
|
+
*/
|
|
70
|
+
readonly appendCommitInfo?: boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface CommitCountConfig {
|
|
73
|
+
/**
|
|
74
|
+
* Count from: 'all' | 'branch' | 'since-tag'
|
|
75
|
+
*/
|
|
76
|
+
readonly countFrom?: 'all' | 'branch' | 'since-tag';
|
|
77
|
+
/**
|
|
78
|
+
* Include branch name
|
|
79
|
+
*/
|
|
80
|
+
readonly includeBranch?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Reset on major version
|
|
83
|
+
*/
|
|
84
|
+
readonly resetOnMajor?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Padding for count
|
|
87
|
+
*/
|
|
88
|
+
readonly padding?: number;
|
|
89
|
+
}
|
|
90
|
+
export interface VersioningOutputConfig {
|
|
91
|
+
/**
|
|
92
|
+
* Output to CloudFormation stack outputs
|
|
93
|
+
* @default true
|
|
94
|
+
*/
|
|
95
|
+
readonly cloudFormation: CloudFormationOutputConfig;
|
|
96
|
+
/**
|
|
97
|
+
* Output to SSM Parameter Store
|
|
98
|
+
* @default false
|
|
99
|
+
*/
|
|
100
|
+
readonly parameterStore: ParameterStoreConfig;
|
|
101
|
+
}
|
|
102
|
+
export interface CloudFormationOutputConfig {
|
|
103
|
+
readonly enabled: boolean;
|
|
104
|
+
readonly exportName?: string;
|
|
105
|
+
}
|
|
106
|
+
export interface ParameterStoreConfig {
|
|
107
|
+
readonly enabled: boolean;
|
|
108
|
+
readonly parameterName?: string;
|
|
109
|
+
readonly description?: string;
|
|
110
|
+
readonly allowOverwrite?: boolean;
|
|
111
|
+
readonly splitParameters?: boolean;
|
|
112
|
+
readonly hierarchical?: boolean;
|
|
113
|
+
}
|
|
114
|
+
export interface BuildNumberConfig {
|
|
115
|
+
readonly prefix?: string;
|
|
116
|
+
readonly commitCount?: CommitCountConfig;
|
|
117
|
+
}
|
|
118
|
+
export interface GitInfoInput {
|
|
119
|
+
readonly commitHash: string;
|
|
120
|
+
readonly branch: string;
|
|
121
|
+
readonly tag?: string;
|
|
122
|
+
readonly commitsSinceTag?: number;
|
|
123
|
+
readonly commitCount: number;
|
|
124
|
+
}
|
|
125
|
+
export interface DeploymentInfoInput {
|
|
126
|
+
readonly environment: string;
|
|
127
|
+
readonly deployedBy?: string;
|
|
128
|
+
readonly buildNumber?: string;
|
|
129
|
+
}
|
|
130
|
+
export interface StandardConfigOptions {
|
|
131
|
+
readonly parameterStore?: boolean | string;
|
|
132
|
+
readonly format?: 'plain' | 'structured';
|
|
133
|
+
}
|
|
134
|
+
export interface CloudFormationOnlyOptions {
|
|
135
|
+
readonly format?: 'plain' | 'structured';
|
|
136
|
+
readonly stackOutputName?: string;
|
|
137
|
+
readonly exportName?: string;
|
|
138
|
+
}
|
|
139
|
+
export interface HierarchicalParametersOptions {
|
|
140
|
+
readonly includeCloudFormation?: boolean;
|
|
141
|
+
readonly format?: 'plain' | 'structured';
|
|
142
|
+
}
|
|
143
|
+
export interface StandardOutputOptions {
|
|
144
|
+
readonly parameterName?: string;
|
|
145
|
+
readonly format?: 'plain' | 'structured';
|
|
146
|
+
}
|
|
147
|
+
export interface IVersionInfo {
|
|
148
|
+
/**
|
|
149
|
+
* Primary version string
|
|
150
|
+
*/
|
|
151
|
+
readonly version: string;
|
|
152
|
+
/**
|
|
153
|
+
* Git information (ALWAYS included)
|
|
154
|
+
*/
|
|
155
|
+
readonly commitHash: string;
|
|
156
|
+
readonly commitHashShort: string;
|
|
157
|
+
readonly branch: string;
|
|
158
|
+
/**
|
|
159
|
+
* Optional git tag information
|
|
160
|
+
*/
|
|
161
|
+
readonly tag?: string;
|
|
162
|
+
readonly commitsSinceTag?: number;
|
|
163
|
+
/**
|
|
164
|
+
* Commit count information
|
|
165
|
+
*/
|
|
166
|
+
readonly commitCount: number;
|
|
167
|
+
/**
|
|
168
|
+
* Package.json information (if applicable)
|
|
169
|
+
*/
|
|
170
|
+
readonly packageVersion?: string;
|
|
171
|
+
/**
|
|
172
|
+
* Deployment metadata
|
|
173
|
+
*/
|
|
174
|
+
readonly deployedAt: string;
|
|
175
|
+
readonly deployedBy: string;
|
|
176
|
+
readonly buildNumber?: string;
|
|
177
|
+
readonly environment: string;
|
|
178
|
+
/**
|
|
179
|
+
* Additional metadata
|
|
180
|
+
*/
|
|
181
|
+
readonly repository?: string;
|
|
182
|
+
readonly pipelineVersion?: string;
|
|
183
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVyc2lvbmluZy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmV4cG9ydCB0eXBlIFN0YWdlT3ZlcnJpZGVzID0geyBbc3RhZ2U6IHN0cmluZ106IFZlcnNpb25pbmdDb25maWcgfTtcblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uaW5nQ29uZmlnIHtcbiAgLyoqXG4gICAqIEVuYWJsZSB2ZXJzaW9uaW5nIGZlYXR1cmVcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJpbWFyeSB2ZXJzaW9uaW5nIHN0cmF0ZWd5XG4gICAqL1xuICByZWFkb25seSBzdHJhdGVneTogSVZlcnNpb25pbmdTdHJhdGVneTtcblxuICAvKipcbiAgICogT3V0cHV0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM6IFZlcnNpb25pbmdPdXRwdXRDb25maWc7XG5cbiAgLyoqXG4gICAqIFN0YWdlLXNwZWNpZmljIG92ZXJyaWRlc1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VPdmVycmlkZXM/OiBTdGFnZU92ZXJyaWRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uaW5nU3RyYXRlZ3lDb21wb25lbnRzIHtcbiAgcmVhZG9ubHkgZ2l0VGFnPzogR2l0VGFnQ29uZmlnO1xuICByZWFkb25seSBwYWNrYWdlSnNvbj86IFBhY2thZ2VKc29uQ29uZmlnO1xuICByZWFkb25seSBjb21taXRDb3VudD86IENvbW1pdENvdW50Q29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElWZXJzaW9uaW5nU3RyYXRlZ3kge1xuICAvKipcbiAgICogVmVyc2lvbiBmb3JtYXQgdGVtcGxhdGVcbiAgICogVmFyaWFibGVzOiB7Z2l0LXRhZ30sIHtwYWNrYWdlLXZlcnNpb259LCB7Y29tbWl0LWNvdW50fSwge2NvbW1pdC1oYXNofSxcbiAgICogICAgICAgICAgICB7Y29tbWl0LWhhc2g6OH0sIHticmFuY2h9LCB7YnVpbGQtbnVtYmVyfVxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudHMgdG8gaW5jbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50czogVmVyc2lvbmluZ1N0cmF0ZWd5Q29tcG9uZW50cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHaXRUYWdDb25maWcge1xuICAvKipcbiAgICogT25seSB1c2UgYW5ub3RhdGVkIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGFubm90YXRlZE9ubHk/OiBib29sZWFuO1xuICAvKipcbiAgICogVGFnIHBhdHRlcm4gdG8gbWF0Y2hcbiAgICovXG4gIHJlYWRvbmx5IHBhdHRlcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTdHJpcCBwcmVmaXggZnJvbSB0YWdcbiAgICovXG4gIHJlYWRvbmx5IHN0cmlwUHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogSW5jbHVkZSBjb21taXRzIHNpbmNlIHRhZ1xuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZVNpbmNlVGFnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlSnNvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHBhY2thZ2UuanNvblxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIEluY2x1ZGUgcHJlLXJlbGVhc2UgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZVByZXJlbGVhc2U/OiBib29sZWFuO1xuICAvKipcbiAgICogQXBwZW5kIGNvbW1pdCBpbmZvXG4gICAqL1xuICByZWFkb25seSBhcHBlbmRDb21taXRJbmZvPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21taXRDb3VudENvbmZpZyB7XG4gIC8qKlxuICAgKiBDb3VudCBmcm9tOiAnYWxsJyB8ICdicmFuY2gnIHwgJ3NpbmNlLXRhZydcbiAgICovXG4gIHJlYWRvbmx5IGNvdW50RnJvbT86ICdhbGwnIHwgJ2JyYW5jaCcgfCAnc2luY2UtdGFnJztcbiAgLyoqXG4gICAqIEluY2x1ZGUgYnJhbmNoIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVCcmFuY2g/OiBib29sZWFuO1xuICAvKipcbiAgICogUmVzZXQgb24gbWFqb3IgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVzZXRPbk1ham9yPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhZGRpbmcgZm9yIGNvdW50XG4gICAqL1xuICByZWFkb25seSBwYWRkaW5nPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25pbmdPdXRwdXRDb25maWcge1xuICAvKipcbiAgICogT3V0cHV0IHRvIENsb3VkRm9ybWF0aW9uIHN0YWNrIG91dHB1dHNcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb246IENsb3VkRm9ybWF0aW9uT3V0cHV0Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgdG8gU1NNIFBhcmFtZXRlciBTdG9yZVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyU3RvcmU6IFBhcmFtZXRlclN0b3JlQ29uZmlnO1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGb3JtYXRpb25PdXRwdXRDb25maWcge1xuICByZWFkb25seSBlbmFibGVkOiBib29sZWFuO1xuICByZWFkb25seSBleHBvcnROYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlclN0b3JlQ29uZmlnIHtcbiAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGFyYW1ldGVyTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFsbG93T3ZlcndyaXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc3BsaXRQYXJhbWV0ZXJzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaGllcmFyY2hpY2FsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZE51bWJlckNvbmZpZyB7XG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbiAgcmVhZG9ubHkgY29tbWl0Q291bnQ/OiBDb21taXRDb3VudENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHaXRJbmZvSW5wdXQge1xuICByZWFkb25seSBjb21taXRIYXNoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJyYW5jaDogc3RyaW5nO1xuICByZWFkb25seSB0YWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbW1pdHNTaW5jZVRhZz86IG51bWJlcjtcbiAgcmVhZG9ubHkgY29tbWl0Q291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50SW5mb0lucHV0IHtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVwbG95ZWRCeT86IHN0cmluZztcbiAgcmVhZG9ubHkgYnVpbGROdW1iZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRDb25maWdPcHRpb25zIHtcbiAgcmVhZG9ubHkgcGFyYW1ldGVyU3RvcmU/OiBib29sZWFuIHwgc3RyaW5nO1xuICByZWFkb25seSBmb3JtYXQ/OiAncGxhaW4nIHwgJ3N0cnVjdHVyZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRm9ybWF0aW9uT25seU9wdGlvbnMge1xuICByZWFkb25seSBmb3JtYXQ/OiAncGxhaW4nIHwgJ3N0cnVjdHVyZWQnO1xuICByZWFkb25seSBzdGFja091dHB1dE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV4cG9ydE5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGllcmFyY2hpY2FsUGFyYW1ldGVyc09wdGlvbnMge1xuICByZWFkb25seSBpbmNsdWRlQ2xvdWRGb3JtYXRpb24/OiBib29sZWFuO1xuICByZWFkb25seSBmb3JtYXQ/OiAncGxhaW4nIHwgJ3N0cnVjdHVyZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkT3V0cHV0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHBhcmFtZXRlck5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZvcm1hdD86ICdwbGFpbicgfCAnc3RydWN0dXJlZCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZlcnNpb25JbmZvIHtcbiAgLyoqXG4gICAqIFByaW1hcnkgdmVyc2lvbiBzdHJpbmdcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR2l0IGluZm9ybWF0aW9uIChBTFdBWVMgaW5jbHVkZWQpXG4gICAqL1xuICByZWFkb25seSBjb21taXRIYXNoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbW1pdEhhc2hTaG9ydDogc3RyaW5nO1xuICByZWFkb25seSBicmFuY2g6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZ2l0IHRhZyBpbmZvcm1hdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xuICByZWFkb25seSBjb21taXRzU2luY2VUYWc/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvbW1pdCBjb3VudCBpbmZvcm1hdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWl0Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogUGFja2FnZS5qc29uIGluZm9ybWF0aW9uIChpZiBhcHBsaWNhYmxlKVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlcGxveW1lbnQgbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveWVkQXQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVwbG95ZWRCeTogc3RyaW5nO1xuICByZWFkb25seSBidWlsZE51bWJlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeT86IHN0cmluZztcbiAgcmVhZG9ubHkgcGlwZWxpbmVWZXJzaW9uPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { IVersionInfo, GitInfoInput, DeploymentInfoInput } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Represents complete version information for a deployment
|
|
4
|
+
*/
|
|
5
|
+
export declare class VersionInfo implements IVersionInfo {
|
|
6
|
+
/**
|
|
7
|
+
* Create a VersionInfo instance from raw data
|
|
8
|
+
*/
|
|
9
|
+
static create(props: IVersionInfo): VersionInfo;
|
|
10
|
+
/**
|
|
11
|
+
* Create a VersionInfo instance from environment variables
|
|
12
|
+
*/
|
|
13
|
+
static fromEnvironment(env: {
|
|
14
|
+
[key: string]: string;
|
|
15
|
+
}): VersionInfo;
|
|
16
|
+
/**
|
|
17
|
+
* Create a VersionInfo instance from a JSON string
|
|
18
|
+
*/
|
|
19
|
+
static fromJson(json: string): VersionInfo;
|
|
20
|
+
readonly version: string;
|
|
21
|
+
readonly commitHash: string;
|
|
22
|
+
readonly commitHashShort: string;
|
|
23
|
+
readonly branch: string;
|
|
24
|
+
readonly tag?: string;
|
|
25
|
+
readonly commitsSinceTag?: number;
|
|
26
|
+
readonly commitCount: number;
|
|
27
|
+
readonly packageVersion?: string;
|
|
28
|
+
readonly deployedAt: string;
|
|
29
|
+
readonly deployedBy: string;
|
|
30
|
+
readonly buildNumber?: string;
|
|
31
|
+
readonly environment: string;
|
|
32
|
+
readonly repository?: string;
|
|
33
|
+
readonly pipelineVersion?: string;
|
|
34
|
+
private constructor();
|
|
35
|
+
/**
|
|
36
|
+
* Convert to plain version string
|
|
37
|
+
*/
|
|
38
|
+
toString(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Convert to JSON string
|
|
41
|
+
*/
|
|
42
|
+
toJson(pretty?: boolean): string;
|
|
43
|
+
/**
|
|
44
|
+
* Convert to object
|
|
45
|
+
*/
|
|
46
|
+
toObject(): IVersionInfo;
|
|
47
|
+
/**
|
|
48
|
+
* Get formatted version for display
|
|
49
|
+
*/
|
|
50
|
+
displayVersion(): string;
|
|
51
|
+
/**
|
|
52
|
+
* Check if this version is from a tagged release
|
|
53
|
+
*/
|
|
54
|
+
taggedRelease(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Check if this version is from the main branch
|
|
57
|
+
*/
|
|
58
|
+
mainBranch(): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Compare with another version
|
|
61
|
+
* Returns: -1 if this < other, 0 if equal, 1 if this > other
|
|
62
|
+
*/
|
|
63
|
+
compare(other: VersionInfo): number;
|
|
64
|
+
/**
|
|
65
|
+
* Create a parameter name for SSM Parameter Store
|
|
66
|
+
*/
|
|
67
|
+
parameterName(template: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Create CloudFormation export name
|
|
70
|
+
*/
|
|
71
|
+
exportName(template: string): string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Builder class for creating VersionInfo instances
|
|
75
|
+
*/
|
|
76
|
+
export declare class VersionInfoBuilder {
|
|
77
|
+
private props;
|
|
78
|
+
/**
|
|
79
|
+
* Set the version string
|
|
80
|
+
*/
|
|
81
|
+
version(version: string): this;
|
|
82
|
+
/**
|
|
83
|
+
* Set git information
|
|
84
|
+
*/
|
|
85
|
+
gitInfo(info: GitInfoInput): this;
|
|
86
|
+
/**
|
|
87
|
+
* Set package version
|
|
88
|
+
*/
|
|
89
|
+
packageVersion(version: string): this;
|
|
90
|
+
/**
|
|
91
|
+
* Set deployment metadata
|
|
92
|
+
*/
|
|
93
|
+
deploymentInfo(info: DeploymentInfoInput): this;
|
|
94
|
+
/**
|
|
95
|
+
* Set repository information
|
|
96
|
+
*/
|
|
97
|
+
repository(repo: string): this;
|
|
98
|
+
/**
|
|
99
|
+
* Set pipeline version
|
|
100
|
+
*/
|
|
101
|
+
pipelineVersion(version: string): this;
|
|
102
|
+
/**
|
|
103
|
+
* Build the VersionInfo instance
|
|
104
|
+
*/
|
|
105
|
+
create(): VersionInfo;
|
|
106
|
+
}
|