| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import { createRequire } from 'node:module'
- const require = createRequire(import.meta.url)
- const version = require('../src/version.json')
- export const DEFAULT_GITHUB_REPOSITORY = 'oldj/SwitchHosts'
- export function getReleaseVersion() {
- return version.slice(0, 3).join('.')
- }
- export function getFullVersion() {
- return `${version[0]}.${version[1]}.${version[2]}.${version[3]}`
- }
- export function getReleaseTag(env = process.env) {
- const expectedTag = `v${getReleaseVersion()}`
- const tag = env.RELEASE_TAG || expectedTag
- // Keep GitHub Release tags aligned with the app's public semver so
- // the uploader cannot silently publish assets under a mismatched tag.
- if (tag !== expectedTag) {
- throw new Error(`RELEASE_TAG must be "${expectedTag}", got "${tag}".`)
- }
- return tag
- }
- export function resolveGithubRepository(env = process.env) {
- const rawRepository =
- env.GH_RELEASE_REPOSITORY || env.GITHUB_REPOSITORY || DEFAULT_GITHUB_REPOSITORY
- const match = /^([^/\s]+)\/([^/\s]+)$/.exec(rawRepository || '')
- if (!match) {
- throw new Error(
- `Invalid GitHub repository "${rawRepository}". Expected the format "owner/repo".`,
- )
- }
- const [, owner, repo] = match
- return {
- owner,
- repo,
- fullName: `${owner}/${repo}`,
- }
- }
- export function isReleaseArtifactFile(fileName, fullVersion = getFullVersion()) {
- if (!fileName || fileName.startsWith('.')) {
- return false
- }
- // builder-debug.yml is useful locally, but publishing it would only clutter the release page.
- if (fileName === 'builder-debug.yml') {
- return false
- }
- // latest*.yml files are required by electron-updater to discover GitHub-hosted updates.
- if (/^latest.*\.ya?ml$/i.test(fileName)) {
- return true
- }
- return fileName.includes(`v${fullVersion}`)
- }
|