@constellation-network/node-pilot 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +213 -0
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +19 -0
- package/bin/run.cmd +3 -0
- package/bin/run.js +15 -0
- package/dist/checks/check-hardware.d.ts +3 -0
- package/dist/checks/check-hardware.js +50 -0
- package/dist/checks/check-initial-setup.d.ts +3 -0
- package/dist/checks/check-initial-setup.js +15 -0
- package/dist/checks/check-layers.d.ts +7 -0
- package/dist/checks/check-layers.js +87 -0
- package/dist/checks/check-network.d.ts +6 -0
- package/dist/checks/check-network.js +72 -0
- package/dist/checks/check-project.d.ts +6 -0
- package/dist/checks/check-project.js +108 -0
- package/dist/clm.d.ts +9 -0
- package/dist/clm.js +30 -0
- package/dist/commands/config/get.d.ts +9 -0
- package/dist/commands/config/get.js +37 -0
- package/dist/commands/config/set.d.ts +11 -0
- package/dist/commands/config/set.js +41 -0
- package/dist/commands/config.d.ts +6 -0
- package/dist/commands/config.js +65 -0
- package/dist/commands/info.d.ts +6 -0
- package/dist/commands/info.js +32 -0
- package/dist/commands/logs.d.ts +12 -0
- package/dist/commands/logs.js +28 -0
- package/dist/commands/restart.d.ts +6 -0
- package/dist/commands/restart.js +25 -0
- package/dist/commands/shutdown.d.ts +6 -0
- package/dist/commands/shutdown.js +18 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.js +22 -0
- package/dist/commands/test.d.ts +6 -0
- package/dist/commands/test.js +13 -0
- package/dist/config-store.d.ts +109 -0
- package/dist/config-store.js +151 -0
- package/dist/helpers/config-helper.d.ts +14 -0
- package/dist/helpers/config-helper.js +39 -0
- package/dist/helpers/docker-helper.d.ts +7 -0
- package/dist/helpers/docker-helper.js +37 -0
- package/dist/helpers/env-templates.d.ts +4 -0
- package/dist/helpers/env-templates.js +33 -0
- package/dist/helpers/github-helper.d.ts +3 -0
- package/dist/helpers/github-helper.js +13 -0
- package/dist/helpers/key-file-helper.d.ts +9 -0
- package/dist/helpers/key-file-helper.js +136 -0
- package/dist/helpers/project-helper.d.ts +9 -0
- package/dist/helpers/project-helper.js +85 -0
- package/dist/helpers/prompt-helper.d.ts +8 -0
- package/dist/helpers/prompt-helper.js +135 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/info/cluster-info.d.ts +1 -0
- package/dist/info/cluster-info.js +16 -0
- package/dist/services/cluster-service.d.ts +9 -0
- package/dist/services/cluster-service.js +67 -0
- package/dist/services/fastforward-service.d.ts +14 -0
- package/dist/services/fastforward-service.js +84 -0
- package/dist/services/node-service.d.ts +10 -0
- package/dist/services/node-service.js +117 -0
- package/dist/services/shell-service.d.ts +9 -0
- package/dist/services/shell-service.js +53 -0
- package/dist/styles.d.ts +4 -0
- package/dist/styles.js +5 -0
- package/dist/types.d.ts +22 -0
- package/dist/types.js +1 -0
- package/oclif.manifest.json +241 -0
- package/package.json +98 -0
- package/projects/hypergraph/Dockerfile +41 -0
- package/projects/hypergraph/docker-compose.yml +54 -0
- package/projects/hypergraph/entrypoint.sh +35 -0
- package/projects/hypergraph/layers/gl1.env +3 -0
- package/projects/hypergraph/networks/integrationnet.env +9 -0
- package/projects/hypergraph/networks/mainnet.env +8 -0
- package/projects/hypergraph/networks/testnet.env +9 -0
- package/projects/hypergraph/pilot.env +2 -0
- package/projects/hypergraph/scripts/docker-build.sh +7 -0
- package/projects/hypergraph/scripts/install-dependencies.sh +318 -0
- package/projects/hypergraph/scripts/install.sh +149 -0
- package/projects/scripts/docker-cleanup.sh +64 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
FROM ubuntu:22.04
|
2
|
+
|
3
|
+
RUN apt update && apt install -y openjdk-11-jre
|
4
|
+
|
5
|
+
RUN apt install -y curl jq wget
|
6
|
+
|
7
|
+
# Install necessary dependencies for adding NodeSource repository
|
8
|
+
#RUN apt-get update && apt-get install -y gnupg ca-certificates
|
9
|
+
#
|
10
|
+
## Import the NodeSource GPG key
|
11
|
+
#RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
12
|
+
#
|
13
|
+
## Add the NodeSource repository for Node.js 22
|
14
|
+
#ENV NODE_MAJOR=22
|
15
|
+
#RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
|
16
|
+
#
|
17
|
+
## Update package lists and install Node.js and npm
|
18
|
+
#RUN apt-get update && apt-get install -y nodejs
|
19
|
+
#
|
20
|
+
## Verify the installation
|
21
|
+
#RUN node -v
|
22
|
+
#RUN npm -v
|
23
|
+
|
24
|
+
|
25
|
+
RUN mkdir -p /app/jars
|
26
|
+
|
27
|
+
COPY dist/keytool.jar /app/jars/keytool.jar
|
28
|
+
COPY dist/wallet.jar /app/jars/wallet.jar
|
29
|
+
|
30
|
+
COPY dist/gl1.jar /app/jars/gl1.jar
|
31
|
+
COPY dist/gl0.jar /app/jars/gl0.jar
|
32
|
+
|
33
|
+
COPY ./entrypoint.sh /app/entrypoint.sh
|
34
|
+
|
35
|
+
#COPY ../apps/health-check /health-check
|
36
|
+
|
37
|
+
RUN chmod +x /app/entrypoint.sh
|
38
|
+
|
39
|
+
WORKDIR /app
|
40
|
+
|
41
|
+
ENTRYPOINT ["/app/entrypoint.sh"]
|
@@ -0,0 +1,54 @@
|
|
1
|
+
networks:
|
2
|
+
tessellation-network:
|
3
|
+
driver: bridge
|
4
|
+
|
5
|
+
services:
|
6
|
+
gl0:
|
7
|
+
image: constellationnetwork/tessellation${CL_DOCKER_CORE_REPO:-}:${DOCKER_IMAGE_VERSION:-latest}
|
8
|
+
container_name: gl0
|
9
|
+
networks:
|
10
|
+
- tessellation-network
|
11
|
+
# restart: unless-stopped
|
12
|
+
env_file:
|
13
|
+
- gl0.env
|
14
|
+
ports:
|
15
|
+
- "9000:9000" # Public HTTP
|
16
|
+
- "9001:9001" # P2P HTTP
|
17
|
+
volumes:
|
18
|
+
- ./key.p12:/app/key.p12:ro
|
19
|
+
- ./seedlist:/app/seedlist:ro
|
20
|
+
- ./app-data/gl0-logs:/app/logs
|
21
|
+
- ./app-data/gl0-data:/app/data
|
22
|
+
- ${CL_DOCKER_PRIORITY_SEEDLIST:-/dev/null}:/app/priority-seedlist:ro
|
23
|
+
# healthcheck:
|
24
|
+
# test: ["CMD", "/app/internal-health-check.sh"]
|
25
|
+
# interval: 15s
|
26
|
+
# timeout: 5s
|
27
|
+
# start_period: 30s
|
28
|
+
profiles: ["gl0"]
|
29
|
+
# user: ${DOCKER_USER_ID:-}
|
30
|
+
gl1:
|
31
|
+
image: constellationnetwork/tessellation${CL_DOCKER_CORE_REPO:-}:${DOCKER_IMAGE_VERSION:-latest}
|
32
|
+
container_name: gl1
|
33
|
+
# restart: unless-stopped
|
34
|
+
networks:
|
35
|
+
- tessellation-network
|
36
|
+
env_file:
|
37
|
+
- gl1.env
|
38
|
+
ports:
|
39
|
+
- "9010:9010" # Public HTTP
|
40
|
+
- "9011:9011" # P2P HTTP
|
41
|
+
volumes:
|
42
|
+
- ./key.p12:/app/key.p12:ro
|
43
|
+
- ./seedlist:/app/seedlist:ro
|
44
|
+
- ./app-data/gl1-logs:/app/logs
|
45
|
+
- ./app-data/gl1-data:/app/data
|
46
|
+
- ${CL_DOCKER_PRIORITY_SEEDLIST:-/dev/null}:/app/priority-seedlist:ro
|
47
|
+
# healthcheck:
|
48
|
+
# test: ["CMD", "/app/internal-health-check.sh"]
|
49
|
+
# interval: 3s
|
50
|
+
# timeout: 5s
|
51
|
+
# retries: 5
|
52
|
+
# start_period: 10s
|
53
|
+
profiles: ["gl1"]
|
54
|
+
# user: ${DOCKER_USER_ID:-}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -e
|
3
|
+
|
4
|
+
ID=$CL_TESSELATION_LAYER
|
5
|
+
|
6
|
+
echo "Using external IP $CL_EXTERNAL_IP for service $ID"
|
7
|
+
|
8
|
+
echo "Using CL_GLOBAL_L0_PEER_ID: $CL_GLOBAL_L0_PEER_ID"
|
9
|
+
echo "Using L0 peer HTTP host: $CL_L0_PEER_HTTP_HOST"
|
10
|
+
echo "Using L0 peer HTTP port: $CL_L0_PEER_HTTP_PORT"
|
11
|
+
echo "Using L0 peer id: $CL_L0_PEER_ID"
|
12
|
+
|
13
|
+
export RUN_COMMAND="run-validator"
|
14
|
+
|
15
|
+
if [ -s "/app/seedlist" ]; then
|
16
|
+
echo "Using seedlist mapped from host"
|
17
|
+
export RUN_COMMAND="$RUN_COMMAND --seedlist /app/seedlist"
|
18
|
+
fi
|
19
|
+
|
20
|
+
if [ -s "/app/priority-seedlist" ]; then
|
21
|
+
echo "Using priority seedlist mapped from host"
|
22
|
+
export RUN_COMMAND="$RUN_COMMAND --prioritySeedlist /app/priority-seedlist"
|
23
|
+
fi
|
24
|
+
|
25
|
+
export JAR_PATH="/app/jars/$ID.jar"
|
26
|
+
|
27
|
+
echo "Running $RUN_COMMAND"
|
28
|
+
RUN_LOG_FILE="/app/logs/$ID-run.log"
|
29
|
+
echo "Running command java $CL_DOCKER_JAVA_OPTS -jar "$JAR_PATH" $RUN_COMMAND 2>&1 | tee -a $RUN_LOG_FILE"
|
30
|
+
java $CL_DOCKER_JAVA_OPTS -jar "$JAR_PATH" $RUN_COMMAND > $RUN_LOG_FILE 2>&1 | tee -a $RUN_LOG_FILE
|
31
|
+
|
32
|
+
# Capture Java’s exit code ([0] is Java; [1] is tee)
|
33
|
+
exit_code=${PIPESTATUS[0]}
|
34
|
+
echo "Exit code: $exit_code"
|
35
|
+
exit $exit_code
|
@@ -0,0 +1,9 @@
|
|
1
|
+
CL_APP_ENV="integrationnet"
|
2
|
+
CL_COLLATERAL=0
|
3
|
+
CL_L0_PEER_HTTP_PORT="9000"
|
4
|
+
CL_L0_PEER_HTTP_HOST="13.52.205.240"
|
5
|
+
CL_L0_PEER_ID="e2f4496e5872682d7a55aa06e507a58e96b5d48a5286bfdff7ed780fa464d9e789b2760ecd840f4cb3ee6e1c1d81b2ee844c88dbebf149b1084b7313eb680714"
|
6
|
+
CL_GLOBAL_L0_PEER_HTTP_PORT="9000"
|
7
|
+
CL_GLOBAL_L0_PEER_HOST="13.52.205.240"
|
8
|
+
CL_GLOBAL_L0_PEER_ID="e2f4496e5872682d7a55aa06e507a58e96b5d48a5286bfdff7ed780fa464d9e789b2760ecd840f4cb3ee6e1c1d81b2ee844c88dbebf149b1084b7313eb680714"
|
9
|
+
|
@@ -0,0 +1,8 @@
|
|
1
|
+
CL_APP_ENV="mainnet"
|
2
|
+
CL_COLLATERAL=25000000000000
|
3
|
+
CL_L0_PEER_HTTP_PORT="9000"
|
4
|
+
CL_L0_PEER_HTTP_HOST="52.53.46.33"
|
5
|
+
CL_L0_PEER_ID="e0c1ee6ec43510f0e16d2969a7a7c074a5c8cdb477c074fe9c32a9aad8cbc8ff1dff60bb81923e0db437d2686a9b65b86c403e6a21fa32b6acc4e61be4d70925"
|
6
|
+
CL_GLOBAL_L0_PEER_HTTP_PORT="9000"
|
7
|
+
CL_GLOBAL_L0_PEER_HOST="52.53.46.33"
|
8
|
+
CL_GLOBAL_L0_PEER_ID="e0c1ee6ec43510f0e16d2969a7a7c074a5c8cdb477c074fe9c32a9aad8cbc8ff1dff60bb81923e0db437d2686a9b65b86c403e6a21fa32b6acc4e61be4d70925"
|
@@ -0,0 +1,9 @@
|
|
1
|
+
CL_APP_ENV="testnet"
|
2
|
+
CL_COLLATERAL=0
|
3
|
+
CL_L0_PEER_HTTP_PORT="9000"
|
4
|
+
CL_L0_PEER_HTTP_HOST="52.8.132.193"
|
5
|
+
CL_L0_PEER_ID="e2f4496e5872682d7a55aa06e507a58e96b5d48a5286bfdff7ed780fa464d9e789b2760ecd840f4cb3ee6e1c1d81b2ee844c88dbebf149b1084b7313eb680714"
|
6
|
+
CL_GLOBAL_L0_PEER_HTTP_PORT="9000"
|
7
|
+
CL_GLOBAL_L0_PEER_HOST="52.8.132.193"
|
8
|
+
CL_GLOBAL_L0_PEER_ID="e2f4496e5872682d7a55aa06e507a58e96b5d48a5286bfdff7ed780fa464d9e789b2760ecd840f4cb3ee6e1c1d81b2ee844c88dbebf149b1084b7313eb680714"
|
9
|
+
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# --- resolve script dir ---
|
2
|
+
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
3
|
+
|
4
|
+
# --- build image ---
|
5
|
+
DOCKER_IMAGE_VERSION="${DOCKER_IMAGE_VERSION:-test}"
|
6
|
+
echo "Building tessellation image: constellationnetwork/tessellation:$DOCKER_IMAGE_VERSION"
|
7
|
+
docker build -t "constellationnetwork/tessellation:$DOCKER_IMAGE_VERSION" -f "$SCRIPT_DIR/../Dockerfile" .
|
@@ -0,0 +1,318 @@
|
|
1
|
+
#!/scripts/bash
|
2
|
+
|
3
|
+
# Break on any error
|
4
|
+
set -e
|
5
|
+
|
6
|
+
|
7
|
+
check_java_home() {
|
8
|
+
# echo "Checking if JAVA_HOME env is set"
|
9
|
+
|
10
|
+
if [ -z "$JAVA_HOME" ] || ! grep -q 'JAVA_HOME' "$HOME/.bashrc"; then
|
11
|
+
JAVA_HOME_LINE='export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(which java)")")")"'
|
12
|
+
echo "JAVA_HOME is not set. Attempting to set automatically"
|
13
|
+
echo "Please ensure the following line is in your ~/.bashrc or ~/.zshrc file:"
|
14
|
+
echo "Script will attempt to now add it for you and run it, but this only adds to .bashrc"
|
15
|
+
echo $JAVA_HOME_LINE
|
16
|
+
echo "$JAVA_HOME_LINE" >> $HOME/.bashrc
|
17
|
+
echo "Adding JAVA_HOME to current environment"
|
18
|
+
eval $JAVA_HOME_LINE
|
19
|
+
echo "JAVA_HOME is now set to: $JAVA_HOME"
|
20
|
+
fi
|
21
|
+
|
22
|
+
}
|
23
|
+
|
24
|
+
# Check and install Java 11
|
25
|
+
check_java() {
|
26
|
+
# echo "Checking for Java 11..."
|
27
|
+
if command -v java >/dev/null 2>&1; then
|
28
|
+
java_version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
|
29
|
+
# echo "Found Java version: $java_version"
|
30
|
+
if [[ "$java_version" == 11* ]] || [[ "$java_version" == 1.11* ]]; then
|
31
|
+
echo "✅ Java 11 is installed."
|
32
|
+
return 0
|
33
|
+
else
|
34
|
+
echo "⚠️ Java is installed but not version 11. Will attempt to install Java 11."
|
35
|
+
fi
|
36
|
+
else
|
37
|
+
echo "⚠️ Java not found. Will attempt to install Java 11."
|
38
|
+
fi
|
39
|
+
|
40
|
+
|
41
|
+
case "$(uname)" in
|
42
|
+
Linux)
|
43
|
+
if command -v apt >/dev/null 2>&1; then
|
44
|
+
echo "Installing Java 11 using apt..."
|
45
|
+
sudo apt install -y openjdk-11-jdk
|
46
|
+
elif command -v yum >/dev/null 2>&1; then
|
47
|
+
echo "Installing Java 11 using yum..."
|
48
|
+
sudo yum install -y java-11-openjdk-devel
|
49
|
+
else
|
50
|
+
echo "⚠️ Unsupported Linux distribution. Please install Java 11 manually."
|
51
|
+
return 1
|
52
|
+
fi
|
53
|
+
;;
|
54
|
+
Darwin)
|
55
|
+
if command -v brew >/dev/null 2>&1; then
|
56
|
+
echo "Installing Java 11 using Homebrew..."
|
57
|
+
brew tap adoptopenjdk/openjdk
|
58
|
+
brew install --cask adoptopenjdk11
|
59
|
+
else
|
60
|
+
echo "⚠️ Homebrew not found. Please install Java 11 manually."
|
61
|
+
return 1
|
62
|
+
fi
|
63
|
+
;;
|
64
|
+
MINGW*|MSYS*|CYGWIN*)
|
65
|
+
echo "On Windows, please install Java 11 manually from https://adoptopenjdk.net/"
|
66
|
+
return 1
|
67
|
+
;;
|
68
|
+
*)
|
69
|
+
echo "⚠️ Unsupported OS: $(uname). Please install Java 11 manually."
|
70
|
+
return 1
|
71
|
+
;;
|
72
|
+
esac
|
73
|
+
|
74
|
+
echo "✅ Java 11 installation complete."
|
75
|
+
return 0
|
76
|
+
}
|
77
|
+
|
78
|
+
# Check and install jq
|
79
|
+
check_jq() {
|
80
|
+
# echo "Checking for jq..."
|
81
|
+
if command -v jq >/dev/null 2>&1; then
|
82
|
+
echo "✅ jq is already installed."
|
83
|
+
return 0
|
84
|
+
fi
|
85
|
+
|
86
|
+
echo "⚠️ jq not found. Will attempt to install jq."
|
87
|
+
|
88
|
+
case "$(uname)" in
|
89
|
+
Linux)
|
90
|
+
if command -v apt >/dev/null 2>&1; then
|
91
|
+
echo "Installing jq using apt..."
|
92
|
+
sudo apt install -y jq
|
93
|
+
elif command -v yum >/dev/null 2>&1; then
|
94
|
+
echo "Installing jq using yum..."
|
95
|
+
sudo yum install -y jq
|
96
|
+
else
|
97
|
+
echo "⚠️ Unsupported Linux distribution. Please install jq manually."
|
98
|
+
return 1
|
99
|
+
fi
|
100
|
+
;;
|
101
|
+
Darwin)
|
102
|
+
if command -v brew >/dev/null 2>&1; then
|
103
|
+
echo "Installing jq using Homebrew..."
|
104
|
+
brew install jq
|
105
|
+
else
|
106
|
+
echo "⚠️ Homebrew not found. Please install jq manually."
|
107
|
+
return 1
|
108
|
+
fi
|
109
|
+
;;
|
110
|
+
MINGW*|MSYS*|CYGWIN*)
|
111
|
+
echo "On Windows, please install jq manually from https://stedolan.github.io/jq/download/"
|
112
|
+
return 1
|
113
|
+
;;
|
114
|
+
*)
|
115
|
+
echo "⚠️ Unsupported OS: $(uname). Please install jq manually."
|
116
|
+
return 1
|
117
|
+
;;
|
118
|
+
esac
|
119
|
+
|
120
|
+
echo "✅ jq installation complete."
|
121
|
+
return 0
|
122
|
+
}
|
123
|
+
|
124
|
+
# Check and install wget
|
125
|
+
check_wget() {
|
126
|
+
# echo "Checking for wget..."
|
127
|
+
if command -v wget >/dev/null 2>&1; then
|
128
|
+
echo "✅ wget is already installed."
|
129
|
+
return 0
|
130
|
+
fi
|
131
|
+
|
132
|
+
echo "⚠️ wget not found. Will attempt to install wget."
|
133
|
+
|
134
|
+
case "$(uname)" in
|
135
|
+
Linux)
|
136
|
+
if command -v apt >/dev/null 2>&1; then
|
137
|
+
echo "Installing wget using apt..."
|
138
|
+
sudo apt update
|
139
|
+
sudo apt install -y wget
|
140
|
+
elif command -v yum >/dev/null 2>&1; then
|
141
|
+
echo "Installing wget using yum..."
|
142
|
+
sudo yum install -y wget
|
143
|
+
else
|
144
|
+
echo "⚠️ Unsupported Linux distribution. Please install wget manually."
|
145
|
+
return 1
|
146
|
+
fi
|
147
|
+
;;
|
148
|
+
Darwin)
|
149
|
+
if command -v brew >/dev/null 2>&1; then
|
150
|
+
echo "Installing wget using Homebrew..."
|
151
|
+
brew install wget
|
152
|
+
else
|
153
|
+
echo "⚠️ Homebrew not found. Please install wget manually."
|
154
|
+
return 1
|
155
|
+
fi
|
156
|
+
;;
|
157
|
+
MINGW*|MSYS*|CYGWIN*)
|
158
|
+
echo "On Windows, please install wget manually."
|
159
|
+
return 1
|
160
|
+
;;
|
161
|
+
*)
|
162
|
+
echo "⚠️ Unsupported OS: $(uname). Please install wget manually."
|
163
|
+
return 1
|
164
|
+
;;
|
165
|
+
esac
|
166
|
+
|
167
|
+
echo "✅ wget installation complete."
|
168
|
+
return 0
|
169
|
+
}
|
170
|
+
|
171
|
+
# Check and install curl
|
172
|
+
check_curl() {
|
173
|
+
# echo "Checking for curl..."
|
174
|
+
if command -v curl >/dev/null 2>&1; then
|
175
|
+
echo "✅ curl is already installed."
|
176
|
+
return 0
|
177
|
+
fi
|
178
|
+
|
179
|
+
echo "⚠️ curl not found. Will attempt to install curl."
|
180
|
+
|
181
|
+
case "$(uname)" in
|
182
|
+
Linux)
|
183
|
+
if command -v apt >/dev/null 2>&1; then
|
184
|
+
echo "Installing curl using apt..."
|
185
|
+
sudo apt update
|
186
|
+
sudo apt install -y curl
|
187
|
+
elif command -v yum >/dev/null 2>&1; then
|
188
|
+
echo "Installing curl using yum..."
|
189
|
+
sudo yum install -y curl
|
190
|
+
else
|
191
|
+
echo "⚠️ Unsupported Linux distribution. Please install curl manually."
|
192
|
+
return 1
|
193
|
+
fi
|
194
|
+
;;
|
195
|
+
Darwin)
|
196
|
+
if command -v brew >/dev/null 2>&1; then
|
197
|
+
echo "Installing curl using Homebrew..."
|
198
|
+
brew install curl
|
199
|
+
else
|
200
|
+
echo "⚠️ Homebrew not found. Please install curl manually."
|
201
|
+
return 1
|
202
|
+
fi
|
203
|
+
;;
|
204
|
+
MINGW*|MSYS*|CYGWIN*)
|
205
|
+
echo "On Windows, please install curl manually."
|
206
|
+
return 1
|
207
|
+
;;
|
208
|
+
*)
|
209
|
+
echo "⚠️ Unsupported OS: $(uname). Please install curl manually."
|
210
|
+
return 1
|
211
|
+
;;
|
212
|
+
esac
|
213
|
+
|
214
|
+
echo "✅ curl installation complete."
|
215
|
+
return 0
|
216
|
+
}
|
217
|
+
|
218
|
+
# Check and install Docker Engine
|
219
|
+
check_docker() {
|
220
|
+
# echo "Checking for Docker..."
|
221
|
+
if command -v docker >/dev/null 2>&1; then
|
222
|
+
echo "✅ Docker is already installed."
|
223
|
+
return 0
|
224
|
+
fi
|
225
|
+
|
226
|
+
echo "⚠️ Docker not found. Will attempt to install Docker."
|
227
|
+
|
228
|
+
case "$(uname)" in
|
229
|
+
Linux)
|
230
|
+
if command -v apt >/dev/null 2>&1; then
|
231
|
+
echo "Installing Docker using script..."
|
232
|
+
curl -fsSL https://get.docker.com -o get-docker.sh
|
233
|
+
sudo sh ./get-docker.sh
|
234
|
+
sudo usermod -aG docker $USER
|
235
|
+
newgrp docker
|
236
|
+
echo "Docker installed. You may need to log out and back in for group changes to take effect."
|
237
|
+
else
|
238
|
+
echo "⚠️ Unsupported Linux distribution. Please install Docker manually."
|
239
|
+
return 1
|
240
|
+
fi
|
241
|
+
;;
|
242
|
+
Darwin)
|
243
|
+
echo "Please install Docker Desktop manually from https://www.docker.com/products/docker-desktop"
|
244
|
+
return 1
|
245
|
+
;;
|
246
|
+
MINGW*|MSYS*|CYGWIN*)
|
247
|
+
echo "On Windows, please install Docker Desktop manually from https://www.docker.com/products/docker-desktop"
|
248
|
+
return 1
|
249
|
+
;;
|
250
|
+
*)
|
251
|
+
echo "⚠️ Unsupported OS: $(uname). Please install Docker manually."
|
252
|
+
return 1
|
253
|
+
;;
|
254
|
+
esac
|
255
|
+
|
256
|
+
echo "✅ Docker installation complete."
|
257
|
+
return 0
|
258
|
+
}
|
259
|
+
|
260
|
+
# Check and install Node.js
|
261
|
+
check_node() {
|
262
|
+
# echo "Checking for Node.js..."
|
263
|
+
if [ -d "$HOME/.nvm" ]; then
|
264
|
+
echo "✅ Node.js is already installed."
|
265
|
+
return 0
|
266
|
+
fi
|
267
|
+
|
268
|
+
echo "⚠️ Node.js not found. Will attempt to install Node.js."
|
269
|
+
|
270
|
+
case "$(uname)" in
|
271
|
+
Linux)
|
272
|
+
echo "Installing Node.js using nvm..."
|
273
|
+
# NPM
|
274
|
+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
|
275
|
+
|
276
|
+
# Load nvm without needing to open a new terminal
|
277
|
+
export NVM_DIR="$HOME/.nvm"
|
278
|
+
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
279
|
+
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
280
|
+
|
281
|
+
# Install node
|
282
|
+
nvm install node
|
283
|
+
|
284
|
+
# Verify installation
|
285
|
+
echo "Node version: $(node -v)"
|
286
|
+
echo "NPM version: $(npm -v)"
|
287
|
+
echo "NPX version: $(npx -v)"
|
288
|
+
;;
|
289
|
+
Darwin)
|
290
|
+
if command -v brew >/dev/null 2>&1; then
|
291
|
+
echo "Installing Node.js using Homebrew..."
|
292
|
+
brew install node
|
293
|
+
else
|
294
|
+
echo "⚠️ Homebrew not found. Please install Node.js manually."
|
295
|
+
return 1
|
296
|
+
fi
|
297
|
+
;;
|
298
|
+
*)
|
299
|
+
echo "⚠️ No Node.js installation needed for this OS: $(uname)"
|
300
|
+
return 0
|
301
|
+
;;
|
302
|
+
esac
|
303
|
+
|
304
|
+
echo "✅ Node.js installation complete."
|
305
|
+
return 0
|
306
|
+
}
|
307
|
+
|
308
|
+
# Run all checks
|
309
|
+
echo "🔍 Checking and installing required dependencies..."
|
310
|
+
check_java
|
311
|
+
check_java_home
|
312
|
+
check_jq
|
313
|
+
check_wget
|
314
|
+
check_curl
|
315
|
+
check_docker
|
316
|
+
check_node
|
317
|
+
|
318
|
+
echo "All dependency checks completed."
|
@@ -0,0 +1,149 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -Eeuo pipefail
|
3
|
+
IFS=$'\n\t'
|
4
|
+
|
5
|
+
usage() {
|
6
|
+
echo "Usage: $0 <network>"
|
7
|
+
echo " network: mainnet | testnet | intnet | integrationnet"
|
8
|
+
exit 1
|
9
|
+
}
|
10
|
+
|
11
|
+
require() {
|
12
|
+
local cmd="$1"
|
13
|
+
command -v "$cmd" >/dev/null 2>&1 || { echo "Error: '$cmd' is required"; exit 1; }
|
14
|
+
}
|
15
|
+
|
16
|
+
require curl
|
17
|
+
require jq
|
18
|
+
|
19
|
+
NETWORK="${1:-}"
|
20
|
+
[[ -z "${NETWORK}" ]] && { echo "No network specified."; usage; }
|
21
|
+
|
22
|
+
case "$NETWORK" in
|
23
|
+
mainnet|testnet|integrationnet) ;;
|
24
|
+
intnet) NETWORK="integrationnet" ;;
|
25
|
+
*) echo "Invalid network: $NETWORK"; usage ;;
|
26
|
+
esac
|
27
|
+
|
28
|
+
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
29
|
+
|
30
|
+
# Set variables
|
31
|
+
REPO="Constellation-Labs/tessellation"
|
32
|
+
ASSETS=("cl-node.jar" "cl-dag-l1.jar" "cl-keytool.jar" "cl-wallet.jar" "mainnet-seedlist") # "currency-l1.jar" "metagraph-l0.jar")
|
33
|
+
ASSET_NAMES=("gl0.jar" "gl1.jar" "keytool.jar" "wallet.jar" "seedlist")
|
34
|
+
OUTPUT_DIR="$SCRIPT_DIR/../dist" # Directory to save the downloaded assets
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
# load the version from the version file
|
39
|
+
if [ -f "$OUTPUT_DIR/version.sh" ]; then
|
40
|
+
source "$OUTPUT_DIR/version.sh"
|
41
|
+
# if argument NETWORK is different from current RELEASE_NETWORK, force download of latest release
|
42
|
+
if [ -n "$NETWORK" ] && [ "$NETWORK" != "$RELEASE_NETWORK_TYPE" ]; then
|
43
|
+
echo "Changing network from $RELEASE_NETWORK_TYPE to $NETWORK"
|
44
|
+
RELEASE_NETWORK_TYPE=""
|
45
|
+
rm -rf $OUTPUT_DIR
|
46
|
+
else
|
47
|
+
NETWORK="$RELEASE_NETWORK_TYPE"
|
48
|
+
fi
|
49
|
+
else
|
50
|
+
bash "$SCRIPT_DIR/install-dependencies.sh"
|
51
|
+
RELEASE_NETWORK_TYPE=""
|
52
|
+
fi
|
53
|
+
|
54
|
+
# Check network version
|
55
|
+
# Resolve the load balancer URL based on the network and get the release tag
|
56
|
+
LB_HTTP="https://l0-lb-$NETWORK.constellationnetwork.io"
|
57
|
+
RELEASE=$(curl -s $LB_HTTP/node/info | jq -r '.version')
|
58
|
+
RELEASE_TAG="v$RELEASE"
|
59
|
+
|
60
|
+
if [ -n "$RELEASE_NETWORK_TYPE" ] && [ "$RELEASE" != "$RELEASE_NETWORK_VERSION" ]; then
|
61
|
+
echo "Current release version ($RELEASE) is different from the version in the version file ($RELEASE_NETWORK_VERSION)."
|
62
|
+
RELEASE_NETWORK_TYPE=""
|
63
|
+
rm -rf $OUTPUT_DIR
|
64
|
+
fi
|
65
|
+
|
66
|
+
# Create output directory
|
67
|
+
mkdir -p "$OUTPUT_DIR"
|
68
|
+
|
69
|
+
NETWORK_UC=$(echo "$NETWORK" | tr '[:lower:]' '[:upper:]')
|
70
|
+
|
71
|
+
if [ -n "$RELEASE_NETWORK_TYPE" ]; then
|
72
|
+
echo "Already using the latest release $NETWORK_UC :: $RELEASE"
|
73
|
+
exit 0
|
74
|
+
fi
|
75
|
+
|
76
|
+
echo "Installing latest release: $NETWORK_UC :: $RELEASE"
|
77
|
+
|
78
|
+
|
79
|
+
# Resolve the tessellation release download URL based on the network
|
80
|
+
if [ "$NETWORK" == "testnet" ]; then
|
81
|
+
DOWNLOAD_URL_PREFIX="https://constellationlabs-dag.s3.us-west-1.amazonaws.com/testnet/tessellation/$RELEASE"
|
82
|
+
else
|
83
|
+
DOWNLOAD_URL_PREFIX="https://github.com/Constellation-Labs/tessellation/releases/download/$RELEASE_TAG"
|
84
|
+
fi
|
85
|
+
|
86
|
+
DOWNLOAD_URL="$DOWNLOAD_URL_PREFIX/${ASSETS[0]}"
|
87
|
+
|
88
|
+
# check if first file exists at url
|
89
|
+
if ! curl --output /dev/null --silent --head --fail "$DOWNLOAD_URL"; then
|
90
|
+
echo "Error: '$DOWNLOAD_URL' does not exist in the repository."
|
91
|
+
exit 1
|
92
|
+
fi
|
93
|
+
|
94
|
+
download_asset() {
|
95
|
+
ASSET_NAME="$1"
|
96
|
+
OUTPUT_NAME="$2"
|
97
|
+
|
98
|
+
# Get the asset download URL
|
99
|
+
DOWNLOAD_URL="$DOWNLOAD_URL_PREFIX/$ASSET_NAME"
|
100
|
+
|
101
|
+
# Download the asset
|
102
|
+
echo "$ASSET_NAME -> $OUTPUT_NAME"
|
103
|
+
curl -s -L -H "Accept: application/octet-stream" -o "$OUTPUT_DIR/$OUTPUT_NAME" "$DOWNLOAD_URL"
|
104
|
+
|
105
|
+
if [ $? -ne 0 ]; then
|
106
|
+
echo "Failed to download asset '$ASSET_NAME'."
|
107
|
+
return 1
|
108
|
+
fi
|
109
|
+
}
|
110
|
+
|
111
|
+
# Download each asset
|
112
|
+
for i in "${!ASSETS[@]}"; do
|
113
|
+
# skip mainnet seedlist if off-mainnet
|
114
|
+
if [ "$NETWORK" != "mainnet" ] && [ "${ASSETS[i]}" = "mainnet-seedlist" ]; then
|
115
|
+
continue
|
116
|
+
fi
|
117
|
+
download_asset "${ASSETS[i]}" "${ASSET_NAMES[i]}"
|
118
|
+
done
|
119
|
+
|
120
|
+
|
121
|
+
# if network is testnet or intnet get seedlist
|
122
|
+
if [ "$NETWORK" == "testnet" ] || [ "$NETWORK" == "integrationnet" ]; then
|
123
|
+
SEEDLIST_URL="https://constellationlabs-dag.s3.us-west-1.amazonaws.com/$NETWORK-seedlist"
|
124
|
+
# Download the seedlist text file and name it "seedlist"
|
125
|
+
curl -s -L -H "Accept: application/octet-stream" -o "$OUTPUT_DIR/seedlist" "$SEEDLIST_URL"
|
126
|
+
if [ $? -ne 0 ]; then
|
127
|
+
echo "Failed to download seedlist from '$SEEDLIST_URL'."
|
128
|
+
exit 1
|
129
|
+
fi
|
130
|
+
echo "$NETWORK-seedlist -> seedlist"
|
131
|
+
fi
|
132
|
+
|
133
|
+
# move seedlist to project root
|
134
|
+
if [ -f "$OUTPUT_DIR/seedlist" ]; then
|
135
|
+
mv "$OUTPUT_DIR/seedlist" "$OUTPUT_DIR/../seedlist"
|
136
|
+
fi
|
137
|
+
|
138
|
+
write_version_file() {
|
139
|
+
local tmp
|
140
|
+
tmp="$(mktemp "${OUTPUT_DIR}/version.sh.XXXX")"
|
141
|
+
{
|
142
|
+
echo "RELEASE_NETWORK_TYPE=\"${NETWORK}\""
|
143
|
+
echo "RELEASE_NETWORK_VERSION=\"${RELEASE}\""
|
144
|
+
} > "$tmp"
|
145
|
+
chmod 0644 "$tmp"
|
146
|
+
mv "$tmp" "${OUTPUT_DIR}/version.sh"
|
147
|
+
}
|
148
|
+
|
149
|
+
write_version_file
|