@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.
Files changed (81) hide show
  1. package/README.md +213 -0
  2. package/bin/dev.cmd +3 -0
  3. package/bin/dev.js +19 -0
  4. package/bin/run.cmd +3 -0
  5. package/bin/run.js +15 -0
  6. package/dist/checks/check-hardware.d.ts +3 -0
  7. package/dist/checks/check-hardware.js +50 -0
  8. package/dist/checks/check-initial-setup.d.ts +3 -0
  9. package/dist/checks/check-initial-setup.js +15 -0
  10. package/dist/checks/check-layers.d.ts +7 -0
  11. package/dist/checks/check-layers.js +87 -0
  12. package/dist/checks/check-network.d.ts +6 -0
  13. package/dist/checks/check-network.js +72 -0
  14. package/dist/checks/check-project.d.ts +6 -0
  15. package/dist/checks/check-project.js +108 -0
  16. package/dist/clm.d.ts +9 -0
  17. package/dist/clm.js +30 -0
  18. package/dist/commands/config/get.d.ts +9 -0
  19. package/dist/commands/config/get.js +37 -0
  20. package/dist/commands/config/set.d.ts +11 -0
  21. package/dist/commands/config/set.js +41 -0
  22. package/dist/commands/config.d.ts +6 -0
  23. package/dist/commands/config.js +65 -0
  24. package/dist/commands/info.d.ts +6 -0
  25. package/dist/commands/info.js +32 -0
  26. package/dist/commands/logs.d.ts +12 -0
  27. package/dist/commands/logs.js +28 -0
  28. package/dist/commands/restart.d.ts +6 -0
  29. package/dist/commands/restart.js +25 -0
  30. package/dist/commands/shutdown.d.ts +6 -0
  31. package/dist/commands/shutdown.js +18 -0
  32. package/dist/commands/status.d.ts +6 -0
  33. package/dist/commands/status.js +22 -0
  34. package/dist/commands/test.d.ts +6 -0
  35. package/dist/commands/test.js +13 -0
  36. package/dist/config-store.d.ts +109 -0
  37. package/dist/config-store.js +151 -0
  38. package/dist/helpers/config-helper.d.ts +14 -0
  39. package/dist/helpers/config-helper.js +39 -0
  40. package/dist/helpers/docker-helper.d.ts +7 -0
  41. package/dist/helpers/docker-helper.js +37 -0
  42. package/dist/helpers/env-templates.d.ts +4 -0
  43. package/dist/helpers/env-templates.js +33 -0
  44. package/dist/helpers/github-helper.d.ts +3 -0
  45. package/dist/helpers/github-helper.js +13 -0
  46. package/dist/helpers/key-file-helper.d.ts +9 -0
  47. package/dist/helpers/key-file-helper.js +136 -0
  48. package/dist/helpers/project-helper.d.ts +9 -0
  49. package/dist/helpers/project-helper.js +85 -0
  50. package/dist/helpers/prompt-helper.d.ts +8 -0
  51. package/dist/helpers/prompt-helper.js +135 -0
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.js +1 -0
  54. package/dist/info/cluster-info.d.ts +1 -0
  55. package/dist/info/cluster-info.js +16 -0
  56. package/dist/services/cluster-service.d.ts +9 -0
  57. package/dist/services/cluster-service.js +67 -0
  58. package/dist/services/fastforward-service.d.ts +14 -0
  59. package/dist/services/fastforward-service.js +84 -0
  60. package/dist/services/node-service.d.ts +10 -0
  61. package/dist/services/node-service.js +117 -0
  62. package/dist/services/shell-service.d.ts +9 -0
  63. package/dist/services/shell-service.js +53 -0
  64. package/dist/styles.d.ts +4 -0
  65. package/dist/styles.js +5 -0
  66. package/dist/types.d.ts +22 -0
  67. package/dist/types.js +1 -0
  68. package/oclif.manifest.json +241 -0
  69. package/package.json +98 -0
  70. package/projects/hypergraph/Dockerfile +41 -0
  71. package/projects/hypergraph/docker-compose.yml +54 -0
  72. package/projects/hypergraph/entrypoint.sh +35 -0
  73. package/projects/hypergraph/layers/gl1.env +3 -0
  74. package/projects/hypergraph/networks/integrationnet.env +9 -0
  75. package/projects/hypergraph/networks/mainnet.env +8 -0
  76. package/projects/hypergraph/networks/testnet.env +9 -0
  77. package/projects/hypergraph/pilot.env +2 -0
  78. package/projects/hypergraph/scripts/docker-build.sh +7 -0
  79. package/projects/hypergraph/scripts/install-dependencies.sh +318 -0
  80. package/projects/hypergraph/scripts/install.sh +149 -0
  81. 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,3 @@
1
+ CL_PUBLIC_HTTP_PORT=9010
2
+ CL_P2P_HTTP_PORT=9011
3
+ CL_CLI_HTTP_PORT=9012
@@ -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,2 @@
1
+ PROJECT_NAME=hypergraph
2
+ DOCKER_IMAGE_VERSION=test
@@ -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