chore: replace gulp by a pure rollup based build
This commit is contained in:
parent
294fbefd0a
commit
0d6b89a3ed
16 changed files with 1772 additions and 2573 deletions
84
tools/bump-version.js
Normal file
84
tools/bump-version.js
Normal file
|
@ -0,0 +1,84 @@
|
|||
// SPDX-FileCopyrightText: 2021 Johannes Loher
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import fs from "fs-extra";
|
||||
import path from "node:path";
|
||||
import semver from "semver";
|
||||
import yargs from "yargs";
|
||||
import { hideBin } from "yargs/helpers";
|
||||
|
||||
import { sourceDirectory } from "./const.js";
|
||||
|
||||
const getDownloadURL = (version) => `https://git.f3l.de/dungeonslayers/ds4/-/releases/${version}/downloads/ds4.zip`;
|
||||
const getChangelogURL = (version) => `https://git.f3l.de/dungeonslayers/ds4/-/releases/${version}`;
|
||||
|
||||
/**
|
||||
* Get the contents of the manifest file as object.
|
||||
* @returns {{file: unknown, name: string}} An object describing the manifest
|
||||
*/
|
||||
function getManifest() {
|
||||
const manifestPath = path.join(sourceDirectory, "system.json");
|
||||
|
||||
if (fs.existsSync(manifestPath)) {
|
||||
return {
|
||||
file: fs.readJSONSync(manifestPath),
|
||||
name: "system.json",
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the target version based on on the current version and the argument passed as release.
|
||||
* @param {string} currentVersion The current version
|
||||
* @param {semver.ReleaseType | string} release Either a semver release type or a valid semver version
|
||||
* @returns {string | null} The target version
|
||||
*/
|
||||
function getTargetVersion(currentVersion, release) {
|
||||
if (["major", "premajor", "minor", "preminor", "patch", "prepatch", "prerelease"].includes(release)) {
|
||||
return semver.inc(currentVersion, release);
|
||||
} else {
|
||||
return semver.valid(release);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update version and download URL.
|
||||
* @param {semver.ReleaseType | string} release Either a semver release type or a valid semver version
|
||||
*/
|
||||
function bumpVersion(release) {
|
||||
if (!release) {
|
||||
throw new Error("Missing release type");
|
||||
}
|
||||
|
||||
const packageJson = fs.readJSONSync("package.json");
|
||||
const manifest = getManifest();
|
||||
if (!manifest) throw new Error("Manifest JSON not found");
|
||||
|
||||
const currentVersion = packageJson.version;
|
||||
const targetVersion = getTargetVersion(currentVersion, release);
|
||||
|
||||
if (!targetVersion) {
|
||||
throw new Error("Incorrect version arguments");
|
||||
}
|
||||
if (targetVersion === currentVersion) {
|
||||
throw new Error("Target version is identical to current version");
|
||||
}
|
||||
|
||||
console.log(`Bumping version number to '${targetVersion}'`);
|
||||
packageJson.version = targetVersion;
|
||||
fs.writeJSONSync("package.json", packageJson, { spaces: 4 });
|
||||
manifest.file.version = targetVersion;
|
||||
manifest.file.download = getDownloadURL(targetVersion);
|
||||
manifest.file.changelog = getChangelogURL(targetVersion);
|
||||
fs.writeJSONSync(path.join(sourceDirectory, manifest.name), manifest.file, { spaces: 4 });
|
||||
}
|
||||
|
||||
const argv = yargs(hideBin(process.argv)).usage("Usage: $0").option("release", {
|
||||
alias: "r",
|
||||
type: "string",
|
||||
demandOption: true,
|
||||
description: "Either a semver release type or a valid semver version",
|
||||
}).argv;
|
||||
const release = argv.r;
|
||||
bumpVersion(release);
|
Loading…
Add table
Add a link
Reference in a new issue