/
index.js
80 lines (69 loc) · 1.73 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// @ts-check
const path = require('path');
const verifyVsce = require('./lib/verify');
const vscePublish = require('./lib/publish');
const vscePrepare = require('./lib/prepare');
let verified = false;
let prepared = false;
let packagePath;
async function verifyConditions(pluginConfig, { logger, cwd }) {
cwd = getPackageRoot(pluginConfig, cwd);
await verifyVsce(pluginConfig, { logger, cwd });
verified = true;
}
async function prepare(
pluginConfig,
{ nextRelease: { version }, logger, cwd },
) {
cwd = getPackageRoot(pluginConfig, cwd);
if (!verified) {
await verifyVsce(pluginConfig, { logger, cwd });
verified = true;
}
packagePath = await vscePrepare(
version,
pluginConfig.packageVsix,
logger,
cwd,
);
prepared = true;
}
async function publish(
pluginConfig,
{ nextRelease: { version }, logger, cwd },
) {
cwd = getPackageRoot(pluginConfig, cwd);
if (!verified) {
await verifyVsce(pluginConfig, { logger, cwd });
verified = true;
}
if (!prepared) {
// BC: prior to semantic-release v15 prepare was part of publish
packagePath = await vscePrepare(
version,
pluginConfig.packageVsix,
logger,
cwd,
);
}
// If publishing is disabled, return early.
if (pluginConfig?.publish === false) {
return;
}
if (pluginConfig?.publishPackagePath) {
// Expand glob
const globSync = require('glob').glob.sync;
packagePath = globSync(pluginConfig.publishPackagePath, { cwd });
}
return vscePublish(version, packagePath, logger, cwd);
}
function getPackageRoot(pluginConfig, cwd) {
return pluginConfig.packageRoot
? path.join(cwd, pluginConfig.packageRoot)
: cwd;
}
module.exports = {
verifyConditions,
prepare,
publish,
};