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, };