Skip to content

Commit

Permalink
🚀 Chore: optimize development process: automatically update FixIt ver…
Browse files Browse the repository at this point in the history
…sion
  • Loading branch information
Lruihao committed Aug 6, 2024
1 parent 9a1b457 commit 656f00b
Show file tree
Hide file tree
Showing 8 changed files with 80 additions and 8 deletions.
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node build/update-version.js --stage commit
6 changes: 3 additions & 3 deletions .auto-changelog/config.json → build/changelog/config.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"output": "CHANGELOG.md",
"template": ".auto-changelog/template.hbs",
"handlebarsSetup": ".auto-changelog/setup.js",
"template": "build/changelog/template.hbs",
"handlebarsSetup": "build/changelog/setup.cjs",
"sortCommits": "relevance",
"commitLimit": false,
"ignoreCommitPattern": "\\(ignore\\)",
"ignoreCommitPattern": "(Chore|chore):|\\(ignore\\)",
"replaceText": {
"^(Feat|feat):": ":sparkles: Feat:",
"^(Fix|fix):": ":bug: Fix:",
Expand Down
File renamed without changes.
File renamed without changes.
46 changes: 46 additions & 0 deletions build/update-version.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import fs from 'fs';
import { dirname, join } from 'path'
import { fileURLToPath } from 'url'
import { execSync } from 'child_process';

// node build/update-version.js --stage [stage]
const stage = process.argv[3] || 'commit';
const match = [
'archetypes/',
'assets/',
'i18n/',
'layouts/',
'static/',
'go.mod',
'hugo.toml',
'package.json',
'package-lock.json',
'theme.toml',
];
const gitDiff = execSync('git diff --cached --name-only').toString().trim();
if (stage !== 'version' && !match.some((item) => gitDiff.includes(item))) {
// console.log('No need to update the FixIt version.');
process.exit(0);
}

const __root = join(dirname(fileURLToPath(import.meta.url)), '../');
const initHtmlPath = join(__root, 'layouts/partials/init/index.html');
const packageJsonPath = join(__root, 'package.json');
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
const version = packageJson.version;
// Get the short hash of the last commit (can not get this commit hash at pre-commit hook)
const shortHash = execSync('git rev-parse --short HEAD').toString().trim();
// Build the development version v{major}.{minor}.{patch+1}-{shortHash}
const devVersion = `${version.replace(/(\d+)$/, (match, part) => parseInt(part) + 1)}-${shortHash}`;

// Update the version number in layouts/partials/init/index.html
const initHtml = fs.readFileSync(initHtmlPath, 'utf8');
const latestVersion = stage === 'version' ? version : devVersion;
const lastVersion = initHtml.match(/v\d+\.\d+\.\d+(-\w+)?/)[0];
const newInitHtml = initHtml.replace(/v\d+\.\d+\.\d+(-\w+)?/, `v${latestVersion}`);
fs.writeFileSync(initHtmlPath, newInitHtml);
// Add the updated file to the git stage
execSync('git add .');
console.log(`Update the FixIt version from ${lastVersion} to v${latestVersion}.`);

export default latestVersion;
2 changes: 1 addition & 1 deletion layouts/partials/init/index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- .Scratch.Set "version" "v0.3.9" -}}
{{- .Scratch.Set "version" "v0.3.10-108512c2" -}}
{{- .Scratch.Set "this" dict -}}

{{- partial "init/detection-env.html" . -}}
Expand Down
24 changes: 23 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 6 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,19 @@
},
"license": "MIT",
"author": "Lruihao (https://lruihao.cn)",
"type": "module",
"scripts": {
"build": "hugo --source=demo --themesDir ../.. --theme $PWD --gc --minify --logLevel info",
"server": "hugo server --source=demo --themesDir ../.. --theme $PWD -D --disableFastRender --navigateToChanged --ignoreCache",
"server:production": "npm run server -- -e production",
"server:docs": "hugo server --source=../fixit-docs -D --disableFastRender --navigateToChanged --ignoreCache",
"version": "sed -i '' \"s/v$npm_package_version-RC/v$npm_package_version/g\" layouts/partials/init/index.html && git add .",
"version": "node build/update-version.js --stage version",
"postversion": "git push && git push --tags && npm run release",
"release": "auto-changelog --config .auto-changelog/config.json"
"release": "auto-changelog --config build/changelog/config.json",
"prepare": "husky"
},
"devDependencies": {
"auto-changelog": "^2.4.0"
"auto-changelog": "^2.4.0",
"husky": "^9.1.4"
}
}

0 comments on commit 656f00b

Please sign in to comment.