49 lines
1.4 KiB
Bash
Executable File
49 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
usage() {
|
|
echo "usage: release.sh SELECTOR VERSION" >&2
|
|
exit 2
|
|
}
|
|
|
|
[ "$#" -eq 2 ] || usage
|
|
selector=$1
|
|
version=$2
|
|
script_dir=$(CDPATH= cd "$(dirname "$0")" && pwd)
|
|
repository_dir=$(git -C "$script_dir" rev-parse --show-toplevel)
|
|
|
|
bootstrap_dir=$(mktemp -d "$(dirname "$repository_dir")/.releasekit-bootstrap.XXXXXX")
|
|
selection_file=$bootstrap_dir/module-selection.tsv
|
|
trap 'rm -rf "$bootstrap_dir"' EXIT
|
|
"$script_dir/select-module.sh" selector "$selector" > "$selection_file"
|
|
|
|
tab=$(printf '\t')
|
|
IFS="$tab" read -r selected_selector tag_pattern module_dir profile_path < "$selection_file"
|
|
module_path=$repository_dir
|
|
if [ "$module_dir" != . ]; then
|
|
module_path=$repository_dir/$module_dir
|
|
fi
|
|
|
|
cp "$module_path/go.mod" "$bootstrap_dir/releasekit.mod"
|
|
if [ -f "$module_path/go.sum" ]; then
|
|
cp "$module_path/go.sum" "$bootstrap_dir/releasekit.sum"
|
|
else
|
|
: > "$bootstrap_dir/releasekit.sum"
|
|
fi
|
|
|
|
releasekit_module=gitea.maximumdirect.net/eric/ReleaseKit
|
|
(
|
|
cd "$module_path"
|
|
export GOWORK=off
|
|
export GOTOOLCHAIN=local
|
|
go list -mod=mod -modfile="$bootstrap_dir/releasekit.mod" -m "$releasekit_module"
|
|
go build -mod=mod -modfile="$bootstrap_dir/releasekit.mod" \
|
|
-o "$bootstrap_dir/releasekit" "$releasekit_module/cmd/releasekit"
|
|
)
|
|
|
|
"$bootstrap_dir/releasekit" publish \
|
|
--repo "$repository_dir" \
|
|
--config "$profile_path" \
|
|
--expected-module "$module_dir" \
|
|
"$version"
|