-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·111 lines (101 loc) · 3.81 KB
/
install.sh
File metadata and controls
executable file
·111 lines (101 loc) · 3.81 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
#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Check if already installed
if command -v shipd >/dev/null 2>&1; then
CURRENT_VERSION=$(shipd --version 2>/dev/null || echo "unknown")
echo "Shipd is already installed: $CURRENT_VERSION"
echo "Location: $(which shipd)"
echo ""
read -p "Reinstall/update? (y/N) " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Installation cancelled."
exit 0
fi
echo ""
fi
echo "Installing Shipd..."
echo ""
# Create directories
echo "[1/4] Creating installation directories..."
sudo mkdir -p /usr/local/bin
sudo mkdir -p /usr/local/lib/shipd
echo "✓ Directories created"
echo ""
# Copy main executable
echo "[2/4] Installing shipd command..."
sudo cp "${SCRIPT_DIR}/shipd.sh" /usr/local/bin/shipd
sudo chmod +x /usr/local/bin/shipd
echo "✓ Installed to /usr/local/bin/shipd"
echo ""
# Copy library files
echo "[3/4] Installing library files..."
sudo cp "${SCRIPT_DIR}/lib/cmd-deploy.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/cmd-deploy-multi.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/cmd-stop.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/cmd-logs.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/cmd-restart.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/cmd-inspect.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/cmd-setup-caddy.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/cmd-setup-rsync.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/deploy-podman.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/deploy-docker.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/deploy-caddy.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/hash-check.sh" /usr/local/lib/shipd/
sudo cp "${SCRIPT_DIR}/lib/file-diff.sh" /usr/local/lib/shipd/
sudo chmod +x /usr/local/lib/shipd/*.sh
echo "✓ Libraries installed to /usr/local/lib/shipd/"
echo ""
# Create user data directory
echo "[4/4] Creating user data directory..."
mkdir -p ~/.shipd/targets
echo "✓ Created ~/.shipd/targets/"
echo ""
# Verify installation
if command -v shipd >/dev/null 2>&1; then
echo "=========================================="
echo "✓ Shipd installed successfully!"
echo "=========================================="
echo ""
shipd --version
echo ""
echo "Installation locations:"
echo " • Command: /usr/local/bin/shipd"
echo " • Libraries: /usr/local/lib/shipd/"
echo " • User data: ~/.shipd/targets/"
echo ""
echo "Targets search order:"
echo " 1. ./targets/ (current directory)"
echo " 2. ~/.shipd/targets/ (home directory)"
echo ""
echo "Quick start:"
echo " # Create a target"
echo " mkdir -p ~/.shipd/targets/myapp"
echo " cp ${SCRIPT_DIR}/targets/example/.config ~/.shipd/targets/myapp/.config"
echo " cp ${SCRIPT_DIR}/targets/example/.env ~/.shipd/targets/myapp/.env"
echo ""
echo " # Deploy"
echo " shipd deploy myapp"
echo ""
# Offer to migrate existing targets
if [ -d "${SCRIPT_DIR}/targets" ] && [ -n "$(ls -A "${SCRIPT_DIR}/targets" 2>/dev/null)" ]; then
echo "=========================================="
echo "Existing targets found in ${SCRIPT_DIR}/targets/"
echo ""
read -p "Would you like to copy them to ~/.shipd/targets/? (y/N) " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
cp -r "${SCRIPT_DIR}/targets/"* ~/.shipd/targets/
echo "✓ Targets copied to ~/.shipd/targets/"
else
echo "Skipped. You can copy them manually:"
echo " cp -r ${SCRIPT_DIR}/targets/* ~/.shipd/targets/"
fi
echo ""
fi
else
echo "⚠️ Installation completed but 'shipd' not found in PATH."
echo "You may need to restart your terminal or add /usr/local/bin to PATH."
echo ""
fi