feat: auto-init VERSION file
This commit is contained in:
30
flake.nix
30
flake.nix
@@ -209,41 +209,11 @@
|
|||||||
[
|
[
|
||||||
"__CHANNEL_LIST__"
|
"__CHANNEL_LIST__"
|
||||||
"__VERSION_FILES__"
|
"__VERSION_FILES__"
|
||||||
"__READ_VERSION__"
|
|
||||||
"__WRITE_VERSION__"
|
|
||||||
"__POST_VERSION__"
|
"__POST_VERSION__"
|
||||||
]
|
]
|
||||||
[
|
[
|
||||||
channelList
|
channelList
|
||||||
versionFilesScript
|
versionFilesScript
|
||||||
''
|
|
||||||
if [[ ! -f "$ROOT_DIR/VERSION" ]]; then
|
|
||||||
echo "Error: missing $ROOT_DIR/VERSION" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
base_line="$(sed -n '1p' "$ROOT_DIR/VERSION" | tr -d '\r')"
|
|
||||||
channel_line="$(sed -n '2p' "$ROOT_DIR/VERSION" | tr -d '\r')"
|
|
||||||
n_line="$(sed -n '3p' "$ROOT_DIR/VERSION" | tr -d '\r')"
|
|
||||||
|
|
||||||
# Backward compatibility: old single-line format.
|
|
||||||
if [[ -z "$channel_line" ]]; then
|
|
||||||
printf '%s\n' "$base_line"
|
|
||||||
elif [[ "$channel_line" == "stable" ]]; then
|
|
||||||
printf '%s\n' "$base_line"
|
|
||||||
else
|
|
||||||
printf '%s-%s.%s\n' "$base_line" "$channel_line" "$n_line"
|
|
||||||
fi
|
|
||||||
''
|
|
||||||
''
|
|
||||||
channel_to_write="$CHANNEL"
|
|
||||||
n_to_write="''${PRERELEASE_NUM:-1}"
|
|
||||||
if [[ "$channel_to_write" == "stable" || -z "$channel_to_write" ]]; then
|
|
||||||
channel_to_write="stable"
|
|
||||||
n_to_write="0"
|
|
||||||
fi
|
|
||||||
printf '%s\n%s\n%s\n' "$BASE_VERSION" "$channel_to_write" "$n_to_write" > "$ROOT_DIR/VERSION"
|
|
||||||
''
|
|
||||||
postVersion
|
postVersion
|
||||||
]
|
]
|
||||||
(builtins.readFile ./packages/release/release.sh);
|
(builtins.readFile ./packages/release/release.sh);
|
||||||
|
|||||||
@@ -30,41 +30,11 @@ let
|
|||||||
[
|
[
|
||||||
"__CHANNEL_LIST__"
|
"__CHANNEL_LIST__"
|
||||||
"__VERSION_FILES__"
|
"__VERSION_FILES__"
|
||||||
"__READ_VERSION__"
|
|
||||||
"__WRITE_VERSION__"
|
|
||||||
"__POST_VERSION__"
|
"__POST_VERSION__"
|
||||||
]
|
]
|
||||||
[
|
[
|
||||||
channelList
|
channelList
|
||||||
versionFilesScript
|
versionFilesScript
|
||||||
''
|
|
||||||
if [[ ! -f "$ROOT_DIR/VERSION" ]]; then
|
|
||||||
echo "Error: missing $ROOT_DIR/VERSION" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
base_line="$(sed -n '1p' "$ROOT_DIR/VERSION" | tr -d '\r')"
|
|
||||||
channel_line="$(sed -n '2p' "$ROOT_DIR/VERSION" | tr -d '\r')"
|
|
||||||
n_line="$(sed -n '3p' "$ROOT_DIR/VERSION" | tr -d '\r')"
|
|
||||||
|
|
||||||
# Backward compatibility: old single-line format.
|
|
||||||
if [[ -z "$channel_line" ]]; then
|
|
||||||
printf '%s\n' "$base_line"
|
|
||||||
elif [[ "$channel_line" == "stable" ]]; then
|
|
||||||
printf '%s\n' "$base_line"
|
|
||||||
else
|
|
||||||
printf '%s-%s.%s\n' "$base_line" "$channel_line" "$n_line"
|
|
||||||
fi
|
|
||||||
''
|
|
||||||
''
|
|
||||||
channel_to_write="$CHANNEL"
|
|
||||||
n_to_write="''${PRERELEASE_NUM:-1}"
|
|
||||||
if [[ "$channel_to_write" == "stable" || -z "$channel_to_write" ]]; then
|
|
||||||
channel_to_write="stable"
|
|
||||||
n_to_write="0"
|
|
||||||
fi
|
|
||||||
printf '%s\n%s\n%s\n' "$BASE_VERSION" "$channel_to_write" "$n_to_write" > "$ROOT_DIR/VERSION"
|
|
||||||
''
|
|
||||||
postVersion
|
postVersion
|
||||||
]
|
]
|
||||||
(builtins.readFile ./release.sh);
|
(builtins.readFile ./release.sh);
|
||||||
|
|||||||
@@ -192,18 +192,65 @@ generate_version_files() {
|
|||||||
__VERSION_FILES__
|
__VERSION_FILES__
|
||||||
}
|
}
|
||||||
|
|
||||||
# ── user-provided hooks ────────────────────────────────────────────────────
|
# ── version source (built-in) ──────────────────────────────────────────────
|
||||||
|
|
||||||
do_read_version() {
|
do_read_version() {
|
||||||
:
|
if [[ ! -f "$ROOT_DIR/VERSION" ]]; then
|
||||||
__READ_VERSION__
|
local highest_tag=""
|
||||||
|
while IFS= read -r raw_tag; do
|
||||||
|
local tag="${raw_tag#v}"
|
||||||
|
[[ $tag =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$ ]] || continue
|
||||||
|
|
||||||
|
if [[ -z $highest_tag ]]; then
|
||||||
|
highest_tag="$tag"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
local cmp_status=0
|
||||||
|
version_cmp "$tag" "$highest_tag" || cmp_status=$?
|
||||||
|
[[ $cmp_status -eq 1 ]] && highest_tag="$tag"
|
||||||
|
done < <(git tag --list)
|
||||||
|
|
||||||
|
[[ -z $highest_tag ]] && highest_tag="0.0.1"
|
||||||
|
|
||||||
|
parse_full_version "$highest_tag"
|
||||||
|
local channel_to_write="$CHANNEL"
|
||||||
|
local n_to_write="${PRERELEASE_NUM:-1}"
|
||||||
|
if [[ $channel_to_write == "stable" || -z $channel_to_write ]]; then
|
||||||
|
channel_to_write="stable"
|
||||||
|
n_to_write="0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '%s\n%s\n%s\n' "$BASE_VERSION" "$channel_to_write" "$n_to_write" > "$ROOT_DIR/VERSION"
|
||||||
|
log "Initialized $ROOT_DIR/VERSION from highest tag: v$highest_tag"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local base_line channel_line n_line
|
||||||
|
base_line="$(sed -n '1p' "$ROOT_DIR/VERSION" | tr -d '\r')"
|
||||||
|
channel_line="$(sed -n '2p' "$ROOT_DIR/VERSION" | tr -d '\r')"
|
||||||
|
n_line="$(sed -n '3p' "$ROOT_DIR/VERSION" | tr -d '\r')"
|
||||||
|
|
||||||
|
if [[ -z $channel_line ]]; then
|
||||||
|
printf '%s\n' "$base_line"
|
||||||
|
elif [[ $channel_line == "stable" ]]; then
|
||||||
|
printf '%s\n' "$base_line"
|
||||||
|
else
|
||||||
|
printf '%s-%s.%s\n' "$base_line" "$channel_line" "$n_line"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
do_write_version() {
|
do_write_version() {
|
||||||
:
|
local channel_to_write="$CHANNEL"
|
||||||
__WRITE_VERSION__
|
local n_to_write="${PRERELEASE_NUM:-1}"
|
||||||
|
if [[ $channel_to_write == "stable" || -z $channel_to_write ]]; then
|
||||||
|
channel_to_write="stable"
|
||||||
|
n_to_write="0"
|
||||||
|
fi
|
||||||
|
printf '%s\n%s\n%s\n' "$BASE_VERSION" "$channel_to_write" "$n_to_write" > "$ROOT_DIR/VERSION"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ── user-provided hook ─────────────────────────────────────────────────────
|
||||||
|
|
||||||
do_post_version() {
|
do_post_version() {
|
||||||
:
|
:
|
||||||
__POST_VERSION__
|
__POST_VERSION__
|
||||||
|
|||||||
Reference in New Issue
Block a user