fix:build script

This commit is contained in:
2026-04-06 03:46:19 +09:00
parent a4289ad172
commit 1f7382fadb

View File

@@ -1,47 +1,73 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#!/usr/bin/env bash set -euo pipefail
set -e BINARY_NAME="filepass"
BIN_DIR="$HOME/.local/bin"
BASHRC="$HOME/.bashrc"
DIST_DIR="$(pwd)/dist"
BUILD_OUTPUT="$DIST_DIR/$BINARY_NAME"
INSTALL_TARGET="$BIN_DIR/$BINARY_NAME"
LOCAL_BIN="$HOME/.local/bin" # ── Colours ────────────────────────────────────────────────────────────────────
EXPORT_LINE='export PATH="$HOME/.local/bin:$PATH"' BOLD='\033[1m'
DIM='\033[2m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
CYAN='\033[0;36m'
RESET='\033[0m'
# Files to check (macOS + Linux) step() { echo -e "\n${BOLD}${CYAN}$1${RESET}"; }
FILES=( ok() { echo -e " ${GREEN}${RESET} $1"; }
"$HOME/.bashrc" skip() { echo -e " ${DIM} $1${RESET}"; }
"$HOME/.bash_profile" warn() { echo -e " ${YELLOW}$1${RESET}"; }
"$HOME/.zshrc" divider() { echo -e "${DIM} ──────────────────────────────────────${RESET}"; }
)
echo "Ensuring ~/.local/bin exists..." # ── Header ─────────────────────────────────────────────────────────────────────
mkdir -p "$LOCAL_BIN" echo -e "\n${BOLD} scripts-organizer — build${RESET}"
divider
add_to_file() { # ── 1. Build Go binary ─────────────────────────────────────────────────────────
local file="$1" step "Building Go binary"
# Create file if it doesn't exist mkdir -p "$DIST_DIR"
[ -f "$file" ] || touch "$file" go build -o "$BUILD_OUTPUT"
if grep -qxF "$EXPORT_LINE" "$file"; then ok "Build complete → dist/$BINARY_NAME"
echo "✓ PATH already set in $(basename "$file")"
# ── 2. Ensure ~/.local/bin exists ──────────────────────────────────────────────
step "Checking $BIN_DIR"
mkdir -p "$BIN_DIR"
ok "$BIN_DIR exists"
# ── 3. Add ~/.local/bin to PATH in ~/.bashrc if not already present ────────────
step "Checking PATH in $BASHRC"
PATH_EXPORT='export PATH="$HOME/.local/bin:$PATH"'
PATH_MARKER="# scripts-organizer: bin_dir"
touch "$BASHRC"
if grep -qE '(^|:)[^#]*\.local/bin([^a-zA-Z0-9_]|$)' "$BASHRC"; then
skip "$BIN_DIR already declared in $BASHRC"
else else
echo "→ Adding PATH to $(basename "$file")" echo "" >> "$BASHRC"
{ echo "$PATH_MARKER" >> "$BASHRC"
echo "" echo "$PATH_EXPORT" >> "$BASHRC"
echo "# Add local bin to PATH" ok "Added $BIN_DIR to PATH in $BASHRC"
echo "$EXPORT_LINE" warn "Restart your shell or run: source $BASHRC"
} >> "$file"
fi fi
}
echo "Updating shell config files..." # ── 4. Move binary into ~/.local/bin ───────────────────────────────────────────
step "Installing binary"
for file in "${FILES[@]}"; do if [[ -f "$INSTALL_TARGET" ]]; then
add_to_file "$file" warn "Overwriting existing binary at $INSTALL_TARGET"
done fi
echo "" mv "$BUILD_OUTPUT" "$INSTALL_TARGET"
echo "Done!" chmod +x "$INSTALL_TARGET"
echo "Restart your shell or run:"
echo " source ~/.zshrc # for zsh" ok "Installed → $INSTALL_TARGET"
echo " source ~/.bashrc # for bash"
# ── Done ───────────────────────────────────────────────────────────────────────
divider
echo -e "\n${BOLD}${GREEN} ✔ Done.${RESET} Run: ${BOLD}$BINARY_NAME${RESET}\n"