@ 261104.1

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

Changes to scripts/. All files

scripts/create-archive.sh

new file mode 100755@@ -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