-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: github action and install shell script
- Loading branch information
zhazhazhu
committed
Jan 10, 2024
1 parent
2406cff
commit c131a10
Showing
4 changed files
with
226 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
name: build | ||
on: | ||
push: | ||
tags: | ||
- "[0-9]+.[0-9]+.[0-9]+" | ||
|
||
jobs: | ||
build: | ||
permissions: | ||
contents: write | ||
name: build | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
matrix: | ||
build: [linux, macos, windows] | ||
include: | ||
- build: linux | ||
os: ubuntu-latest | ||
rust: nightly | ||
target: x86_64-unknown-linux-musl | ||
archive-name: airnc-linux.tar.gz | ||
|
||
- build: macos | ||
os: macos-latest | ||
rust: nightly | ||
target: x86_64-apple-darwin | ||
archive-name: airnc-macos.tar.gz | ||
|
||
- build: macos-aarch64 | ||
os: macos-latest | ||
rust: nightly | ||
target: aarch64-apple-darwin | ||
archive-name: airnc-macos-aarch64.tar.gz | ||
|
||
- build: windows | ||
os: windows-2019 | ||
rust: nightly-x86_64-msvc | ||
target: x86_64-pc-windows-msvc | ||
archive-name: airnc-windows.7z | ||
fail-fast: false | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
|
||
- name: Install Rust | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: ${{ matrix.rust }} | ||
profile: minimal | ||
override: true | ||
target: ${{ matrix.target }} | ||
|
||
- name: Install musl(linux) | ||
if: matrix.build == 'linux' | ||
run: sudo apt-get install -y musl-tools | ||
|
||
- name: Build binary | ||
run: cargo build --verbose --release --target ${{ matrix.target }} | ||
env: | ||
RUST_BACKTRACE: 1 | ||
|
||
- name: Strip binary (linux and macos) | ||
if: matrix.build == 'linux' || matrix.build == 'macos' | ||
run: | | ||
strip "target/${{ matrix.target }}/release/airnc" | ||
- name: Build archive | ||
shell: bash | ||
run: | | ||
mkdir archive | ||
cp LICENSE README.md archive/ | ||
cd archive | ||
if [ "${{ matrix.build }}" = "windows" ]; then | ||
cp "../target/${{ matrix.target }}/release/airnc.exe" ./ | ||
7z a "${{ matrix.archive-name }}" LICENSE README.md airnc.exe | ||
else | ||
cp "../target/${{ matrix.target }}/release/airnc" ./ | ||
tar -czf "${{ matrix.archive-name }}" LICENSE README.md airnc | ||
fi | ||
- name: Upload archive | ||
uses: actions/upload-artifact@v1 | ||
with: | ||
name: ${{ matrix.archive-name }} | ||
path: archive/${{ matrix.archive-name }} | ||
|
||
- name: Release | ||
uses: softprops/action-gh-release@v1 | ||
with: | ||
draft: true | ||
files: archive/${{ matrix.archive-name }} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
#!/bin/bash | ||
OS_TYPE="$(uname)" | ||
echo "Operating System: $OS_TYPE" | ||
|
||
if [[ "$OS_TYPE" == "Linux" ]]; then | ||
FILENAME="airnc-linux.tar.gz" | ||
elif [[ "$OS_TYPE" == "Darwin" ]]; then | ||
ARCH="$(uname -m)" | ||
if [[ "$ARCH" == "x86_64" ]]; then | ||
FILENAME="airnc-macos.tar.gz" | ||
elif [[ "$ARCH" == "arm64" ]]; then | ||
FILENAME="airnc-macos-aarch64.tar.gz" | ||
else | ||
FILENAME="airnc-macos.tar.gz" | ||
echo "Unknown macOS Architecture: $ARCH" | ||
fi | ||
elif [[ "$OS_TYPE" == "Windows_NT" ]]; then | ||
FILENAME="airnc-windows.7z" | ||
else | ||
echo "Unknown Operating System: $OS_TYPE" | ||
exit 1 | ||
fi | ||
|
||
ARCHIVE_URL="https://github.com/zhazhazhu/airnc/releases/latest/download/$FILENAME" | ||
|
||
DOWNLOAD_DIR=$(mktemp -d) | ||
|
||
CURRENT_SHELL="$(basename "$SHELL")" | ||
|
||
TEMP_FILE="$DOWNLOAD_DIR/airnc.tar.gz" | ||
|
||
if [ -d "$HOME/.airnc" ]; then | ||
INSTALL_DIR="$HOME/.airnc" | ||
elif [ -n "$XDG_DATA_HOME" ]; then | ||
INSTALL_DIR="$XDG_DATA_HOME/.airnc" | ||
elif [ "$OS" = "Darwin" ]; then | ||
INSTALL_DIR="$HOME/Library/Application Support/.airnc" | ||
else | ||
INSTALL_DIR="$HOME/.local/share/.airnc" | ||
fi | ||
|
||
echo "CURRENT_SHELL is $CURRENT_SHELL" | ||
|
||
echo "INSTALL_DIR is $INSTALL_DIR" | ||
|
||
echo "DOWNLOAD_DIR is $DOWNLOAD_DIR" | ||
|
||
curl -L "$ARCHIVE_URL" -o "$TEMP_FILE" | ||
|
||
tar -xzvf "$TEMP_FILE" -C "$DOWNLOAD_DIR" | ||
|
||
if [ ! -d "$INSTALL_DIR" ]; then | ||
mkdir "$INSTALL_DIR" | ||
fi | ||
|
||
mv "$DOWNLOAD_DIR/airnc" "$INSTALL_DIR/airnc" | ||
|
||
rm -rf "$DOWNLOAD_DIR" | ||
|
||
ensure_containing_dir_exists() { | ||
local CONTAINING_DIR | ||
CONTAINING_DIR="$(dirname "$1")" | ||
if [ ! -d "$CONTAINING_DIR" ]; then | ||
echo " >> Creating directory $CONTAINING_DIR" | ||
mkdir -p "$CONTAINING_DIR" | ||
fi | ||
} | ||
|
||
setup_shell() { | ||
CURRENT_SHELL="$(basename "$SHELL")" | ||
|
||
if [ "$CURRENT_SHELL" = "zsh" ]; then | ||
CONF_FILE=${ZDOTDIR:-$HOME}/.zshrc | ||
ensure_containing_dir_exists "$CONF_FILE" | ||
echo "Installing for Zsh. Appending the following to $CONF_FILE:" | ||
echo "" | ||
echo ' # airnc' | ||
echo ' export PATH="'"$INSTALL_DIR"':$PATH"' | ||
|
||
echo '' >>$CONF_FILE | ||
echo '# airnc' >>$CONF_FILE | ||
echo 'export PATH="'$INSTALL_DIR':$PATH"' >>$CONF_FILE | ||
|
||
elif [ "$CURRENT_SHELL" = "fish" ]; then | ||
CONF_FILE=$HOME/.config/fish/conf.d/airnc.fish | ||
ensure_containing_dir_exists "$CONF_FILE" | ||
echo "Installing for Fish. Appending the following to $CONF_FILE:" | ||
echo "" | ||
echo ' # airnc' | ||
echo ' set PATH "'"$INSTALL_DIR"'" $PATH' | ||
echo ' airnc env | source' | ||
|
||
echo '# airnc' >>$CONF_FILE | ||
echo 'set PATH "'"$INSTALL_DIR"'" $PATH' >>$CONF_FILE | ||
echo 'airnc env | source' >>$CONF_FILE | ||
|
||
elif [ "$CURRENT_SHELL" = "bash" ]; then | ||
if [ "$OS" = "Darwin" ]; then | ||
CONF_FILE=$HOME/.profile | ||
else | ||
CONF_FILE=$HOME/.bashrc | ||
fi | ||
ensure_containing_dir_exists "$CONF_FILE" | ||
echo "Installing for Bash. Appending the following to $CONF_FILE:" | ||
echo "" | ||
echo ' # airnc' | ||
echo ' export PATH="'"$INSTALL_DIR"':$PATH"' | ||
|
||
echo '' >>$CONF_FILE | ||
echo '# airnc' >>$CONF_FILE | ||
echo 'export PATH="'"$INSTALL_DIR"':$PATH"' >>$CONF_FILE | ||
|
||
else | ||
echo "Could not infer shell type. Please set up manually." | ||
exit 1 | ||
fi | ||
|
||
echo '# airnc end' >>$CONF_FILE | ||
echo "" | ||
echo "In order to apply the changes, open a new terminal or run the following command:" | ||
echo "" | ||
echo " source $CONF_FILE" | ||
} | ||
|
||
setup_shell | ||
|
||
echo "Installation completed successfully." |