submodule-version 2.2.0 → 2.3.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/dist/src/__tests__/versionUtil.test.js +14 -0
- package/dist/src/__tests__/versionUtil.test.js.map +1 -1
- package/dist/src/buildGraph/buildGraph.d.ts +1 -0
- package/dist/src/buildGraph/buildGraph.js +22 -3
- package/dist/src/buildGraph/buildGraph.js.map +1 -1
- package/dist/src/git/git.d.ts +19 -0
- package/dist/src/git/git.js +215 -2
- package/dist/src/git/git.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/sv.d.ts +15 -0
- package/dist/src/sv.js +165 -2
- package/dist/src/sv.js.map +1 -1
- package/dist/src/versionUtil.d.ts +1 -0
- package/dist/src/versionUtil.js +9 -0
- package/dist/src/versionUtil.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/versionUtil.test.ts +17 -0
- package/src/buildGraph/buildGraph.ts +36 -3
- package/src/git/git.ts +331 -2
- package/src/index.ts +1 -0
- package/src/sv.ts +207 -3
- package/src/versionUtil.ts +13 -0
|
@@ -48,4 +48,18 @@ describe('Compare', () => {
|
|
|
48
48
|
expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 2)).toBe(false);
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
|
+
describe('Bump', () => {
|
|
52
|
+
it('Release', () => {
|
|
53
|
+
expect(versionUtil_1.versionUtil.bump('0.0.0', 'release')).toBe('0.0.1');
|
|
54
|
+
expect(versionUtil_1.versionUtil.bump('1.2.3', 'release')).toBe('1.2.4');
|
|
55
|
+
});
|
|
56
|
+
it('Minor', () => {
|
|
57
|
+
expect(versionUtil_1.versionUtil.bump('0.0.0', 'minor')).toBe('0.1.0');
|
|
58
|
+
expect(versionUtil_1.versionUtil.bump('1.2.3', 'minor')).toBe('1.3.0');
|
|
59
|
+
});
|
|
60
|
+
it('Major', () => {
|
|
61
|
+
expect(versionUtil_1.versionUtil.bump('0.0.0', 'major')).toBe('1.0.0');
|
|
62
|
+
expect(versionUtil_1.versionUtil.bump('1.2.3', 'major')).toBe('2.0.0');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
51
65
|
//# sourceMappingURL=versionUtil.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionUtil.test.js","sourceRoot":"","sources":["../../../src/__tests__/versionUtil.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"versionUtil.test.js","sourceRoot":"","sources":["../../../src/__tests__/versionUtil.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,19 +57,38 @@ const buildGraph = async () => {
|
|
|
57
57
|
const versions = await git_1.git.listVersions(name);
|
|
58
58
|
const { parents, meta } = data;
|
|
59
59
|
const used = Object.entries(parents).reduce((selective, [, v]) => (versionUtil_1.versionUtil.pick(selective, v)), versions);
|
|
60
|
+
const allowedVersions = Object.entries(parents)
|
|
61
|
+
.filter(([parent]) => parent !== baseJson.name)
|
|
62
|
+
.reduce((selective, [, v]) => (versionUtil_1.versionUtil.pick(selective, v)), versions);
|
|
60
63
|
// No compatible version found and module has version tags
|
|
61
64
|
if (!used.length && versions.length) {
|
|
62
65
|
throw new GraphError_1.GraphError('VERSION_CONFLICT', { parents, name });
|
|
63
66
|
}
|
|
64
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Текущая версия — тег, на котором реально стоит HEAD. Сравнивать с
|
|
69
|
+
* package.json нельзя: его version не обязан совпадать с тегами,
|
|
70
|
+
* и такое сравнение отрывает HEAD (checkout на тег) при каждом buildGraph
|
|
71
|
+
* Checkout делаем только на чистой копии без локальной работы:
|
|
72
|
+
* незакоммиченные изменения или незапушенные коммиты
|
|
73
|
+
* важнее резолва версий.
|
|
74
|
+
*/
|
|
75
|
+
const current = await git_1.git.currentVersion(name);
|
|
76
|
+
if (!current || !used.includes(current)) {
|
|
65
77
|
const latest = versionUtil_1.versionUtil.latest(used);
|
|
66
|
-
|
|
78
|
+
const moduleDir = path_1.default.join(runOptions_1.RunOptions.cwd, runOptions_1.RunOptions.modulesDir, name);
|
|
79
|
+
const [hasChanges, hasUnpushed] = await Promise.all([
|
|
80
|
+
git_1.git.hasChanges(moduleDir),
|
|
81
|
+
git_1.git.hasUnpushedCommits(moduleDir),
|
|
82
|
+
]);
|
|
83
|
+
const allChangesDone = !hasChanges && !hasUnpushed;
|
|
84
|
+
if (latest && latest !== current && allChangesDone) {
|
|
67
85
|
await git_1.git.checkout(name, latest);
|
|
68
86
|
}
|
|
69
87
|
}
|
|
88
|
+
const version = current || meta.version;
|
|
70
89
|
return {
|
|
71
90
|
name,
|
|
72
|
-
data: { versions, parents, used,
|
|
91
|
+
data: { versions, parents, used, allowedVersions, version },
|
|
73
92
|
};
|
|
74
93
|
}));
|
|
75
94
|
return graph.reduce((acc, { name, data }) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildGraph.js","sourceRoot":"","sources":["../../../src/buildGraph/buildGraph.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,sDAAmD;AACnD,gDAA6C;AAC7C,gCAA6B;AAC7B,8CAA2C;AAC3C,6CAA0C;
|
|
1
|
+
{"version":3,"file":"buildGraph.js","sourceRoot":"","sources":["../../../src/buildGraph/buildGraph.ts"],"names":[],"mappings":"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"}
|
package/dist/src/git/git.d.ts
CHANGED
|
@@ -3,5 +3,24 @@ export declare const git: {
|
|
|
3
3
|
addSumbmodule: (url: string) => Promise<void>;
|
|
4
4
|
checkout: (name: string, version: string) => Promise<void>;
|
|
5
5
|
listVersions: (projectName: string) => Promise<string[]>;
|
|
6
|
+
status: (dir: string) => Promise<string>;
|
|
7
|
+
hasChanges: (dir: string) => Promise<boolean>;
|
|
8
|
+
hasUnpushedCommits: (dir: string) => Promise<boolean>;
|
|
9
|
+
isGitRepo: (dir: string) => Promise<boolean>;
|
|
10
|
+
getRemote: (dir: string) => Promise<string | null>;
|
|
11
|
+
init: (dir: string) => Promise<void>;
|
|
12
|
+
addRemote: (dir: string, url: string) => Promise<void>;
|
|
13
|
+
currentBranch: (dir: string) => Promise<string | null>;
|
|
14
|
+
defaultRemoteBranch: (dir: string) => Promise<string | null>;
|
|
15
|
+
ensureBranch: (dir: string) => Promise<void>;
|
|
16
|
+
commitAll: (dir: string, message: string) => Promise<void>;
|
|
17
|
+
addTag: (dir: string, version: string) => Promise<void>;
|
|
18
|
+
push: (dir: string, tag?: string) => Promise<void>;
|
|
19
|
+
fetch: (dir: string) => Promise<void>;
|
|
20
|
+
isRemoteAhead: (dir: string) => Promise<boolean>;
|
|
21
|
+
pullRebaseAutostash: (dir: string) => Promise<void>;
|
|
22
|
+
tagsAtHead: (dir: string) => Promise<string[]>;
|
|
23
|
+
currentVersion: (name: string) => Promise<string | null>;
|
|
24
|
+
listTags: (dir: string) => Promise<string[]>;
|
|
6
25
|
rm: (submoduleName: string) => Promise<void>;
|
|
7
26
|
};
|
package/dist/src/git/git.js
CHANGED
|
@@ -35,8 +35,221 @@ exports.git = {
|
|
|
35
35
|
},
|
|
36
36
|
listVersions: async (projectName) => {
|
|
37
37
|
const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, projectName);
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
return exports.git.listTags(module);
|
|
39
|
+
},
|
|
40
|
+
status: async (dir) => {
|
|
41
|
+
const res = await execAsync(`git -C ${dir} status --porcelain`, { cwd: runOptions_1.RunOptions.cwd });
|
|
42
|
+
return res.stdout.toString();
|
|
43
|
+
},
|
|
44
|
+
hasChanges: async (dir) => {
|
|
45
|
+
const status = await exports.git.status(dir);
|
|
46
|
+
return status.trim().length > 0;
|
|
47
|
+
},
|
|
48
|
+
hasUnpushedCommits: async (dir) => {
|
|
49
|
+
await exports.git.fetch(dir);
|
|
50
|
+
const branch = await exports.git.currentBranch(dir);
|
|
51
|
+
if (branch) {
|
|
52
|
+
let upstream = null;
|
|
53
|
+
try {
|
|
54
|
+
const res = await execAsync(`git -C ${dir} rev-parse --abbrev-ref --symbolic-full-name @{u}`, { cwd: runOptions_1.RunOptions.cwd });
|
|
55
|
+
upstream = res.stdout.toString().trim() || null;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
upstream = null;
|
|
59
|
+
}
|
|
60
|
+
if (!upstream) {
|
|
61
|
+
try {
|
|
62
|
+
await execAsync(`git -C ${dir} rev-parse --verify --quiet origin/${branch}`, { cwd: runOptions_1.RunOptions.cwd });
|
|
63
|
+
upstream = `origin/${branch}`;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
upstream = null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/* Ветки на remote нет — всё локальное не опубликовано */
|
|
70
|
+
if (!upstream)
|
|
71
|
+
return true;
|
|
72
|
+
const res = await execAsync(`git -C ${dir} rev-list ${upstream}..HEAD --count`, { cwd: runOptions_1.RunOptions.cwd });
|
|
73
|
+
return Number(res.stdout.toString().trim()) > 0;
|
|
74
|
+
}
|
|
75
|
+
/*
|
|
76
|
+
* Detached HEAD (checkout на тег): локальные теги не доказывают публикацию
|
|
77
|
+
* (могут быть не запушены) — сверяем HEAD с фактическими рефами remote.
|
|
78
|
+
*/
|
|
79
|
+
let remoteOutput = '';
|
|
80
|
+
try {
|
|
81
|
+
const res = await execAsync(`git -C ${dir} ls-remote origin`, { cwd: runOptions_1.RunOptions.cwd });
|
|
82
|
+
remoteOutput = res.stdout.toString();
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
/* Remote недоступен/не настроен — считаем всё неопубликованным */
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
const remoteShas = remoteOutput.split(/\r?\n/)
|
|
89
|
+
.map(line => line.split(/\s+/)[0])
|
|
90
|
+
.filter(sha => /^[0-9a-f]{40}$/.test(sha));
|
|
91
|
+
for (const sha of remoteShas) {
|
|
92
|
+
try {
|
|
93
|
+
await execAsync(`git -C ${dir} merge-base --is-ancestor HEAD ${sha}`, { cwd: runOptions_1.RunOptions.cwd });
|
|
94
|
+
/* HEAD достижим из remote-рефа — опубликован */
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// HEAD не предок этого рефа — проверяем остальные
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return true;
|
|
102
|
+
},
|
|
103
|
+
isGitRepo: async (dir) => {
|
|
104
|
+
try {
|
|
105
|
+
await execAsync(`git -C ${dir} rev-parse --is-inside-work-tree`, { cwd: runOptions_1.RunOptions.cwd });
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
getRemote: async (dir) => {
|
|
113
|
+
try {
|
|
114
|
+
const res = await execAsync(`git -C ${dir} remote get-url origin`, { cwd: runOptions_1.RunOptions.cwd });
|
|
115
|
+
return res.stdout.toString().trim() || null;
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
init: async (dir) => {
|
|
122
|
+
await execAsync(`git -C ${dir} init`, { cwd: runOptions_1.RunOptions.cwd });
|
|
123
|
+
},
|
|
124
|
+
addRemote: async (dir, url) => {
|
|
125
|
+
const existing = await exports.git.getRemote(dir);
|
|
126
|
+
const command = existing
|
|
127
|
+
? `git -C ${dir} remote set-url origin ${url}`
|
|
128
|
+
: `git -C ${dir} remote add origin ${url}`;
|
|
129
|
+
await execAsync(command, { cwd: runOptions_1.RunOptions.cwd });
|
|
130
|
+
},
|
|
131
|
+
currentBranch: async (dir) => {
|
|
132
|
+
try {
|
|
133
|
+
const res = await execAsync(`git -C ${dir} symbolic-ref --short -q HEAD`, { cwd: runOptions_1.RunOptions.cwd });
|
|
134
|
+
return res.stdout.toString().trim() || null;
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
defaultRemoteBranch: async (dir) => {
|
|
141
|
+
try {
|
|
142
|
+
const res = await execAsync(`git -C ${dir} symbolic-ref --short refs/remotes/origin/HEAD`, { cwd: runOptions_1.RunOptions.cwd });
|
|
143
|
+
return res.stdout.toString().trim().replace(/^origin\//, '') || null;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// origin/HEAD not set - probe common defaults
|
|
147
|
+
}
|
|
148
|
+
for (const candidate of ['main', 'master']) {
|
|
149
|
+
try {
|
|
150
|
+
await execAsync(`git -C ${dir} rev-parse --verify --quiet origin/${candidate}`, { cwd: runOptions_1.RunOptions.cwd });
|
|
151
|
+
return candidate;
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// No such remote branch
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
},
|
|
159
|
+
/*
|
|
160
|
+
* Аддоны checkout'нуты на тег (detached HEAD). Перед коммитом поднимаем
|
|
161
|
+
* локальную ветку на текущем коммите и привязываем её к remote-ветке,
|
|
162
|
+
* чтобы sync/push работали по ветке, а не в оторванной голове.
|
|
163
|
+
*/
|
|
164
|
+
ensureBranch: async (dir) => {
|
|
165
|
+
const branch = await exports.git.currentBranch(dir);
|
|
166
|
+
if (branch)
|
|
167
|
+
return;
|
|
168
|
+
await exports.git.fetch(dir);
|
|
169
|
+
const remoteBranch = await exports.git.defaultRemoteBranch(dir);
|
|
170
|
+
const target = remoteBranch || 'main';
|
|
171
|
+
await execAsync(`git -C ${dir} checkout -B ${target}`, { cwd: runOptions_1.RunOptions.cwd });
|
|
172
|
+
if (remoteBranch) {
|
|
173
|
+
await execAsync(
|
|
174
|
+
// eslint-disable-next-line max-len
|
|
175
|
+
`git -C ${dir} branch --set-upstream-to=origin/${remoteBranch} ${target}`, { cwd: runOptions_1.RunOptions.cwd });
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
commitAll: async (dir, message) => {
|
|
179
|
+
await execAsync(`git -C ${dir} add -A`, { cwd: runOptions_1.RunOptions.cwd });
|
|
180
|
+
await execAsync(`git -C ${dir} commit -m ${JSON.stringify(message)}`, { cwd: runOptions_1.RunOptions.cwd });
|
|
181
|
+
},
|
|
182
|
+
addTag: async (dir, version) => {
|
|
183
|
+
await execAsync(`git -C ${dir} tag ${version}`, { cwd: runOptions_1.RunOptions.cwd });
|
|
184
|
+
},
|
|
185
|
+
push: async (dir, tag) => {
|
|
186
|
+
await execAsync(`git -C ${dir} push -u origin HEAD`, { cwd: runOptions_1.RunOptions.cwd });
|
|
187
|
+
if (tag) {
|
|
188
|
+
await execAsync(`git -C ${dir} push origin ${tag}`, { cwd: runOptions_1.RunOptions.cwd });
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
fetch: async (dir) => {
|
|
192
|
+
try {
|
|
193
|
+
await execAsync(`git -C ${dir} fetch origin`, { cwd: runOptions_1.RunOptions.cwd });
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// Fresh repo without upstream yet - nothing to fetch
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
isRemoteAhead: async (dir) => {
|
|
200
|
+
await exports.git.fetch(dir);
|
|
201
|
+
try {
|
|
202
|
+
const res = await execAsync(`git -C ${dir} rev-list HEAD..@{u} --count`, { cwd: runOptions_1.RunOptions.cwd });
|
|
203
|
+
return Number(res.stdout.toString().trim()) > 0;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// No upstream configured - remote is not ahead
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
pullRebaseAutostash: async (dir) => {
|
|
211
|
+
try {
|
|
212
|
+
await execAsync(`git -C ${dir} pull --rebase --autostash`, { cwd: runOptions_1.RunOptions.cwd });
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
try {
|
|
216
|
+
await execAsync(`git -C ${dir} rebase --abort`, { cwd: runOptions_1.RunOptions.cwd });
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
// Best effort - no rebase in progress
|
|
220
|
+
}
|
|
221
|
+
try {
|
|
222
|
+
await execAsync(`git -C ${dir} stash pop`, { cwd: runOptions_1.RunOptions.cwd });
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// Best effort - nothing stashed
|
|
226
|
+
}
|
|
227
|
+
throw new GitError_1.GitError('GIT_SYNC_CONFLICT');
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
tagsAtHead: async (dir) => {
|
|
231
|
+
try {
|
|
232
|
+
const res = await execAsync(`git -C ${dir} tag --points-at HEAD`, { cwd: runOptions_1.RunOptions.cwd });
|
|
233
|
+
return res.stdout.toString().split(/\r?\n/)
|
|
234
|
+
.filter(tag => tag && versionUtil_1.versionUtil.validate(tag));
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
return [];
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
currentVersion: async (name) => {
|
|
241
|
+
const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
|
|
242
|
+
const tags = await exports.git.tagsAtHead(module);
|
|
243
|
+
return versionUtil_1.versionUtil.latest(tags) || null;
|
|
244
|
+
},
|
|
245
|
+
listTags: async (dir) => {
|
|
246
|
+
try {
|
|
247
|
+
await execAsync(`git -C ${dir} fetch --tags`, { cwd: runOptions_1.RunOptions.cwd });
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// Repo without remote - local tags only
|
|
251
|
+
}
|
|
252
|
+
const res = await execAsync(`git -C ${dir} tag -l`, { cwd: runOptions_1.RunOptions.cwd });
|
|
40
253
|
const tagList = res.stdout.toString().split(/\r?\n/);
|
|
41
254
|
return tagList.filter(tag => {
|
|
42
255
|
if (!tag)
|
package/dist/src/git/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/git/git.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAqC;AACrC,+BAAiC;AACjC,gDAAwB;AACxB,+CAA4C;AAC5C,gDAA6C;AAC7C,8CAA2C;AAC3C,yCAAsC;AAEtC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAErB,QAAA,GAAG,GAAG;IACjB,QAAQ,EAAE,yBAAW;IAErB,aAAa,EAAE,KAAK,EAAE,GAAW,EAAiB,EAAE;QAClD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,SAAS,CACb,qBAAqB,GAAG,IAAI,MAAM,EAAE,EACpC,EAAE,GAAG,EAAE,uBAAU,CAAC,GAAG,EAAE,CACxB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,mBAAQ,CAAC,gBAAgB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,QAAQ,EAAE,KAAK,EAAE,IAAY,EAAE,OAAe,EAAiB,EAAE;QAC/D,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,SAAS,CACb,UAAU,MAAM,aAAa,OAAO,KAAK,EACzC,EAAE,GAAG,EAAE,uBAAU,CAAC,GAAG,EAAE,CACxB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,mBAAQ,CAAC,4BAA4B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,YAAY,EAAE,KAAK,EAAE,WAAmB,EAAqB,EAAE;QAC7D,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/git/git.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SV = void 0;
|
|
3
|
+
exports.versionUtil = exports.SV = void 0;
|
|
4
4
|
var sv_1 = require("./sv");
|
|
5
5
|
Object.defineProperty(exports, "SV", { enumerable: true, get: function () { return sv_1.SV; } });
|
|
6
|
+
var versionUtil_1 = require("./versionUtil");
|
|
7
|
+
Object.defineProperty(exports, "versionUtil", { enumerable: true, get: function () { return versionUtil_1.versionUtil; } });
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,2BAA0B;AAAjB,wFAAA,EAAE,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,2BAA0B;AAAjB,wFAAA,EAAE,OAAA;AACX,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
|
package/dist/src/sv.d.ts
CHANGED
|
@@ -3,5 +3,20 @@ export declare class SV {
|
|
|
3
3
|
buildGraph: () => Promise<Record<string, import("./buildGraph/buildGraph").IGraphEntry>>;
|
|
4
4
|
install: (gitUrl: string, parentModule?: string) => Promise<void>;
|
|
5
5
|
update: () => Promise<void>;
|
|
6
|
+
setVersion: (name: string, version: string, constraint?: string) => Promise<void>;
|
|
7
|
+
getConstraint: (name: string) => Promise<string | null>;
|
|
8
|
+
setConstraint: (name: string, constraint: string) => Promise<void>;
|
|
6
9
|
remove: (submoduleName: string, parentModule?: string) => Promise<void>;
|
|
10
|
+
hasChanges: (module?: string) => Promise<boolean>;
|
|
11
|
+
hasUncommittedChanges: (module?: string) => Promise<boolean>;
|
|
12
|
+
currentVersion: (module?: string) => Promise<string | null>;
|
|
13
|
+
latestVersion: (module?: string) => Promise<string>;
|
|
14
|
+
getRemote: (module?: string) => Promise<string | null>;
|
|
15
|
+
isPublished: (module?: string) => Promise<boolean>;
|
|
16
|
+
publish: (opts: {
|
|
17
|
+
module?: string;
|
|
18
|
+
repoUrl?: string;
|
|
19
|
+
message?: string;
|
|
20
|
+
bump: "release" | "minor" | "major";
|
|
21
|
+
}) => Promise<string>;
|
|
7
22
|
}
|
package/dist/src/sv.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.SV = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
4
8
|
const pkgJSONManager_1 = require("./pkgJSONManager");
|
|
5
9
|
const buildGraph_1 = require("./buildGraph");
|
|
6
10
|
const runOptions_1 = require("./runOptions");
|
|
@@ -16,10 +20,9 @@ class SV {
|
|
|
16
20
|
throw new Error('NOT_A_GIT_URL');
|
|
17
21
|
}
|
|
18
22
|
const targetPkg = await pkgJSONManager_1.pkgJSONManager.read(parentModule);
|
|
19
|
-
|
|
23
|
+
const installedPkg = await pkgJSONManager_1.pkgJSONManager.read(name);
|
|
20
24
|
if (!installedPkg) {
|
|
21
25
|
await git_1.git.addSumbmodule(url);
|
|
22
|
-
installedPkg = pkgJSONManager_1.pkgJSONManager.read(name);
|
|
23
26
|
}
|
|
24
27
|
const versions = await git_1.git.listVersions(name);
|
|
25
28
|
const latestVersion = versionUtil_1.versionUtil.latest(versions);
|
|
@@ -47,6 +50,67 @@ class SV {
|
|
|
47
50
|
}
|
|
48
51
|
}));
|
|
49
52
|
};
|
|
53
|
+
/*
|
|
54
|
+
* Устанавливает конкретную версию аддона: checkout на тег + запись constraint'а
|
|
55
|
+
* в package.json проекта (иначе buildGraph вернёт latest(used)).
|
|
56
|
+
* constraint по умолчанию — точный пин выбранной версии; при обновлении до
|
|
57
|
+
* последней имеет смысл передать `^<version>`, чтобы новые версии продолжали приходить.
|
|
58
|
+
*/
|
|
59
|
+
// eslint-disable-next-line class-methods-use-this
|
|
60
|
+
this.setVersion = async (name, version, constraint) => {
|
|
61
|
+
const versions = await git_1.git.listVersions(name);
|
|
62
|
+
if (!versions.includes(version)) {
|
|
63
|
+
throw new Error('REQUESTED_VERSION_NOT_EXISTS');
|
|
64
|
+
}
|
|
65
|
+
const dir = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
|
|
66
|
+
const dirty = await git_1.git.hasChanges(dir);
|
|
67
|
+
/*
|
|
68
|
+
* checkout с локальными изменениями транзакционен: git переносит их на
|
|
69
|
+
* новую версию, а если перенести нельзя — отказывается, НЕ трогая дерево.
|
|
70
|
+
* Значит при ошибке мы гарантированно остаёмся на исходной версии с теми
|
|
71
|
+
* же изменениями — сообщаем, что перенос нужно сделать вручную.
|
|
72
|
+
*/
|
|
73
|
+
try {
|
|
74
|
+
await git_1.git.checkout(name, version);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
if (dirty) {
|
|
78
|
+
throw new git_1.GitError('GIT_DIRTY_SWITCH_CONFLICT');
|
|
79
|
+
}
|
|
80
|
+
throw e;
|
|
81
|
+
}
|
|
82
|
+
const json = await pkgJSONManager_1.pkgJSONManager.read();
|
|
83
|
+
if (!json?.sv)
|
|
84
|
+
return;
|
|
85
|
+
const key = Object.keys(json.sv).find(k => k.endsWith(`${name}.git`));
|
|
86
|
+
const nextConstraint = constraint || version;
|
|
87
|
+
if (key && json.sv[key] !== nextConstraint) {
|
|
88
|
+
json.sv[key] = nextConstraint;
|
|
89
|
+
await pkgJSONManager_1.pkgJSONManager.write(json);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
/*
|
|
93
|
+
* Constraint корневого проекта на аддон (ключ в sv ищем по имени, как в remove).
|
|
94
|
+
*/
|
|
95
|
+
// eslint-disable-next-line class-methods-use-this
|
|
96
|
+
this.getConstraint = async (name) => {
|
|
97
|
+
const json = await pkgJSONManager_1.pkgJSONManager.read();
|
|
98
|
+
if (!json?.sv)
|
|
99
|
+
return null;
|
|
100
|
+
const key = Object.keys(json.sv).find(k => k.endsWith(`${name}.git`));
|
|
101
|
+
return key ? json.sv[key] : null;
|
|
102
|
+
};
|
|
103
|
+
// eslint-disable-next-line class-methods-use-this
|
|
104
|
+
this.setConstraint = async (name, constraint) => {
|
|
105
|
+
const json = await pkgJSONManager_1.pkgJSONManager.read();
|
|
106
|
+
if (!json?.sv)
|
|
107
|
+
return;
|
|
108
|
+
const key = Object.keys(json.sv).find(k => k.endsWith(`${name}.git`));
|
|
109
|
+
if (key && json.sv[key] !== constraint) {
|
|
110
|
+
json.sv[key] = constraint;
|
|
111
|
+
await pkgJSONManager_1.pkgJSONManager.write(json);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
50
114
|
// eslint-disable-next-line class-methods-use-this
|
|
51
115
|
this.remove = async (submoduleName, parentModule) => {
|
|
52
116
|
await git_1.git.rm(submoduleName);
|
|
@@ -62,6 +126,105 @@ class SV {
|
|
|
62
126
|
await pkgJSONManager_1.pkgJSONManager.write(json, parentModule);
|
|
63
127
|
await (0, buildGraph_1.buildGraph)();
|
|
64
128
|
};
|
|
129
|
+
// eslint-disable-next-line class-methods-use-this
|
|
130
|
+
this.hasChanges = async (module) => {
|
|
131
|
+
const dir = module
|
|
132
|
+
? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
|
|
133
|
+
: runOptions_1.RunOptions.cwd;
|
|
134
|
+
/* Сначала дешёвая проверка рабочей копии; если чисто — смотрим,
|
|
135
|
+
* нет ли незапушенных коммитов (идёт fetch в remote) */
|
|
136
|
+
if (await git_1.git.hasChanges(dir))
|
|
137
|
+
return true;
|
|
138
|
+
return git_1.git.hasUnpushedCommits(dir);
|
|
139
|
+
};
|
|
140
|
+
// eslint-disable-next-line class-methods-use-this
|
|
141
|
+
this.hasUncommittedChanges = async (module) => {
|
|
142
|
+
const dir = module
|
|
143
|
+
? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
|
|
144
|
+
: runOptions_1.RunOptions.cwd;
|
|
145
|
+
return git_1.git.hasChanges(dir);
|
|
146
|
+
};
|
|
147
|
+
// eslint-disable-next-line class-methods-use-this
|
|
148
|
+
this.currentVersion = async (module) => {
|
|
149
|
+
const dir = module
|
|
150
|
+
? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
|
|
151
|
+
: runOptions_1.RunOptions.cwd;
|
|
152
|
+
const tags = await git_1.git.tagsAtHead(dir);
|
|
153
|
+
return versionUtil_1.versionUtil.latest(tags) || null;
|
|
154
|
+
};
|
|
155
|
+
// eslint-disable-next-line class-methods-use-this
|
|
156
|
+
this.latestVersion = async (module) => {
|
|
157
|
+
const dir = module
|
|
158
|
+
? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
|
|
159
|
+
: runOptions_1.RunOptions.cwd;
|
|
160
|
+
const versions = await git_1.git.listTags(dir);
|
|
161
|
+
return versionUtil_1.versionUtil.latest(versions) || '0.0.0';
|
|
162
|
+
};
|
|
163
|
+
// eslint-disable-next-line class-methods-use-this
|
|
164
|
+
this.getRemote = async (module) => {
|
|
165
|
+
const dir = module
|
|
166
|
+
? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
|
|
167
|
+
: runOptions_1.RunOptions.cwd;
|
|
168
|
+
return git_1.git.getRemote(dir);
|
|
169
|
+
};
|
|
170
|
+
this.isPublished = async (module) => {
|
|
171
|
+
const dir = module
|
|
172
|
+
? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
|
|
173
|
+
: runOptions_1.RunOptions.cwd;
|
|
174
|
+
if (!await git_1.git.isGitRepo(dir))
|
|
175
|
+
return false;
|
|
176
|
+
return !!(await this.getRemote(module));
|
|
177
|
+
};
|
|
178
|
+
this.publish = async (opts) => {
|
|
179
|
+
const { module, repoUrl, message, bump } = opts;
|
|
180
|
+
const dir = module
|
|
181
|
+
? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
|
|
182
|
+
: runOptions_1.RunOptions.cwd;
|
|
183
|
+
if (!await this.isPublished(module)) {
|
|
184
|
+
if (!repoUrl) {
|
|
185
|
+
throw new git_1.GitError('GIT_REPO_URL_REQUIRED');
|
|
186
|
+
}
|
|
187
|
+
if (!await git_1.git.isGitRepo(dir)) {
|
|
188
|
+
await git_1.git.init(dir);
|
|
189
|
+
}
|
|
190
|
+
await git_1.git.addRemote(dir, repoUrl);
|
|
191
|
+
}
|
|
192
|
+
/* Публикация не последней версии запрещена: HEAD на теге, отличном
|
|
193
|
+
* от последнего, — обновлять такую базу можно только вручную */
|
|
194
|
+
const currentTag = await this.currentVersion(module);
|
|
195
|
+
const latestKnown = await this.latestVersion(module);
|
|
196
|
+
if (currentTag && latestKnown && currentTag !== latestKnown) {
|
|
197
|
+
throw new git_1.GitError('GIT_NOT_LATEST_VERSION');
|
|
198
|
+
}
|
|
199
|
+
/* Аддоны checkout'нуты на тег: поднимаем ветку до sync/commit,
|
|
200
|
+
* иначе коммиты и push уйдут в detached HEAD */
|
|
201
|
+
await git_1.git.ensureBranch(dir);
|
|
202
|
+
if (await git_1.git.isRemoteAhead(dir)) {
|
|
203
|
+
await git_1.git.pullRebaseAutostash(dir);
|
|
204
|
+
}
|
|
205
|
+
const dirty = await git_1.git.hasChanges(dir);
|
|
206
|
+
const headTag = await this.currentVersion(module);
|
|
207
|
+
/* Дерево чистое и HEAD уже отмечен версионным тегом:
|
|
208
|
+
* коммитить и бампить нечего — просто доставляем ветку и тег на remote */
|
|
209
|
+
if (!dirty && headTag) {
|
|
210
|
+
await git_1.git.push(dir, headTag);
|
|
211
|
+
return headTag;
|
|
212
|
+
}
|
|
213
|
+
const next = versionUtil_1.versionUtil.bump(await this.latestVersion(module), bump);
|
|
214
|
+
/* Фиксируем версию и в package.json, чтобы она не расходилась с git-тегом */
|
|
215
|
+
const pkg = await pkgJSONManager_1.pkgJSONManager.read(module);
|
|
216
|
+
if (pkg) {
|
|
217
|
+
pkg.version = next;
|
|
218
|
+
await pkgJSONManager_1.pkgJSONManager.write(pkg, module);
|
|
219
|
+
}
|
|
220
|
+
/* Перечитываем: запись версии в package.json сама по себе даёт изменения */
|
|
221
|
+
if (await git_1.git.hasChanges(dir)) {
|
|
222
|
+
await git_1.git.commitAll(dir, message || 'Update');
|
|
223
|
+
}
|
|
224
|
+
await git_1.git.addTag(dir, next);
|
|
225
|
+
await git_1.git.push(dir, next);
|
|
226
|
+
return next;
|
|
227
|
+
};
|
|
65
228
|
runOptions_1.RunOptions.cwd = projectDir;
|
|
66
229
|
runOptions_1.RunOptions.modulesDir = modulesDir;
|
|
67
230
|
}
|