From b6543bd87f6f31eb6b4d648cbab46c5db64ca574 Mon Sep 17 00:00:00 2001
From: GyDi <segydi@foxmail.com>
Date: Sat, 8 Jan 2022 01:51:24 +0800
Subject: [PATCH] chore: update publish script

---
 package.json             |  4 ++--
 scripts/post-version.mjs | 24 -----------------------
 scripts/publish.mjs      | 41 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 43 insertions(+), 26 deletions(-)
 delete mode 100644 scripts/post-version.mjs
 create mode 100644 scripts/publish.mjs

diff --git a/package.json b/package.json
index 799d697..c9d861a 100644
--- a/package.json
+++ b/package.json
@@ -8,9 +8,9 @@
     "web:dev": "vite",
     "web:build": "tsc && vite build",
     "web:serve": "vite preview",
-    "prepare": "husky install",
     "predev": "node scripts/pre-dev.mjs",
-    "postversion": "node scripts/post-version.mjs"
+    "publish": "node scripts/publish.mjs",
+    "prepare": "husky install"
   },
   "dependencies": {
     "@emotion/react": "^11.7.0",
diff --git a/scripts/post-version.mjs b/scripts/post-version.mjs
deleted file mode 100644
index d6750a7..0000000
--- a/scripts/post-version.mjs
+++ /dev/null
@@ -1,24 +0,0 @@
-import fs from "fs-extra";
-import { createRequire } from "module";
-import { execSync } from "child_process";
-
-const require = createRequire(import.meta.url);
-
-// update the tauri conf version
-async function resolveVersion() {
-  const { version } = require("../package.json");
-  const tauri = require("../src-tauri/tauri.conf.json");
-
-  tauri.package.version = version;
-
-  await fs.writeFile(
-    "./src-tauri/tauri.conf.json",
-    JSON.stringify(tauri, undefined, 2)
-  );
-  execSync("git add ./src-tauri/tauri.conf.json");
-  execSync(`git commit -m v${version} --no-verify`);
-  execSync(`git push`);
-  execSync(`git push origin v${version}`);
-}
-
-resolveVersion();
diff --git a/scripts/publish.mjs b/scripts/publish.mjs
new file mode 100644
index 0000000..f22119d
--- /dev/null
+++ b/scripts/publish.mjs
@@ -0,0 +1,41 @@
+import fs from "fs-extra";
+import { createRequire } from "module";
+import { execSync } from "child_process";
+
+const require = createRequire(import.meta.url);
+
+async function resolvePublish() {
+  const flag = process.argv[2] ?? "patch";
+  const packageJson = require("../package.json");
+  const tauriJson = require("../src-tauri/tauri.conf.json");
+
+  let [a, b, c] = packageJson.version.split(".").map(Number);
+
+  if (flag === "major") a += 1;
+  else if (flag === "minor") b += 1;
+  else if (flag === "patch") c += 1;
+  else throw new Error(`invalid flag "${flag}"`);
+
+  const nextVersion = `${a}.${b}.${c}`;
+  packageJson.version = nextVersion;
+  tauriJson.package.version = nextVersion;
+
+  await fs.writeFile(
+    "./package.json",
+    JSON.stringify(packageJson, undefined, 2)
+  );
+  await fs.writeFile(
+    "./src-tauri/tauri.conf.json",
+    JSON.stringify(tauriJson, undefined, 2)
+  );
+
+  execSync("git add ./package.json");
+  execSync("git add ./src-tauri/tauri.conf.json");
+  execSync(`git commit -m "v${nextVersion}"`);
+  execSync(`git tag -a v${nextVersion} -m "v${nextVersion}"`);
+  execSync(`git push`);
+  execSync(`git push origin v${nextVersion}`);
+  console.log(`Publish Successfully...`);
+}
+
+resolvePublish();
-- 
GitLab