mirror of
https://github.com/taskgenius/taskgenius-plugin.git
synced 2026-07-22 06:40:25 +00:00
chore: update workflow scripts
This commit is contained in:
parent
f6a82d341a
commit
795340e621
3 changed files with 88 additions and 12 deletions
15
package.json
15
package.json
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "task-genius",
|
||||
"version": "9.8.0-beta.0",
|
||||
"version": "9.7.6",
|
||||
"description": "Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"dev": "node esbuild.config.mjs",
|
||||
"build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production",
|
||||
"version": "node version-bump.mjs && git add manifest.json versions.json",
|
||||
"version": "node version-bump.mjs && git add manifest.json manifest-beta.json versions.json",
|
||||
"e-t": "cross-env node scripts/extract-translations.cjs",
|
||||
"g-l": "cross-env node scripts/generate-locale-files.cjs",
|
||||
"test": "jest",
|
||||
|
|
@ -17,11 +17,12 @@
|
|||
"release:minor": "release-it minor",
|
||||
"release:major": "release-it major",
|
||||
"release:dry": "release-it --dry-run",
|
||||
"release:beta": "release-it --config .release-it.beta.cjs --preRelease=beta",
|
||||
"release:beta:patch": "release-it patch --config .release-it.beta.cjs --preRelease=beta",
|
||||
"release:beta:minor": "release-it minor --config .release-it.beta.cjs --preRelease=beta",
|
||||
"release:beta:major": "release-it major --config .release-it.beta.cjs --preRelease=beta",
|
||||
"release:beta:dry": "release-it --config .release-it.beta.cjs --preRelease=beta --dry-run"
|
||||
"release:beta": "node scripts/smart-beta-release.mjs",
|
||||
"release:beta:continue": "node scripts/smart-beta-release.mjs continue",
|
||||
"release:beta:patch": "node scripts/smart-beta-release.mjs patch",
|
||||
"release:beta:minor": "node scripts/smart-beta-release.mjs minor",
|
||||
"release:beta:major": "node scripts/smart-beta-release.mjs major",
|
||||
"release:beta:dry": "node scripts/smart-beta-release.mjs --dry-run"
|
||||
},
|
||||
"keywords": [
|
||||
"obsidian",
|
||||
|
|
|
|||
55
scripts/smart-beta-release.mjs
Normal file
55
scripts/smart-beta-release.mjs
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
import { execSync } from 'child_process';
|
||||
import { readFileSync } from 'fs';
|
||||
import semver from 'semver';
|
||||
|
||||
// Get the current version from package.json
|
||||
const packageJson = JSON.parse(readFileSync('package.json', 'utf8'));
|
||||
const currentVersion = packageJson.version;
|
||||
|
||||
// Parse command line arguments
|
||||
const args = process.argv.slice(2);
|
||||
const increment = args[0]; // 'patch', 'minor', 'major', or undefined
|
||||
|
||||
// Check if we're already on a beta version
|
||||
const isCurrentlyBeta = semver.prerelease(currentVersion) !== null;
|
||||
|
||||
let releaseCommand = 'npx release-it --config .release-it.beta.cjs';
|
||||
|
||||
if (isCurrentlyBeta && (!increment || increment === 'continue')) {
|
||||
// If already on beta and no increment specified, just bump the prerelease
|
||||
console.log(`📦 Current version: ${currentVersion} (beta)`);
|
||||
console.log('🔄 Continuing beta sequence...');
|
||||
releaseCommand += ' --preRelease';
|
||||
} else if (increment === 'patch' || increment === 'minor' || increment === 'major') {
|
||||
// If increment is specified, create new beta.0 for that version
|
||||
console.log(`📦 Current version: ${currentVersion}`);
|
||||
console.log(`🚀 Creating new ${increment} beta version...`);
|
||||
releaseCommand += ` ${increment} --preRelease=beta`;
|
||||
} else if (!isCurrentlyBeta) {
|
||||
// If not on beta and no increment, default to patch
|
||||
console.log(`📦 Current version: ${currentVersion} (stable)`);
|
||||
console.log('🚀 Creating new patch beta version...');
|
||||
releaseCommand += ' patch --preRelease=beta';
|
||||
} else {
|
||||
// Default to continuing prerelease
|
||||
console.log(`📦 Current version: ${currentVersion} (beta)`);
|
||||
console.log('🔄 Continuing beta sequence...');
|
||||
releaseCommand += ' --preRelease';
|
||||
}
|
||||
|
||||
// Add any additional arguments
|
||||
const additionalArgs = args.slice(1).join(' ');
|
||||
if (additionalArgs) {
|
||||
releaseCommand += ' ' + additionalArgs;
|
||||
}
|
||||
|
||||
console.log(`\n📝 Executing: ${releaseCommand}\n`);
|
||||
|
||||
try {
|
||||
execSync(releaseCommand, { stdio: 'inherit' });
|
||||
} catch (error) {
|
||||
console.error('❌ Release failed:', error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
|
|
@ -1,14 +1,34 @@
|
|||
import { readFileSync, writeFileSync } from "fs";
|
||||
import { readFileSync, writeFileSync, existsSync } from "fs";
|
||||
import semverPrerelease from "semver/functions/prerelease.js";
|
||||
|
||||
const targetVersion = process.env.npm_package_version;
|
||||
|
||||
// read minAppVersion from manifest.json and bump version to target version
|
||||
let manifest = JSON.parse(readFileSync("manifest.json", "utf8"));
|
||||
// Check if this is a prerelease (beta) version
|
||||
const isPreRelease = semverPrerelease(targetVersion) !== null;
|
||||
|
||||
// Determine which manifest file to read and update
|
||||
const manifestFile = isPreRelease ? "manifest-beta.json" : "manifest.json";
|
||||
|
||||
// For beta releases, read from manifest-beta.json if it exists, otherwise from manifest.json
|
||||
let sourceManifestFile = manifestFile;
|
||||
if (isPreRelease && !existsSync("manifest-beta.json")) {
|
||||
sourceManifestFile = "manifest.json";
|
||||
}
|
||||
|
||||
// read minAppVersion from the appropriate manifest and bump version
|
||||
let manifest = JSON.parse(readFileSync(sourceManifestFile, "utf8"));
|
||||
const { minAppVersion } = manifest;
|
||||
manifest.version = targetVersion;
|
||||
writeFileSync("manifest.json", JSON.stringify(manifest, null, "\t"));
|
||||
|
||||
// update versions.json with target version and minAppVersion from manifest.json
|
||||
// Only update the appropriate manifest file
|
||||
// For beta releases: only update manifest-beta.json
|
||||
// For stable releases: update manifest.json (and sync to manifest-beta.json is handled by ob-bumper)
|
||||
writeFileSync(manifestFile, JSON.stringify(manifest, null, "\t"));
|
||||
|
||||
// Always update versions.json with target version and minAppVersion
|
||||
let versions = JSON.parse(readFileSync("versions.json", "utf8"));
|
||||
versions[targetVersion] = minAppVersion;
|
||||
writeFileSync("versions.json", JSON.stringify(versions, null, "\t"));
|
||||
|
||||
console.log(`Version bumped to ${targetVersion} (${isPreRelease ? 'beta' : 'stable'} release)`);
|
||||
console.log(`Updated: ${manifestFile}, versions.json`);
|
||||
|
|
|
|||
Loading…
Reference in a new issue