87 lines
2.0 KiB
JavaScript
87 lines
2.0 KiB
JavaScript
const { execSync } = require("child_process");
|
|
const fs = require("fs");
|
|
|
|
function getCurrentOrigin() {
|
|
try {
|
|
const origin = execSync('git remote get-url origin', { encoding: 'utf8' }).trim();
|
|
if (origin) {
|
|
return origin;
|
|
}
|
|
return null;
|
|
} catch (error) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function isJsProject() {
|
|
return fs.existsSync("package.json");
|
|
}
|
|
|
|
function getGitAssets() {
|
|
if (isJsProject()) {
|
|
return [
|
|
'CHANGELOG.md',
|
|
'package.json',
|
|
];
|
|
}
|
|
return [
|
|
'CHANGELOG.md',
|
|
]
|
|
}
|
|
|
|
function getGitCurrentBranch() {
|
|
try {
|
|
const branch = execSync("git branch --show-current", { encoding: "utf-8" }).trim();
|
|
if (branch) {
|
|
return branch;
|
|
}
|
|
return null;
|
|
} catch (error) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
const defaultPlugins = [
|
|
['@semantic-release/commit-analyzer', { preset: 'conventionalcommits' }],
|
|
['@semantic-release/release-notes-generator', { preset: 'conventionalcommits' }],
|
|
'@saithodev/semantic-release-gitea'
|
|
];
|
|
|
|
const releasePlugins = [
|
|
['@semantic-release/commit-analyzer', { preset: 'conventionalcommits' }],
|
|
['@semantic-release/release-notes-generator', { preset: 'conventionalcommits' }],
|
|
['@semantic-release/changelog', { changelogFile: 'CHANGELOG.md', changelogTitle: '# Changelog' }],
|
|
["@semantic-release/npm", { "npmPublish": false }],
|
|
'@saithodev/semantic-release-gitea',
|
|
['@semantic-release/git', {
|
|
assets: getGitAssets(),
|
|
message: 'chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}'
|
|
}],
|
|
];
|
|
|
|
let plugins;
|
|
const branch = getGitCurrentBranch();
|
|
|
|
const repositoryUrl = getCurrentOrigin();
|
|
if (repositoryUrl == null) {
|
|
throw new Error("Failed to retreive origin url from system");
|
|
}
|
|
|
|
if (branch == "main" || branch == "master") {
|
|
plugins = releasePlugins;
|
|
} else {
|
|
plugins = defaultPlugins;
|
|
}
|
|
|
|
module.exports = {
|
|
repositoryUrl,
|
|
branches: [
|
|
'main',
|
|
'master',
|
|
{ name: 'develop', prerelease: 'beta' },
|
|
{ name: 'release/*', prerelease: 'rc' },
|
|
],
|
|
tagFormat: 'v${version}',
|
|
plugins,
|
|
};
|