git-release-manager 0.0.14 → 0.6.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/README.md +0 -0
- package/dist/commands/branch/command.js +84 -14
- package/dist/commands/branch/command.js.map +1 -1
- package/dist/commands/branch/types/BranchFinishCliArgs.js +3 -0
- package/dist/commands/branch/types/BranchFinishCliArgs.js.map +1 -0
- package/dist/commands/branch/types/BranchSyncCliArgs.js +3 -0
- package/dist/commands/branch/types/BranchSyncCliArgs.js.map +1 -0
- package/dist/commands/changelog/command.js +28 -3
- package/dist/commands/changelog/command.js.map +1 -1
- package/dist/commands/commit/command.js +8 -3
- package/dist/commands/commit/command.js.map +1 -1
- package/dist/commands/flow/command.js +196 -6
- package/dist/commands/flow/command.js.map +1 -1
- package/dist/commands/track/command.js +136 -0
- package/dist/commands/track/command.js.map +1 -0
- package/dist/commands/version/command.js +115 -23
- package/dist/commands/version/command.js.map +1 -1
- package/dist/config/defaults/config.json +375 -250
- package/dist/config/types/Flow.js +34 -0
- package/dist/config/types/Flow.js.map +1 -0
- package/dist/config/types/Track.js +3 -0
- package/dist/config/types/Track.js.map +1 -0
- package/dist/config/types/Versioning.js +3 -0
- package/dist/config/types/Versioning.js.map +1 -0
- package/dist/index.js +25 -6
- package/dist/index.js.map +1 -1
- package/dist/modules/FlowManager.js +47 -4
- package/dist/modules/FlowManager.js.map +1 -1
- package/dist/modules/branch/BranchController.js +33 -2
- package/dist/modules/branch/BranchController.js.map +1 -1
- package/dist/modules/changelog/ChangelogController.js.map +1 -1
- package/dist/modules/changelog/templateOperations.js.map +1 -1
- package/dist/modules/flow/FlowController.js +764 -0
- package/dist/modules/flow/FlowController.js.map +1 -0
- package/dist/modules/git/commits/commitProcessor.js +21 -3
- package/dist/modules/git/commits/commitProcessor.js.map +1 -1
- package/dist/modules/git/commits/index.js +9 -1
- package/dist/modules/git/commits/index.js.map +1 -1
- package/dist/modules/git/context/remoteHandler.js +1 -1
- package/dist/modules/git/context/remoteHandler.js.map +1 -1
- package/dist/modules/git/gitOperations.js.map +1 -1
- package/dist/modules/git/lineTags.js +58 -0
- package/dist/modules/git/lineTags.js.map +1 -0
- package/dist/modules/track/TrackController.js +320 -0
- package/dist/modules/track/TrackController.js.map +1 -0
- package/dist/modules/version/BumpDeriver.js +119 -0
- package/dist/modules/version/BumpDeriver.js.map +1 -0
- package/dist/modules/version/GitVersionManager.js +42 -14
- package/dist/modules/version/GitVersionManager.js.map +1 -1
- package/dist/modules/version/ProjectVersion.js +84 -3
- package/dist/modules/version/ProjectVersion.js.map +1 -1
- package/dist/modules/version/VersionController.js +238 -3
- package/dist/modules/version/VersionController.js.map +1 -1
- package/dist/modules/version/VersionStamper.js +139 -0
- package/dist/modules/version/VersionStamper.js.map +1 -0
- package/dist/modules/version/branchChannel.js +94 -0
- package/dist/modules/version/branchChannel.js.map +1 -0
- package/dist/modules/version/resolveVersionRef.js +78 -0
- package/dist/modules/version/resolveVersionRef.js.map +1 -0
- package/dist/modules/version/versionFormatter.js +19 -1
- package/dist/modules/version/versionFormatter.js.map +1 -1
- package/dist/templates/defaults/changelog.detailed.ejs +0 -0
- package/dist/templates/defaults/changelog.ejs +0 -0
- package/dist/utils/cmd.js +15 -2
- package/dist/utils/cmd.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deriveBump = deriveBump;
|
|
4
|
+
exports.explainBump = explainBump;
|
|
5
|
+
const RANK = { patch: 1, minor: 2, major: 3 };
|
|
6
|
+
/**
|
|
7
|
+
* The conventional-commit subject shape, with the modifier group that carries
|
|
8
|
+
* the `!` marker. Identical to the one enrichCommit uses, deliberately: the
|
|
9
|
+
* changelog and the version must agree on what a commit IS before they can
|
|
10
|
+
* disagree about what it means.
|
|
11
|
+
*/
|
|
12
|
+
const SUBJECT = /^(?<type>\w+)(\((?<scope>[^)]+)\))?(?<modifier>[!+~?*])?:\s(?<summary>.+)$/;
|
|
13
|
+
function isBump(v) {
|
|
14
|
+
return v === 'major' || v === 'minor' || v === 'patch';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* deriveBump — grade a set of commits against the configured taxonomy.
|
|
18
|
+
*
|
|
19
|
+
* Pure: it takes the commits, never reads git. That is what lets the caller
|
|
20
|
+
* decide the range (and lets a test supply a fixture without a repository).
|
|
21
|
+
*/
|
|
22
|
+
function deriveBump(commits, config) {
|
|
23
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
24
|
+
const fallback = isBump((_a = config === null || config === void 0 ? void 0 : config.versioning) === null || _a === void 0 ? void 0 : _a.defaultBump)
|
|
25
|
+
? config.versioning.defaultBump
|
|
26
|
+
: 'patch';
|
|
27
|
+
const counts = { major: 0, minor: 0, patch: 0 };
|
|
28
|
+
const reasons = [];
|
|
29
|
+
let unmatched = 0;
|
|
30
|
+
let best = null;
|
|
31
|
+
const noteTypes = (_b = config === null || config === void 0 ? void 0 : config.noteTypes) !== null && _b !== void 0 ? _b : [];
|
|
32
|
+
const commitTypes = (_c = config === null || config === void 0 ? void 0 : config.commitTypes) !== null && _c !== void 0 ? _c : [];
|
|
33
|
+
const vote = (level, why) => {
|
|
34
|
+
counts[level]++;
|
|
35
|
+
if (best === null || RANK[level] > RANK[best]) {
|
|
36
|
+
best = level;
|
|
37
|
+
}
|
|
38
|
+
if (reasons.length < 20)
|
|
39
|
+
reasons.push(`${level}: ${why}`);
|
|
40
|
+
};
|
|
41
|
+
for (const commit of commits) {
|
|
42
|
+
const subject = ((_d = commit.message) !== null && _d !== void 0 ? _d : '').trim();
|
|
43
|
+
const body = (_e = commit.body) !== null && _e !== void 0 ? _e : '';
|
|
44
|
+
const m = SUBJECT.exec(subject);
|
|
45
|
+
const term = (_g = (_f = m === null || m === void 0 ? void 0 : m.groups) === null || _f === void 0 ? void 0 : _f.type) !== null && _g !== void 0 ? _g : null;
|
|
46
|
+
const modifier = (_j = (_h = m === null || m === void 0 ? void 0 : m.groups) === null || _h === void 0 ? void 0 : _h.modifier) !== null && _j !== void 0 ? _j : null;
|
|
47
|
+
let voted = false;
|
|
48
|
+
// ── notes first: a breaking change outranks whatever the type says ──
|
|
49
|
+
//
|
|
50
|
+
// TWO SPELLINGS, BOTH FROM THE SAME DEFINITION. `feat!: x` carries the
|
|
51
|
+
// note's `sign` in the subject; `BREAKING CHANGE: …` carries one of its
|
|
52
|
+
// `terms` in the body. Conventional commits treats them as equivalent
|
|
53
|
+
// and so does this — reading both off ONE noteType entry is what keeps
|
|
54
|
+
// them equivalent when somebody edits the config.
|
|
55
|
+
for (const note of noteTypes) {
|
|
56
|
+
const level = note.bump;
|
|
57
|
+
if (!isBump(level))
|
|
58
|
+
continue;
|
|
59
|
+
if (note.sign && modifier && note.sign === modifier) {
|
|
60
|
+
vote(level, `${subject.slice(0, 60)} (subject sign '${note.sign}')`);
|
|
61
|
+
voted = true;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
const hit = ((_k = note.terms) !== null && _k !== void 0 ? _k : []).find(t => new RegExp(`(^|\\n)\\s*${t.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\s*:`, 'i').test(body));
|
|
65
|
+
if (hit) {
|
|
66
|
+
vote(level, `${subject.slice(0, 60)} (body '${hit}')`);
|
|
67
|
+
voted = true;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (voted)
|
|
72
|
+
continue;
|
|
73
|
+
// ── then the commit type ──
|
|
74
|
+
if (term) {
|
|
75
|
+
const matched = commitTypes.find(ct => { var _a; return ((_a = ct.terms) !== null && _a !== void 0 ? _a : []).includes(term); });
|
|
76
|
+
if (matched) {
|
|
77
|
+
const level = matched.bump;
|
|
78
|
+
if (isBump(level)) {
|
|
79
|
+
vote(level, `${subject.slice(0, 60)} (${matched.type})`);
|
|
80
|
+
voted = true;
|
|
81
|
+
}
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// A commit the taxonomy does not describe. Counted, never guessed at.
|
|
86
|
+
if (!voted)
|
|
87
|
+
unmatched++;
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
bump: best !== null && best !== void 0 ? best : fallback,
|
|
91
|
+
counts,
|
|
92
|
+
unmatched,
|
|
93
|
+
total: commits.length,
|
|
94
|
+
derived: best !== null,
|
|
95
|
+
reasons,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* explainBump — the one-paragraph account, for a caller that wants to show its
|
|
100
|
+
* operator WHY before writing a tag.
|
|
101
|
+
*
|
|
102
|
+
* Goes to the caller, not to stdout: `version` prints the version string on
|
|
103
|
+
* stdout and consumers read the last line of it. An explanation printed there
|
|
104
|
+
* would be read as a version by every one of them.
|
|
105
|
+
*/
|
|
106
|
+
function explainBump(e) {
|
|
107
|
+
const parts = [
|
|
108
|
+
`${e.counts.major} major`,
|
|
109
|
+
`${e.counts.minor} minor`,
|
|
110
|
+
`${e.counts.patch} patch`,
|
|
111
|
+
];
|
|
112
|
+
if (e.unmatched > 0)
|
|
113
|
+
parts.push(`${e.unmatched} unclassified`);
|
|
114
|
+
const head = e.derived
|
|
115
|
+
? `derived ${e.bump} from ${e.total} commit(s)`
|
|
116
|
+
: `no commit voted; falling back to ${e.bump} (${e.total} commit(s) seen)`;
|
|
117
|
+
return `${head} — ${parts.join(' · ')}`;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=BumpDeriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BumpDeriver.js","sourceRoot":"","sources":["../../../src/modules/version/BumpDeriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.GitVersionManager = void 0;
|
|
7
7
|
const simple_git_1 = __importDefault(require("simple-git"));
|
|
8
8
|
const semver_1 = __importDefault(require("semver"));
|
|
9
|
+
const resolveVersionRef_1 = require("./resolveVersionRef");
|
|
9
10
|
const versionFormatter_1 = require("./versionFormatter");
|
|
10
11
|
const git = (0, simple_git_1.default)();
|
|
11
12
|
class GitVersionManager {
|
|
@@ -54,7 +55,7 @@ class GitVersionManager {
|
|
|
54
55
|
const version = await this.getLatestTag();
|
|
55
56
|
console.log(`Latest version: ${version}`);
|
|
56
57
|
}
|
|
57
|
-
async compareVersions(compareVersion) {
|
|
58
|
+
async compareVersions(compareVersion, prefix) {
|
|
58
59
|
// Fetch the latest version tag from the repository
|
|
59
60
|
const latestVersion = await this.getLatestTag();
|
|
60
61
|
// Use semver to compare the two versions
|
|
@@ -77,16 +78,29 @@ class GitVersionManager {
|
|
|
77
78
|
console.log(`Comparing ${compareVersion} with ${latestVersion}`);
|
|
78
79
|
console.log(comparisonText);
|
|
79
80
|
// Print the changes between the compared versions
|
|
81
|
+
//
|
|
82
|
+
// THE RANGE NEEDS A REF, THE COMPARISON DOES NOT (DECISIONS D4). semver
|
|
83
|
+
// tolerates a leading `v`, so the sentences above are right either way;
|
|
84
|
+
// `git diff` is not, and `--compare 2.0.0` used to die here on
|
|
85
|
+
// `ambiguous argument '2.0.0...v2.1.1'` AFTER printing a correct-looking
|
|
86
|
+
// answer. Resolved through the one resolver, so the bare number works.
|
|
80
87
|
console.log('\nChanges:');
|
|
81
|
-
const
|
|
88
|
+
const fromRef = await (0, resolveVersionRef_1.requireVersionRef)(compareVersion, prefix);
|
|
89
|
+
const diff = await git.diff([`${fromRef}...${latestVersion}`]);
|
|
82
90
|
console.log(diff);
|
|
83
91
|
}
|
|
84
|
-
async revertToVersion(version, push) {
|
|
92
|
+
async revertToVersion(version, push, prefix) {
|
|
85
93
|
if (!semver_1.default.valid(version)) {
|
|
86
94
|
throw new Error(`Invalid version format: ${version}`);
|
|
87
95
|
}
|
|
88
|
-
|
|
89
|
-
|
|
96
|
+
// BOTH SPELLINGS, THROUGH THE ONE RESOLVER (DECISIONS D4). This used to
|
|
97
|
+
// hand the argument straight to `git reset --hard`, so `--revert 1.0.0`
|
|
98
|
+
// died on `fatal: ambiguous argument '1.0.0'` while `--revert v1.0.0`
|
|
99
|
+
// worked — the bare number is a valid SEMVER and not a valid REF, and
|
|
100
|
+
// this method was the only one that noticed the difference.
|
|
101
|
+
const ref = await (0, resolveVersionRef_1.requireVersionRef)(version, prefix);
|
|
102
|
+
await git.reset(['--hard', ref]);
|
|
103
|
+
console.log(`Reverted to version ${ref}`);
|
|
90
104
|
if (push) {
|
|
91
105
|
await git.push('origin', 'HEAD', ['--force']);
|
|
92
106
|
console.log('Force pushed revert to remote');
|
|
@@ -101,14 +115,19 @@ class GitVersionManager {
|
|
|
101
115
|
console.log('Pushed local tags to remote');
|
|
102
116
|
}
|
|
103
117
|
}
|
|
104
|
-
async createGitTag(version) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
118
|
+
async createGitTag(version, message) {
|
|
119
|
+
// ANNOTATED, not lightweight. simple-git's addTag() creates a lightweight
|
|
120
|
+
// tag: a bare ref with no tagger, no date and no message, so a release
|
|
121
|
+
// identified by one carries no record of who cut it or when. Consumers
|
|
122
|
+
// reject them for exactly that reason — `git describe --exact-match`
|
|
123
|
+
// ignores lightweight tags by default, so a downstream derivation looking
|
|
124
|
+
// for "the version at this commit" simply does not see it.
|
|
125
|
+
//
|
|
126
|
+
// The failure is also no longer swallowed. It used to console.error and
|
|
127
|
+
// return, so a run that created NOTHING still printed "Version X created
|
|
128
|
+
// successfully" and exited 0 — the caller had no way to tell a real release
|
|
129
|
+
// from a no-op.
|
|
130
|
+
await git.raw(['tag', '-a', version, '-m', message !== null && message !== void 0 ? message : version]);
|
|
112
131
|
}
|
|
113
132
|
async initVersion(options) {
|
|
114
133
|
var _a;
|
|
@@ -122,7 +141,16 @@ class GitVersionManager {
|
|
|
122
141
|
}
|
|
123
142
|
async generateNewVersion(options) {
|
|
124
143
|
let newVersion;
|
|
125
|
-
|
|
144
|
+
// --from lets a CALLER supply the baseline instead of having it
|
|
145
|
+
// discovered here. Discovery is a policy question this engine
|
|
146
|
+
// cannot answer for everyone: getLatestTag takes the highest tag
|
|
147
|
+
// matching prefix/channel, but a consumer may require that the tag
|
|
148
|
+
// be ANNOTATED, or reachable from a particular branch, or both.
|
|
149
|
+
// Without an injection point such a consumer has to reimplement the
|
|
150
|
+
// arithmetic to keep its own baseline — which is how two semver
|
|
151
|
+
// implementations end up in one release path, disagreeing exactly
|
|
152
|
+
// where it is hardest to see.
|
|
153
|
+
const latestTag = options.from ? options.from : await this.getLatestTag(options.prefix, options.channel);
|
|
126
154
|
const type = options.major ? 'major' : options.minor ? 'minor' : options.patch ? 'patch' : undefined;
|
|
127
155
|
newVersion = await (0, versionFormatter_1.incrementVersion)(latestTag, type, {
|
|
128
156
|
channel: options.channel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitVersionManager.js","sourceRoot":"","sources":["../../../src/modules/version/GitVersionManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GitVersionManager.js","sourceRoot":"","sources":["../../../src/modules/version/GitVersionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,82 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ProjectVersionManager = void 0;
|
|
7
|
+
exports.matchFilesInDirectory = matchFilesInDirectory;
|
|
7
8
|
const fs_1 = require("fs");
|
|
8
9
|
const path_1 = require("path");
|
|
9
10
|
const simple_git_1 = __importDefault(require("simple-git"));
|
|
10
11
|
const GitVersionManager_1 = require("./GitVersionManager");
|
|
12
|
+
/**
|
|
13
|
+
* Names in `directory` matching a SINGLE-SEGMENT filename pattern whose only
|
|
14
|
+
* wildcard is `*`. Sorted, files only.
|
|
15
|
+
*
|
|
16
|
+
* ── WHY THIS EXISTS INSTEAD OF `glob` ────────────────────────────────────
|
|
17
|
+
*
|
|
18
|
+
* The project-file table below has exactly one wildcard in it, `*.csproj`:
|
|
19
|
+
* one path segment, one star, a flat listing of the current directory. The
|
|
20
|
+
* call site used to be `require('glob')` inside a function body, which bought
|
|
21
|
+
* recursion, brace expansion, ignore lists and negation — none of them
|
|
22
|
+
* reachable from that table.
|
|
23
|
+
*
|
|
24
|
+
* The cost was not a heavier install; it was a MISSING one. `glob` was never
|
|
25
|
+
* declared in `dependencies`. It resolved transitively through
|
|
26
|
+
* devDependencies in a development checkout, so it worked here and only here.
|
|
27
|
+
* In a packaged install — `npm pack` + `npm install --global`, which ships
|
|
28
|
+
* `dependencies` and nothing else — it is absent, and `grm version --detect`
|
|
29
|
+
* dies with "Cannot find module 'glob'". Measured 2026-08-02 against
|
|
30
|
+
* ~/.local/lib/node_modules/git-release-manager: nine e2e cases red, while the
|
|
31
|
+
* same code passed from the source tree.
|
|
32
|
+
*
|
|
33
|
+
* Promoting `glob` to `dependencies` would also close it, and was rejected:
|
|
34
|
+
* the version transitively present is 7.2.3, which is end-of-life, and glob 9+
|
|
35
|
+
* renamed `sync` to `globSync`, so the honest options were "ship a deprecated
|
|
36
|
+
* major" or "change this code anyway". `fs.globSync` closes it in one line but
|
|
37
|
+
* arrived in Node 22, and package.json declares `engines: { node: '>=14' }` —
|
|
38
|
+
* trading an undeclared dependency for a silently broken engine floor is the
|
|
39
|
+
* same defect in different clothes.
|
|
40
|
+
*
|
|
41
|
+
* ── IT REFUSES WHAT IT CANNOT SERVE ──────────────────────────────────────
|
|
42
|
+
*
|
|
43
|
+
* A pattern with a path separator, `**`, or any other glob metacharacter needs
|
|
44
|
+
* a real glob implementation. Returning "no match" for one would surface later
|
|
45
|
+
* as "No supported project file found in current directory" — a sentence that
|
|
46
|
+
* sounds true and describes the wrong thing. So it throws, naming the pattern.
|
|
47
|
+
*/
|
|
48
|
+
function matchFilesInDirectory(pattern, directory) {
|
|
49
|
+
// Anything that is a glob metacharacter but not the `*` handled below.
|
|
50
|
+
if (pattern.includes('**') || /[/\\?[\]{}()!+@]/.test(pattern)) {
|
|
51
|
+
throw new Error(`Unsupported project file pattern '${pattern}': ` +
|
|
52
|
+
`only single-segment names whose sole wildcard is '*' are supported.`);
|
|
53
|
+
}
|
|
54
|
+
// Split on `*` FIRST, then escape each literal chunk. That way the star is
|
|
55
|
+
// never itself escaped, and every other regex metacharacter is.
|
|
56
|
+
const source = pattern
|
|
57
|
+
.split('*')
|
|
58
|
+
.map(chunk => chunk.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
|
|
59
|
+
.join('[^/]*');
|
|
60
|
+
const matcher = new RegExp(`^${source}$`);
|
|
61
|
+
let entries;
|
|
62
|
+
try {
|
|
63
|
+
entries = (0, fs_1.readdirSync)(directory, { withFileTypes: true });
|
|
64
|
+
}
|
|
65
|
+
catch (_a) {
|
|
66
|
+
// An unreadable directory has no project file in it. The caller's own
|
|
67
|
+
// "no supported project file found" is the right sentence here.
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
return entries
|
|
71
|
+
.filter(entry => entry.isFile() || entry.isSymbolicLink())
|
|
72
|
+
.map(entry => entry.name)
|
|
73
|
+
// glob parity: a leading `*` does not match a leading dot, so
|
|
74
|
+
// `*.csproj` must not select a file literally named `.csproj`.
|
|
75
|
+
.filter(name => !(name.startsWith('.') && pattern.startsWith('*')))
|
|
76
|
+
.filter(name => matcher.test(name))
|
|
77
|
+
// glob.sync returns sorted results by default, and the caller takes
|
|
78
|
+
// [0]. Without this the pick would follow readdir order, which is
|
|
79
|
+
// filesystem-dependent — the same directory could resolve to a
|
|
80
|
+
// different project file on a different machine.
|
|
81
|
+
.sort();
|
|
82
|
+
}
|
|
11
83
|
class PackageJsonVersion {
|
|
12
84
|
constructor(path = 'package.json') {
|
|
13
85
|
this.filePath = path;
|
|
@@ -135,9 +207,18 @@ class ProjectVersionManager {
|
|
|
135
207
|
// Path belirtilmemişse, mevcut dizinde desteklenen ilk proje dosyasını bul
|
|
136
208
|
for (const { pattern, handler } of this.PROJECT_FILES) {
|
|
137
209
|
if (pattern.includes('*')) {
|
|
138
|
-
// Wildcard
|
|
139
|
-
|
|
140
|
-
|
|
210
|
+
// Wildcard patterns are matched against a flat listing of the
|
|
211
|
+
// current directory — see matchFilesInDirectory for why this is
|
|
212
|
+
// not `glob`.
|
|
213
|
+
//
|
|
214
|
+
// Both branches fixed the same undeclared-`glob` defect, one as
|
|
215
|
+
// a private matchInCwd and one as this exported function. The
|
|
216
|
+
// exported one wins because it is the one under test
|
|
217
|
+
// (test/unit/version/projectFilePattern.test.ts covers the
|
|
218
|
+
// supported patterns AND the refusals); a private method with
|
|
219
|
+
// no caller left would have been the same code with the seal
|
|
220
|
+
// removed.
|
|
221
|
+
const files = matchFilesInDirectory(pattern, process.cwd());
|
|
141
222
|
if (files.length > 0) {
|
|
142
223
|
return {
|
|
143
224
|
filePath: (0, path_1.join)(process.cwd(), files[0]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectVersion.js","sourceRoot":"","sources":["../../../src/modules/version/ProjectVersion.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ProjectVersion.js","sourceRoot":"","sources":["../../../src/modules/version/ProjectVersion.ts"],"names":[],"mappings":"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"}
|