-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
install.sh
executable file
·138 lines (107 loc) · 3.63 KB
/
install.sh
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
136
137
138
#!/bin/bash
set -e -o pipefail
readonly MAGENTA="$(tput setaf 5 2>/dev/null || echo '')"
readonly GREEN="$(tput setaf 2 2>/dev/null || echo '')"
readonly CYAN="$(tput setaf 6 2>/dev/null || echo '')"
readonly NO_COLOR="$(tput sgr0 2>/dev/null || echo '')"
# Check if the required tools are installed
if ! command -v curl >/dev/null 2>&1; then
echo "Error: curl is required to install FluentCI."
exit 1
fi
if ! command -v unzip >/dev/null 2>&1; then
echo "Error: unzip is required to install FluentCI."
exit 1
fi
export DENO_INSTALL=$HOME/.deno
export PATH=$DENO_INSTALL/bin:$PATH
if ! command -v deno >/dev/null 2>&1; then
echo "Deno is not installed."
echo "Downloading and installing Deno..."
curl -fsSL https://deno.land/install.sh | sh
echo 'export DENO_INSTALL=$HOME/.deno' >> ~/.bashrc
echo 'export PATH=$DENO_INSTALL/bin:$PATH' >> ~/.bashrc
fi
if ! command -v dagger >/dev/null 2>&1; then
echo "Dagger is not installed."
echo "Downloading and installing Dagger..."
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.12.4 sh
if ! command -v sudo >/dev/null 2>&1; then
mv bin/dagger /usr/local/bin
else
sudo mv bin/dagger /usr/local/bin
fi
rmdir bin || true
fi
if ! command -v tar >/dev/null 2>&1; then
echo "Error: tar is required to install FluentCI."
exit 1
fi
if ! command -v docker >/dev/null 2>&1; then
echo "Error: docker is required to install FluentCI."
exit 1
fi
# Define the release information
RELEASE_URL="https://api.github.com/repos/fluentci-io/fluentci/releases/latest"
# Determine the operating system
OS=$(uname -s)
if [ "$OS" = "Darwin" ]; then
# Determine the CPU architecture
ARCH=$(uname -m)
if [ "$ARCH" = "arm64" ]; then
ASSET_NAME="_aarch64-apple-darwin.tar.gz"
else
ASSET_NAME="_x86_64-apple-darwin.tar.gz"
fi
elif [ "$OS" = "Linux" ]; then
# Determine the CPU architecture
ARCH=$(uname -m)
if [ "$ARCH" = "aarch64" ]; then
ASSET_NAME="_aarch64-unknown-linux-gnu.tar.gz"
elif [ "$ARCH" = "x86_64" ]; then
ASSET_NAME="_x86_64-unknown-linux-gnu.tar.gz"
else
echo "Unsupported architecture: $ARCH"
exit 1
fi
else
echo "Unsupported operating system: $OS"
exit 1
fi
# Retrieve the download URL for the desired asset
DOWNLOAD_URL=$(curl -sSL $RELEASE_URL | grep -o "browser_download_url.*$ASSET_NAME\"" | cut -d ' ' -f 2)
ASSET_NAME=$(basename $DOWNLOAD_URL)
# Define the installation directory
INSTALL_DIR="/usr/local/bin"
DOWNLOAD_URL=`echo $DOWNLOAD_URL | tr -d '\"'`
# Download the asset
curl -SL $DOWNLOAD_URL -o /tmp/$ASSET_NAME
# Extract the asset
tar -xzf /tmp/$ASSET_NAME -C /tmp
# Set the correct permissions for the binary
chmod +x /tmp/fluentci
# Move the extracted binary to the installation directory
# use sudo if available
if command -v sudo >/dev/null 2>&1; then
sudo mv /tmp/fluentci $INSTALL_DIR
else
mv /tmp/fluentci $INSTALL_DIR
fi
# Clean up temporary files
rm /tmp/$ASSET_NAME
cat << EOF
${CYAN}
______ __ _________
/ __/ /_ _____ ___ / /_/ ___/ _/
/ _// / // / -_) _ \\/ __/ /___/ /
/_/ /_/\\_,_/\\__/_//_/\\__/\\___/___/
${NO_COLOR}
Welcome to FluentCI! 🚀
An Open Source CI/CD tool for ${GREEN}building, testing, and deploying${NO_COLOR} your code in ${CYAN}TypeScript${NO_COLOR}.
${GREEN}https://github.com/fluentci-io/fluentci${NO_COLOR}
Please file an issue if you encounter any problems!
===============================================================================
Installation completed! 🎉
To get started, run:
${CYAN}fluentci init${NO_COLOR}
EOF