From 099446589d4a7838dd57fd22cb15a54ac003e632 Mon Sep 17 00:00:00 2001 From: kokopi Date: Fri, 10 Apr 2026 01:51:21 +0900 Subject: [PATCH] add:build+readme --- README.md | 14 +++++++++++ build.sh | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 README.md create mode 100755 build.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..12c42f4 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# Tailscale VPN + +## Setup + +``` +./build.sh +``` + +## Run + +``` +tailscale-vpn +``` + diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..5a5445a --- /dev/null +++ b/build.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +set -euo pipefail + +BINARY_NAME="tailscale-vpn" +BIN_DIR="$HOME/.local/bin" +BASHRC="$HOME/.bashrc" +DIST_DIR="$(pwd)/dist" +BUILD_OUTPUT="$DIST_DIR/$BINARY_NAME" +INSTALL_TARGET="$BIN_DIR/$BINARY_NAME" + +# ── Colours ──────────────────────────────────────────────────────────────────── +BOLD='\033[1m' +DIM='\033[2m' +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +CYAN='\033[0;36m' +RESET='\033[0m' + +step() { echo -e "\n${BOLD}${CYAN}▶ $1${RESET}"; } +ok() { echo -e " ${GREEN}✔${RESET} $1"; } +skip() { echo -e " ${DIM}– $1${RESET}"; } +warn() { echo -e " ${YELLOW}⚠ $1${RESET}"; } +divider() { echo -e "${DIM} ──────────────────────────────────────${RESET}"; } + +# ── Header ───────────────────────────────────────────────────────────────────── +echo -e "\n${BOLD} ${BINARY_NAME} — build${RESET}" +divider + +# ── 1. Build Go binary ───────────────────────────────────────────────────────── +step "Building Go binary" + +mkdir -p "$DIST_DIR" +go build -o "$BUILD_OUTPUT" + +ok "Build complete → dist/$BINARY_NAME" + +# ── 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="# $BINARY_NAME: bin_dir" + +touch "$BASHRC" + +if grep -qE '(^|:)[^#]*\.local/bin([^a-zA-Z0-9_]|$)' "$BASHRC"; then + skip "$BIN_DIR already declared in $BASHRC" +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" +