mirror of
https://github.com/sharkdp/fd.git
synced 2026-08-29 02:32:00 +08:00
build: Create archive script
Move the code for creating the archive from the GHA yaml into a dedicated script file.
This commit is contained in:
@@ -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)
|
||||
|
||||
Executable
+67
@@ -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
|
||||
Reference in New Issue
Block a user