mirror of
https://github.com/friebetill/obsidian-file-diff.git
synced 2026-07-22 07:40:25 +00:00
Add release script
This commit is contained in:
parent
81d47fe2ac
commit
d85d65f193
2 changed files with 174 additions and 1 deletions
|
|
@ -6,7 +6,9 @@
|
|||
"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"
|
||||
"test": "vitest",
|
||||
"coverage": "vitest run --coverage",
|
||||
"release": "./scripts/release.sh"
|
||||
},
|
||||
"keywords": ["obsidian"],
|
||||
"author": "Till Friebe",
|
||||
|
|
|
|||
171
scripts/release.sh
Executable file
171
scripts/release.sh
Executable file
|
|
@ -0,0 +1,171 @@
|
|||
#!/bin/bash
|
||||
|
||||
CURRENT_VERSION=""
|
||||
NEW_VERSION=""
|
||||
OBSIDIAN_MINIMUM_VERSION="0.15.0"
|
||||
|
||||
# This script is used to release a new version of the project.
|
||||
main() {
|
||||
verifyDependencies
|
||||
|
||||
# Version
|
||||
readCurrentVersion
|
||||
askForNewVersion
|
||||
|
||||
# Update files
|
||||
updatePackageJson
|
||||
updateManifestJson
|
||||
updateVersionsJson
|
||||
|
||||
# Git
|
||||
addUpdatedFiles
|
||||
commitChanges
|
||||
pushChanges
|
||||
|
||||
buildRelease
|
||||
|
||||
createGitHubRelease
|
||||
}
|
||||
|
||||
verifyDependencies() {
|
||||
# Verify that GitHub CLI is installed
|
||||
if ! command -v gh &>/dev/null; then
|
||||
echo "GitHub CLI could not be found. Please install it from https://cli.github.com/."
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
readCurrentVersion() {
|
||||
CURRENT_VERSION=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]')
|
||||
}
|
||||
|
||||
askForNewVersion() {
|
||||
# Ask for new version number
|
||||
echo "What is the new version number? The current version is $CURRENT_VERSION."
|
||||
read -r NEW_VERSION
|
||||
|
||||
# Check if version number is valid
|
||||
if [[ ! $NEW_VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
echo "Version number is not valid. Please use the format x.x.x."
|
||||
exit 1
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
updatePackageJson() {
|
||||
echo "Update version in package.json. Press ENTER to update or ESC to skip."
|
||||
if askForEnter; then
|
||||
sed -i '' "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$NEW_VERSION\"/g" package.json
|
||||
|
||||
echo "Verify version in package.json is correct"
|
||||
echo ""
|
||||
git --no-pager diff package.json
|
||||
echo ""
|
||||
echo "Press ENTER if the version is correct or ESC to abort."
|
||||
if ! askForEnter; then
|
||||
echo "Aborting release"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
updateManifestJson() {
|
||||
echo "Update version in manifest.json. Press ENTER to update or ESC to skip."
|
||||
if askForEnter; then
|
||||
sed -i '' "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$NEW_VERSION\"/g" manifest.json
|
||||
|
||||
echo "Verify version in manifest.json is correct."
|
||||
echo ""
|
||||
git --no-pager diff manifest.json
|
||||
echo ""
|
||||
echo "Press ENTER if the version is correct or ESC to abort."
|
||||
if ! askForEnter; then
|
||||
echo "Aborting release"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
updateVersionsJson() {
|
||||
echo "Add version to versions.json. Press ENTER to update or ESC to skip."
|
||||
if askForEnter; then
|
||||
# Add new version after line with current version in versions.json on macOS
|
||||
sed -i "" -E "s/(\"$CURRENT_VERSION\":.*)/\1,\n\t\"$NEW_VERSION\": \"$OBSIDIAN_MINIMUM_VERSION\"/g" versions.json
|
||||
|
||||
echo "Verify version in versions.json is correct."
|
||||
echo ""
|
||||
git --no-pager diff versions.json
|
||||
echo ""
|
||||
echo "Press ENTER if the version is correct or ESC to abort."
|
||||
if ! askForEnter; then
|
||||
echo "Aborting release"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
addUpdatedFiles() {
|
||||
echo "Add package.json, manifest.json and versions.json to Git. Press ENTER to add or ESC to skip."
|
||||
if askForEnter; then
|
||||
git add package.json
|
||||
git add manifest.json
|
||||
git add versions.json
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
commitChanges() {
|
||||
echo "Commit changes. Press ENTER to commit or ESC to skip."
|
||||
if askForEnter; then
|
||||
git commit -m "Release version $NEW_VERSION"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
pushChanges() {
|
||||
echo "Push changes. Press ENTER to push or ESC to skip."
|
||||
if askForEnter; then
|
||||
git push
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
buildRelease() {
|
||||
echo "Build release. Press ENTER to build or ESC to skip."
|
||||
if askForEnter; then
|
||||
npm run build
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
createGitHubRelease() {
|
||||
echo "Create GitHub release. Press ENTER to create or ESC to skip."
|
||||
if askForEnter; then
|
||||
gh release create "$NEW_VERSION" manifest.json main.js styles.css --generate-notes
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
askForEnter() {
|
||||
read -r -s -n 1 key
|
||||
# -s: do not echo input character.
|
||||
# -n 1: read only 1 character (separate with space)
|
||||
|
||||
# double brackets to test, single equals sign, empty string for just 'enter' in this case...
|
||||
# if [[ ... ]] is followed by semicolon and 'then' keyword
|
||||
if [[ $key = "" ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
main
|
||||
Loading…
Reference in a new issue