Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31d9bfe00a | ||
|
|
7bbaaf9a48 | ||
|
|
42b67ce994 | ||
|
|
f991a599f5 | ||
|
|
1775ed80b9 | ||
|
|
1beeb84c90 | ||
|
|
d170f73e0b | ||
|
|
5df624c6e5 |
@@ -24,6 +24,7 @@ jobs:
|
||||
- 19
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
@@ -25,7 +25,7 @@ See https://github.com/semantic-release/semantic-release/blob/master/docs/suppor
|
||||
|
||||
execa("git", ["--version"])
|
||||
.then(({ stdout }) => {
|
||||
const gitVersion = findVersions(stdout)[0];
|
||||
const gitVersion = findVersions(stdout, { loose: true })[0];
|
||||
if (lt(gitVersion, MIN_GIT_VERSION)) {
|
||||
console.error(`[semantic-release]: Git version ${MIN_GIT_VERSION} is required. Found ${gitVersion}.`);
|
||||
process.exit(1);
|
||||
|
||||
@@ -171,3 +171,6 @@
|
||||
- `verifyConditions` Validate configuration, `Cargo.toml`, and local cargo executable. Also, logs in into `crates.io`.
|
||||
- `prepare` Write the new version number into `Cargo.toml` file and perform `cargo check` if configured.
|
||||
- `publish` Publish the Rust crate to `crates.io`
|
||||
- [semantic-release-coralogix](https://github.com/adobe/semantic-release-coralogix)
|
||||
- `verifyConditions` Verified that required credentials are provided and API is accessible
|
||||
- `publish` add a release tag to Coralogix
|
||||
|
||||
+12
-3
@@ -52,9 +52,18 @@ export async function loadPlugin({cwd}, name, pluginsPath) {
|
||||
? dirname(resolveFrom.silent(__dirname, pluginsPath[name]) || resolveFrom(cwd, pluginsPath[name]))
|
||||
: __dirname;
|
||||
|
||||
// See https://github.com/mysticatea/eslint-plugin-node/issues/250
|
||||
// eslint-disable-next-line node/no-unsupported-features/es-syntax
|
||||
return isFunction(name) ? name : (await import(resolveFrom.silent(basePath, name) || resolveFrom(cwd, name))).default;
|
||||
if (isFunction(name)) {
|
||||
return name;
|
||||
}
|
||||
|
||||
const file = resolveFrom.silent(basePath, name) || resolveFrom(cwd, name);
|
||||
const { default: cjsExport, ...esmNamedExports } = await import(`file://${file}`);
|
||||
|
||||
if (cjsExport) {
|
||||
return cjsExport;
|
||||
}
|
||||
|
||||
return esmNamedExports;
|
||||
}
|
||||
|
||||
export function parseConfig(plugin) {
|
||||
|
||||
Generated
+126
-29
@@ -18,7 +18,7 @@
|
||||
"cosmiconfig": "^8.0.0",
|
||||
"debug": "^4.0.0",
|
||||
"env-ci": "^8.0.0",
|
||||
"execa": "^6.1.0",
|
||||
"execa": "^7.0.0",
|
||||
"figures": "^5.0.0",
|
||||
"find-versions": "^5.1.0",
|
||||
"get-stream": "^6.0.0",
|
||||
@@ -42,7 +42,7 @@
|
||||
"semantic-release": "bin/semantic-release.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ava": "5.1.0",
|
||||
"ava": "5.2.0",
|
||||
"c8": "7.12.0",
|
||||
"clear-module": "4.1.2",
|
||||
"codecov": "3.8.3",
|
||||
@@ -1121,9 +1121,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ava": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ava/-/ava-5.1.0.tgz",
|
||||
"integrity": "sha512-e5VFrSQ0WBPyZJWRXVrO7RFOizFeNM0t2PORwrPvWtApgkORI6cvGnY3GX1G+lzpd0HjqNx5Jus22AhxVnUMNA==",
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ava/-/ava-5.2.0.tgz",
|
||||
"integrity": "sha512-W8yxFXJr/P68JP55eMpQIa6AiXhCX3VeuajM8nolyWNExcMDD6rnIWKTjw0B/+GkFHBIaN6Jd0LtcMThcoqVfg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"acorn": "^8.8.1",
|
||||
@@ -1133,10 +1133,10 @@
|
||||
"arrify": "^3.0.0",
|
||||
"callsites": "^4.0.0",
|
||||
"cbor": "^8.1.0",
|
||||
"chalk": "^5.1.2",
|
||||
"chalk": "^5.2.0",
|
||||
"chokidar": "^3.5.3",
|
||||
"chunkd": "^2.0.1",
|
||||
"ci-info": "^3.6.1",
|
||||
"ci-info": "^3.7.1",
|
||||
"ci-parallel-vars": "^1.0.1",
|
||||
"clean-yaml-object": "^0.1.0",
|
||||
"cli-truncate": "^3.1.0",
|
||||
@@ -1148,7 +1148,7 @@
|
||||
"del": "^7.0.0",
|
||||
"emittery": "^1.0.1",
|
||||
"figures": "^5.0.0",
|
||||
"globby": "^13.1.2",
|
||||
"globby": "^13.1.3",
|
||||
"ignore-by-default": "^2.1.0",
|
||||
"indent-string": "^5.0.0",
|
||||
"is-error": "^2.2.2",
|
||||
@@ -2434,6 +2434,28 @@
|
||||
"node": "^16.10 || >=18"
|
||||
}
|
||||
},
|
||||
"node_modules/env-ci/node_modules/execa": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
||||
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.3",
|
||||
"get-stream": "^6.0.1",
|
||||
"human-signals": "^3.0.1",
|
||||
"is-stream": "^3.0.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
"npm-run-path": "^5.1.0",
|
||||
"onetime": "^6.0.0",
|
||||
"signal-exit": "^3.0.7",
|
||||
"strip-final-newline": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sindresorhus/execa?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/error-ex": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
|
||||
@@ -2519,13 +2541,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/execa": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
||||
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-7.0.0.tgz",
|
||||
"integrity": "sha512-tQbH0pH/8LHTnwTrsKWideqi6rFB/QNUawEwrn+WHyz7PX1Tuz2u7wfTvbaNBdP5JD5LVWxNo8/A8CHNZ3bV6g==",
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.3",
|
||||
"get-stream": "^6.0.1",
|
||||
"human-signals": "^3.0.1",
|
||||
"human-signals": "^4.3.0",
|
||||
"is-stream": "^3.0.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
"npm-run-path": "^5.1.0",
|
||||
@@ -2534,12 +2556,20 @@
|
||||
"strip-final-newline": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
"node": "^14.18.0 || ^16.14.0 || >=18.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sindresorhus/execa?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/execa/node_modules/human-signals": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.0.tgz",
|
||||
"integrity": "sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ==",
|
||||
"engines": {
|
||||
"node": ">=14.18.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ext": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
||||
@@ -3003,9 +3033,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/http-cache-semantics": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
|
||||
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
|
||||
"integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/http-proxy-agent": {
|
||||
@@ -7542,6 +7572,29 @@
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/semantic-release/node_modules/execa": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
||||
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.3",
|
||||
"get-stream": "^6.0.1",
|
||||
"human-signals": "^3.0.1",
|
||||
"is-stream": "^3.0.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
"npm-run-path": "^5.1.0",
|
||||
"onetime": "^6.0.0",
|
||||
"signal-exit": "^3.0.7",
|
||||
"strip-final-newline": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sindresorhus/execa?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.3.8",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||
@@ -9636,9 +9689,9 @@
|
||||
}
|
||||
},
|
||||
"ava": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ava/-/ava-5.1.0.tgz",
|
||||
"integrity": "sha512-e5VFrSQ0WBPyZJWRXVrO7RFOizFeNM0t2PORwrPvWtApgkORI6cvGnY3GX1G+lzpd0HjqNx5Jus22AhxVnUMNA==",
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ava/-/ava-5.2.0.tgz",
|
||||
"integrity": "sha512-W8yxFXJr/P68JP55eMpQIa6AiXhCX3VeuajM8nolyWNExcMDD6rnIWKTjw0B/+GkFHBIaN6Jd0LtcMThcoqVfg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn": "^8.8.1",
|
||||
@@ -9648,10 +9701,10 @@
|
||||
"arrify": "^3.0.0",
|
||||
"callsites": "^4.0.0",
|
||||
"cbor": "^8.1.0",
|
||||
"chalk": "^5.1.2",
|
||||
"chalk": "^5.2.0",
|
||||
"chokidar": "^3.5.3",
|
||||
"chunkd": "^2.0.1",
|
||||
"ci-info": "^3.6.1",
|
||||
"ci-info": "^3.7.1",
|
||||
"ci-parallel-vars": "^1.0.1",
|
||||
"clean-yaml-object": "^0.1.0",
|
||||
"cli-truncate": "^3.1.0",
|
||||
@@ -9663,7 +9716,7 @@
|
||||
"del": "^7.0.0",
|
||||
"emittery": "^1.0.1",
|
||||
"figures": "^5.0.0",
|
||||
"globby": "^13.1.2",
|
||||
"globby": "^13.1.3",
|
||||
"ignore-by-default": "^2.1.0",
|
||||
"indent-string": "^5.0.0",
|
||||
"is-error": "^2.2.2",
|
||||
@@ -10621,6 +10674,24 @@
|
||||
"requires": {
|
||||
"execa": "^6.1.0",
|
||||
"java-properties": "^1.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"execa": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
||||
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
||||
"requires": {
|
||||
"cross-spawn": "^7.0.3",
|
||||
"get-stream": "^6.0.1",
|
||||
"human-signals": "^3.0.1",
|
||||
"is-stream": "^3.0.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
"npm-run-path": "^5.1.0",
|
||||
"onetime": "^6.0.0",
|
||||
"signal-exit": "^3.0.7",
|
||||
"strip-final-newline": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"error-ex": {
|
||||
@@ -10685,19 +10756,26 @@
|
||||
"dev": true
|
||||
},
|
||||
"execa": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
||||
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-7.0.0.tgz",
|
||||
"integrity": "sha512-tQbH0pH/8LHTnwTrsKWideqi6rFB/QNUawEwrn+WHyz7PX1Tuz2u7wfTvbaNBdP5JD5LVWxNo8/A8CHNZ3bV6g==",
|
||||
"requires": {
|
||||
"cross-spawn": "^7.0.3",
|
||||
"get-stream": "^6.0.1",
|
||||
"human-signals": "^3.0.1",
|
||||
"human-signals": "^4.3.0",
|
||||
"is-stream": "^3.0.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
"npm-run-path": "^5.1.0",
|
||||
"onetime": "^6.0.0",
|
||||
"signal-exit": "^3.0.7",
|
||||
"strip-final-newline": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"human-signals": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.0.tgz",
|
||||
"integrity": "sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"ext": {
|
||||
@@ -11067,9 +11145,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"http-cache-semantics": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
|
||||
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
|
||||
"integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
|
||||
"dev": true
|
||||
},
|
||||
"http-proxy-agent": {
|
||||
@@ -14142,6 +14220,25 @@
|
||||
"semver-diff": "^4.0.0",
|
||||
"signale": "^1.2.1",
|
||||
"yargs": "^17.5.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"execa": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
||||
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"cross-spawn": "^7.0.3",
|
||||
"get-stream": "^6.0.1",
|
||||
"human-signals": "^3.0.1",
|
||||
"is-stream": "^3.0.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
"npm-run-path": "^5.1.0",
|
||||
"onetime": "^6.0.0",
|
||||
"signal-exit": "^3.0.7",
|
||||
"strip-final-newline": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
|
||||
+2
-2
@@ -35,7 +35,7 @@
|
||||
"cosmiconfig": "^8.0.0",
|
||||
"debug": "^4.0.0",
|
||||
"env-ci": "^8.0.0",
|
||||
"execa": "^6.1.0",
|
||||
"execa": "^7.0.0",
|
||||
"figures": "^5.0.0",
|
||||
"find-versions": "^5.1.0",
|
||||
"get-stream": "^6.0.0",
|
||||
@@ -56,7 +56,7 @@
|
||||
"yargs": "^17.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ava": "5.1.0",
|
||||
"ava": "5.2.0",
|
||||
"c8": "7.12.0",
|
||||
"clear-module": "4.1.2",
|
||||
"codecov": "3.8.3",
|
||||
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
export async function verifyConditions(pluginConfig, context) {
|
||||
context.logger.log("verifyConditions called");
|
||||
}
|
||||
@@ -44,6 +44,7 @@ const cli = path.resolve("./bin/semantic-release.js");
|
||||
const pluginError = path.resolve("./test/fixtures/plugin-error");
|
||||
const pluginInheritedError = path.resolve("./test/fixtures/plugin-error-inherited");
|
||||
const pluginLogEnv = path.resolve("./test/fixtures/plugin-log-env");
|
||||
const pluginEsmNamedExports = path.resolve("./test/fixtures/plugin-esm-named-exports");
|
||||
|
||||
test.before(async () => {
|
||||
await Promise.all([gitbox.start(), npmRegistry.start(), mockServer.start()]);
|
||||
@@ -713,3 +714,26 @@ test("Use the repository URL as is if none of the given git credentials are vali
|
||||
dummyUrl
|
||||
);
|
||||
});
|
||||
|
||||
test("ESM Plugin with named exports", async (t) => {
|
||||
const packageName = "plugin-exports";
|
||||
// Create a git repository, set the current working directory at the root of the repo
|
||||
t.log("Create git repository");
|
||||
const { cwd, repositoryUrl } = await gitbox.createRepo(packageName);
|
||||
await writeJson(path.resolve(cwd, "package.json"), {
|
||||
name: packageName,
|
||||
version: "0.0.0-dev",
|
||||
repository: { url: repositoryUrl },
|
||||
release: { plugins: [pluginEsmNamedExports] },
|
||||
});
|
||||
|
||||
t.log("$ semantic-release");
|
||||
const { stdout, stderr } = await execa(cli, [], {
|
||||
env: { ...env, MY_TOKEN: "secret token" },
|
||||
cwd,
|
||||
reject: false,
|
||||
extendEnv: false,
|
||||
});
|
||||
|
||||
t.regex(stdout, new RegExp(`verifyConditions called`));
|
||||
});
|
||||
|
||||
@@ -199,7 +199,18 @@ test('loadPlugin', async (t) => {
|
||||
await loadPlugin({cwd}, './plugin-noop.cjs', {'./plugin-noop.cjs': './test/fixtures'}),
|
||||
'From a shareable config context'
|
||||
);
|
||||
t.is(func, await loadPlugin({cwd}, func, {}), 'Defined as a function');
|
||||
t.is(
|
||||
(await import("../fixtures/plugin-noop.cjs")).default,
|
||||
await loadPlugin({ cwd }, "./plugin-noop.cjs", { "./plugin-noop.cjs": "./test/fixtures" }),
|
||||
"From a shareable config context"
|
||||
);
|
||||
const { ...namedExports } = await import("../fixtures/plugin-esm-named-exports.js");
|
||||
const plugin = await loadPlugin({ cwd }, "./plugin-esm-named-exports.js", {
|
||||
"./plugin-esm-named-exports.js": "./test/fixtures",
|
||||
});
|
||||
|
||||
t.deepEqual(namedExports, plugin, "ESM with named exports");
|
||||
t.is(func, await loadPlugin({ cwd }, func, {}), "Defined as a function");
|
||||
});
|
||||
|
||||
test('parseConfig', (t) => {
|
||||
|
||||
Reference in New Issue
Block a user