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")"
else
echo "→ Adding PATH to $(basename "$file")"
{
echo ""
echo "# Add local bin to PATH"
echo "$EXPORT_LINE"
} >> "$file"
fi
}
echo "Updating shell config files..." # ── 2. Ensure ~/.local/bin exists ──────────────────────────────────────────────
step "Checking $BIN_DIR"
mkdir -p "$BIN_DIR"
ok "$BIN_DIR exists"
for file in "${FILES[@]}"; do # ── 3. Add ~/.local/bin to PATH in ~/.bashrc if not already present ────────────
add_to_file "$file" step "Checking PATH in $BASHRC"
done PATH_EXPORT='export PATH="$HOME/.local/bin:$PATH"'
PATH_MARKER="# scripts-organizer: bin_dir"
echo "" touch "$BASHRC"
echo "Done!"
echo "Restart your shell or run:" if grep -qE '(^|:)[^#]*\.local/bin([^a-zA-Z0-9_]|$)' "$BASHRC"; then
echo " source ~/.zshrc # for zsh" skip "$BIN_DIR already declared in $BASHRC"
echo " source ~/.bashrc # for bash" else
echo "" >> "$BASHRC"
echo "$PATH_MARKER" >> "$BASHRC"
echo "$PATH_EXPORT" >> "$BASHRC"
ok "Added $BIN_DIR to PATH in $BASHRC"
warn "Restart your shell or run: source $BASHRC"
fi
# ── 4. Move binary into ~/.local/bin ───────────────────────────────────────────
step "Installing binary"
if [[ -f "$INSTALL_TARGET" ]]; then
warn "Overwriting existing binary at $INSTALL_TARGET"
fi
mv "$BUILD_OUTPUT" "$INSTALL_TARGET"
chmod +x "$INSTALL_TARGET"
ok "Installed → $INSTALL_TARGET"
# ── Done ───────────────────────────────────────────────────────────────────────
divider
echo -e "\n${BOLD}${GREEN} ✔ Done.${RESET} Run: ${BOLD}$BINARY_NAME${RESET}\n"