-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·135 lines (120 loc) · 4.16 KB
/
Copy pathinstall.sh
File metadata and controls
executable file
·135 lines (120 loc) · 4.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/bin/bash
# SecScan Installation Script for Linux/macOS
# This script builds and installs secscan as a global command
set -e
# Read the version from source rather than hardcoding it, so the banner can
# never disagree with the binary it builds.
VERSION="$(grep -oE 'const version = "[0-9.]+"' main.go | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')"
BINARY_NAME="secscan"
BUILD_DIR="build"
# Detect OS
OS="$(uname -s)"
case "${OS}" in
Linux*) PLATFORM="Linux";;
Darwin*) PLATFORM="macOS";;
*)
echo "Unsupported operating system: ${OS}"
echo "This script is for Linux/macOS only."
echo ""
echo "For Windows, please use: install.ps1"
echo "Or use the universal installer: go run installer/install.go"
exit 1
;;
esac
echo "SecScan v${VERSION} - Installation Script"
echo "Platform: ${PLATFORM}"
echo ""
# Check if Go is installed
if ! command -v go &> /dev/null; then
echo "Go is not installed. Please install Go 1.19 or later."
echo " Visit: https://go.dev/doc/install"
exit 1
fi
echo "Go found: $(go version)"
echo ""
# Build the binary
echo "Building ${BINARY_NAME}..."
mkdir -p "${BUILD_DIR}"
go build -ldflags "-s -w" -o "${BUILD_DIR}/${BINARY_NAME}" main.go
echo "Build complete"
echo ""
# Ask user for installation preference
echo "Choose installation method:"
echo " 1) System-wide install to /usr/local/bin (requires sudo) - RECOMMENDED"
echo " 2) Local install to ~/.local/bin (no sudo required)"
echo " 3) Skip installation (binary will be in build/ directory)"
echo ""
read -p "Enter choice [1-3]: " choice
case $choice in
1)
echo ""
echo "Installing to /usr/local/bin (requires sudo)..."
# Check for existing installation in ~/.local/bin
if [ -f ~/.local/bin/${BINARY_NAME} ]; then
echo "Warning: ${BINARY_NAME} found in ~/.local/bin"
echo " Removing old version from ~/.local/bin..."
rm -f ~/.local/bin/${BINARY_NAME}
fi
sudo cp "${BUILD_DIR}/${BINARY_NAME}" /usr/local/bin/
sudo chmod +x /usr/local/bin/${BINARY_NAME}
echo "Installed successfully to /usr/local/bin/${BINARY_NAME}"
echo ""
echo "Verify installation:"
echo " ${BINARY_NAME} -version"
echo " which ${BINARY_NAME}"
;;
2)
echo ""
echo "Installing to ~/.local/bin..."
# Check for existing installation in /usr/local/bin
if [ -f /usr/local/bin/${BINARY_NAME} ]; then
echo "Warning: ${BINARY_NAME} found in /usr/local/bin"
echo " You may want to remove it with: sudo rm /usr/local/bin/${BINARY_NAME}"
echo " Continuing with local installation..."
echo ""
fi
mkdir -p ~/.local/bin
cp "${BUILD_DIR}/${BINARY_NAME}" ~/.local/bin/
chmod +x ~/.local/bin/${BINARY_NAME}
echo "Installed successfully to ~/.local/bin/${BINARY_NAME}"
echo ""
# Check if ~/.local/bin is in PATH
if echo "$PATH" | grep -q "$HOME/.local/bin"; then
echo "~/.local/bin is already in your PATH"
echo ""
echo "Verify installation:"
echo " ${BINARY_NAME} -version"
else
echo "~/.local/bin is NOT in your PATH"
echo ""
echo "Add this line to your ~/.bashrc or ~/.zshrc:"
echo " export PATH=\"\$HOME/.local/bin:\$PATH\""
echo ""
echo "Then run:"
echo " source ~/.bashrc # or ~/.zshrc"
echo ""
echo "After that, verify installation:"
echo " ${BINARY_NAME} -version"
fi
;;
3)
echo ""
echo "Build complete. Binary is available at:"
echo " ${BUILD_DIR}/${BINARY_NAME}"
echo ""
echo "Run with:"
echo " ./${BUILD_DIR}/${BINARY_NAME}"
;;
*)
echo ""
echo "Invalid choice. Binary is available at: ${BUILD_DIR}/${BINARY_NAME}"
exit 1
;;
esac
echo ""
echo "Installation complete!"
echo ""
echo "Quick start:"
echo " ${BINARY_NAME} -root /path/to/project"
echo " ${BINARY_NAME} --help"
echo ""