260827.1.1 · c276ac79f4257817203f72311ffb1386ab3ddb35
build: Create archive script
Move the code for creating the archive from the GHA yaml into a dedicated script file.
reading declarations
@@ -205,44 +205,12 @@ jobs: - name: Create tarball id: package shell: bash+ run: bash scripts/create-archive.sh env: BIN_PATH: ${{ steps.bin.outputs.BIN_PATH }}- version: ${{ needs.crate_metadata.outputs.version }}- run: |- PKG_suffix=".tar.gz"- case ${target} in- *-pc-windows-*) PKG_suffix=".zip" ;;- esac- PKG_BASENAME=${name}-v${version}-${target}- PKG_NAME=${PKG_BASENAME}${PKG_suffix}- echo "PKG_NAME=${PKG_NAME}" >> $GITHUB_OUTPUT-- PKG_STAGING="${CICD_INTERMEDIATES_DIR}/package"- ARCHIVE_DIR="${PKG_STAGING}/${PKG_BASENAME}/"- mkdir -p "${ARCHIVE_DIR}"-- # Binary- cp "${BIN_PATH}" "$ARCHIVE_DIR"-- # README, LICENSE and CHANGELOG files- cp "README.md" "LICENSE-MIT" "LICENSE-APACHE" "CHANGELOG.md" "$ARCHIVE_DIR"-- # Man page- cp "doc/${name}.1" "$ARCHIVE_DIR"-- # Autocompletion files- cp -r autocomplete "${ARCHIVE_DIR}"-- # base compressed package- pushd "${PKG_STAGING}/" >/dev/null- case ${target} in- *-pc-windows-*) 7z -y a "${PKG_NAME}" "${PKG_BASENAME}"/* | tail -2 ;;- *) tar czf "${PKG_NAME}" "${PKG_BASENAME}"/* ;;- esac;- popd >/dev/null-- # Let subsequent steps know where to find the compressed package- echo "PKG_PATH=${PKG_STAGING}/${PKG_NAME}" >> $GITHUB_OUTPUT+ TARGET: ${{ env.target }}+ ARCHIVE_NAME: ${{ env.name }}-v${{ needs.crate_metadata.outputs.version }}-${{ env.target }}+ PKG_STAGING: "${{ env.CICD_INTERMEDIATES_DIR }}/package" - name: Create Debian package id: debian-package
@@ -1,3 +1,4 @@ target/ /autocomplete/+/package/ **/*.rs.bk
@@ -1,9 +1,16 @@-PROFILE=release+PROFILE?=release EXE=target/$(PROFILE)/fd prefix=/usr/local bindir=$(prefix)/bin datadir=$(prefix)/share exe_name=fd+ifdef VERSION+ ARCHIVE_NAME = fd-v$(VERSION)+else+ ARCHIVE_NAME = fd+endif+export ARCHIVE_NAME+archive_path=package/$(ARCHIVE_NAME).tar.gz $(EXE): Cargo.toml src/**/*.rs cargo build --profile $(PROFILE) --locked@@ -41,6 +48,11 @@ autocomplete/fdfind.fish: contrib/completion/fdfind.fish $(comp_dir) cp $< $@ +archive: $(archive_path)++$(archive_path): completions $(EXE)+ bash scripts/create-archive.sh+ install: $(EXE) completions install -Dm755 $(EXE) $(DESTDIR)$(bindir)/fd install -Dm644 autocomplete/fd.bash $(DESTDIR)/$(datadir)/bash-completion/completions/$(exe_name)
@@ -0,0 +1,67 @@+#!/bin/bash+#+# Create a .tar.gz archive of the fd project for distribution+#+# Expected environment variables:+#+# TARGET: rust target to publish. Defaults to default rustc target+# BIN_PATH: path to fd binary+# PKG_STAGING: directory to use for staging files to include in the archive+# ARCHIVE_NAME: Name of output file, minus extension, defaults to "fd" with a version appended+# if VERSION is specified+# VERSION: version to publish+# GITHUB_OUTPUT: file to store github output variables in++if [[ -z "$TARGET" ]]; then+ TARGET="$(rustc -vV | sed -n 's/host: //p')"+fi++PKG_suffix=".tar.gz"+EXE_suffix=""+case ${TARGET} in+*-pc-windows-*)+ PKG_suffix=".zip"+ EXE_suffix=".exe"+ ;;+esac++if [[ -z $BIN_PATH ]]; then+ BIN_PATH=target/${PROFILE:-release}/fd+fi++if [[ -z "$ARCHIVE_NAME" ]]; then+ ARCHIVE_NAME=fd+ [[ -n "$VERSION" ]] && ARCHIVE_NAME+="-v$VERSION"+fi++PKG_NAME=${ARCHIVE_NAME}${PKG_suffix}++staging_dir="${PKG_STAGING:-package}"+ARCHIVE_DIR="${staging_dir}/${ARCHIVE_NAME}/"+mkdir -p "${ARCHIVE_DIR}"++# Binary+cp "${BIN_PATH}" "$ARCHIVE_DIR"++# README, LICENSE and CHANGELOG files+cp "README.md" "LICENSE-MIT" "LICENSE-APACHE" "CHANGELOG.md" "$ARCHIVE_DIR"++# Man page+cp "doc/fd.1" "$ARCHIVE_DIR"++# Autocompletion files+cp -r autocomplete "${ARCHIVE_DIR}"++# base compressed package+pushd "${staging_dir}/" >/dev/null+case ${TARGET} in+*-pc-windows-*) 7z -y a "${PKG_NAME}" "${ARCHIVE_NAME}"/* | tail -2 ;;+*) tar czf "${PKG_NAME}" "${ARCHIVE_NAME}"/* ;;+esac;+popd >/dev/null++if [[ -n "$GITHUB_OUTPUT" ]]; then+ echo "PKG_NAME=${PKG_NAME}" >> $GITHUB_OUTPUT+ # Let subsequent steps know where to find the compressed package+ echo "PKG_PATH=${PKG_STAGING}/${PKG_NAME}" >> $GITHUB_OUTPUT+fi