@tonk/cli 0.1.13 → 0.2.0
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 +84 -5
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +9 -9
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/hello/index.d.ts +3 -0
- package/dist/commands/hello/index.d.ts.map +1 -0
- package/dist/commands/hello/index.js +291 -0
- package/dist/commands/hello/index.js.map +1 -0
- package/dist/commands/hello.d.ts.map +1 -1
- package/dist/commands/hello.js +68 -31
- package/dist/commands/hello.js.map +1 -1
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +66 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/kill.d.ts +3 -0
- package/dist/commands/kill.d.ts.map +1 -0
- package/dist/commands/kill.js +38 -0
- package/dist/commands/kill.js.map +1 -0
- package/dist/commands/ls.d.ts +3 -0
- package/dist/commands/ls.d.ts.map +1 -0
- package/dist/commands/ls.js +31 -0
- package/dist/commands/ls.js.map +1 -0
- package/dist/commands/ps.d.ts +3 -0
- package/dist/commands/ps.d.ts.map +1 -0
- package/dist/commands/ps.js +34 -0
- package/dist/commands/ps.js.map +1 -0
- package/dist/commands/push.d.ts +3 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +150 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/start.d.ts +3 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +43 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/tonk.js +71 -15
- package/dist/tonk.js.map +1 -1
- package/package.json +13 -3
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -338
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/deploy.d.ts +0 -3
- package/dist/commands/deploy.d.ts.map +0 -1
- package/dist/commands/deploy.js +0 -460
- package/dist/commands/deploy.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -3
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js +0 -71
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -3
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -146
- package/dist/commands/serve.js.map +0 -1
package/dist/commands/deploy.js
DELETED
|
@@ -1,460 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import fs from 'fs';
|
|
4
|
-
import { execSync } from 'child_process';
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import { createRequire } from 'module';
|
|
7
|
-
import readline from 'readline';
|
|
8
|
-
// Create readline interface for user input
|
|
9
|
-
const rl = readline.createInterface({
|
|
10
|
-
input: process.stdin,
|
|
11
|
-
output: process.stdout,
|
|
12
|
-
});
|
|
13
|
-
// Promise-based prompt function
|
|
14
|
-
const promptUser = (question) => {
|
|
15
|
-
return new Promise(resolve => {
|
|
16
|
-
rl.question(question, answer => {
|
|
17
|
-
resolve(answer);
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
export const deployCommand = new Command('deploy')
|
|
22
|
-
.description('Deploy a Tonk app to EC2')
|
|
23
|
-
.option('-i, --instance <address>', 'EC2 instance address')
|
|
24
|
-
.option('-k, --key <path>', 'Path to SSH key file')
|
|
25
|
-
.option('-u, --user <name>', 'SSH username', 'ec2-user')
|
|
26
|
-
.option('-t, --token <token>', 'Pinggy.io access token')
|
|
27
|
-
.option('-b, --backblaze', 'Enable Backblaze B2 storage for document backup')
|
|
28
|
-
.option('-f, --filesystem', 'Enable filesystem storage for document backup')
|
|
29
|
-
.action(async (options) => {
|
|
30
|
-
const projectRoot = process.cwd();
|
|
31
|
-
const configFilePath = path.join(projectRoot, 'tonk.config.json');
|
|
32
|
-
// Check if config file exists
|
|
33
|
-
if (!fs.existsSync(configFilePath)) {
|
|
34
|
-
console.error(chalk.red(`
|
|
35
|
-
Error: No configuration file found at ${configFilePath}
|
|
36
|
-
|
|
37
|
-
Please run 'tonk config' first to set up your EC2 instance and create a configuration file.
|
|
38
|
-
You can provision a new EC2 instance with 'tonk config --provision' or configure an existing one.
|
|
39
|
-
`));
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
// Load settings from config file
|
|
43
|
-
let configData;
|
|
44
|
-
try {
|
|
45
|
-
configData = JSON.parse(fs.readFileSync(configFilePath, 'utf8'));
|
|
46
|
-
// Use config values as defaults if not provided in command options
|
|
47
|
-
if (!options.instance && configData.ec2 && configData.ec2.instance) {
|
|
48
|
-
options.instance = configData.ec2.instance;
|
|
49
|
-
console.log(chalk.blue(`Using EC2 instance from config: ${options.instance}`));
|
|
50
|
-
}
|
|
51
|
-
if (!options.key && configData.ec2 && configData.ec2.keyPath) {
|
|
52
|
-
options.key = configData.ec2.keyPath;
|
|
53
|
-
console.log(chalk.blue(`Using SSH key from config: ${options.key}`));
|
|
54
|
-
}
|
|
55
|
-
if (!options.user && configData.ec2 && configData.ec2.user) {
|
|
56
|
-
options.user = configData.ec2.user;
|
|
57
|
-
console.log(chalk.blue(`Using SSH user from config: ${options.user}`));
|
|
58
|
-
}
|
|
59
|
-
// Check for Pinggy token in config
|
|
60
|
-
if (!options.token && configData.pinggy && configData.pinggy.token) {
|
|
61
|
-
options.token = configData.pinggy.token;
|
|
62
|
-
console.log(chalk.blue(`Using Pinggy token from config`));
|
|
63
|
-
}
|
|
64
|
-
// Check if Backblaze is already configured
|
|
65
|
-
if (configData.backblaze && configData.backblaze.enabled) {
|
|
66
|
-
options.backblaze = true;
|
|
67
|
-
console.log(chalk.blue(`Backblaze B2 backup enabled from config`));
|
|
68
|
-
}
|
|
69
|
-
// Check if Filesystem storage is already configured
|
|
70
|
-
if (configData.filesystem && configData.filesystem.enabled) {
|
|
71
|
-
options.filesystem = true;
|
|
72
|
-
if (configData.filesystem.storagePath) {
|
|
73
|
-
options.filesystemPath = configData.filesystem.storagePath;
|
|
74
|
-
}
|
|
75
|
-
console.log(chalk.blue(`Filesystem storage enabled from config`));
|
|
76
|
-
}
|
|
77
|
-
// Check if primary storage is already configured
|
|
78
|
-
if (configData.primaryStorage) {
|
|
79
|
-
options.primaryStorage = configData.primaryStorage;
|
|
80
|
-
console.log(chalk.blue(`Primary storage set to ${options.primaryStorage} from config`));
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
console.error(chalk.red(`Error: Could not parse config file at ${configFilePath}. Please run 'tonk config' again.`));
|
|
85
|
-
process.exit(1);
|
|
86
|
-
}
|
|
87
|
-
// Verify required options are present after loading from config
|
|
88
|
-
if (!options.instance) {
|
|
89
|
-
console.error(chalk.red('Error: EC2 instance address not found in config file and not provided as an option.'));
|
|
90
|
-
console.error(chalk.yellow("Please run 'tonk config' again."));
|
|
91
|
-
process.exit(1);
|
|
92
|
-
}
|
|
93
|
-
if (!options.key || !fs.existsSync(options.key)) {
|
|
94
|
-
console.error(chalk.red('Error: Valid SSH key file path not found in config file and not provided as an option.'));
|
|
95
|
-
console.error(chalk.yellow("Please run 'tonk config' again."));
|
|
96
|
-
process.exit(1);
|
|
97
|
-
}
|
|
98
|
-
// If backblaze option wasn't explicitly set
|
|
99
|
-
// ask the user if they want to enable it
|
|
100
|
-
if (options.backblaze === undefined) {
|
|
101
|
-
const enableBackblaze = await promptUser(chalk.yellow('Would you like to enable Backblaze B2 backup for your document data? (yes/no): '));
|
|
102
|
-
options.backblaze = enableBackblaze
|
|
103
|
-
.toLowerCase()
|
|
104
|
-
.startsWith('y');
|
|
105
|
-
if (options.backblaze) {
|
|
106
|
-
console.log(chalk.green('Backblaze B2 backup will be enabled'));
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
console.log(chalk.blue('Backblaze B2 backup will not be enabled'));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// If filesystem option wasn't explicitly set
|
|
113
|
-
// ask the user if they want to enable it
|
|
114
|
-
if (options.filesystem === undefined) {
|
|
115
|
-
const enableFilesystem = await promptUser(chalk.yellow('Would you like to enable filesystem storage for your document data? (yes/no): '));
|
|
116
|
-
options.filesystem = enableFilesystem
|
|
117
|
-
.toLowerCase()
|
|
118
|
-
.startsWith('y');
|
|
119
|
-
if (options.filesystem) {
|
|
120
|
-
console.log(chalk.green('Filesystem storage will be enabled'));
|
|
121
|
-
// Ask for storage path if not provided
|
|
122
|
-
if (!options.filesystemPath &&
|
|
123
|
-
(!configData.filesystem || !configData.filesystem.storagePath)) {
|
|
124
|
-
options.filesystemPath = (await promptUser(chalk.yellow(`Enter path for filesystem storage (default: ~/tonk-data): `)));
|
|
125
|
-
// Use default if empty
|
|
126
|
-
if (!options.filesystemPath.trim()) {
|
|
127
|
-
options.filesystemPath = '~/tonk-data';
|
|
128
|
-
}
|
|
129
|
-
// If path starts with / and is not in the user's home directory, modify it
|
|
130
|
-
if (options.filesystemPath.startsWith('/') &&
|
|
131
|
-
!options.filesystemPath.startsWith('/home/') &&
|
|
132
|
-
!options.filesystemPath.startsWith('~/')) {
|
|
133
|
-
const originalPath = options.filesystemPath;
|
|
134
|
-
options.filesystemPath = `~/tonk-data${options.filesystemPath}`;
|
|
135
|
-
console.log(chalk.yellow(`Storage path changed from ${originalPath} to ${options.filesystemPath} to avoid permission issues`));
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
// Ask for sync interval
|
|
139
|
-
if (!configData.filesystem || !configData.filesystem.syncInterval) {
|
|
140
|
-
const syncIntervalInput = await promptUser(chalk.yellow(`Enter sync interval in milliseconds (default: 30000 - 30 seconds): `));
|
|
141
|
-
// Parse the input or use default
|
|
142
|
-
options.filesystemSyncInterval = syncIntervalInput.trim()
|
|
143
|
-
? parseInt(syncIntervalInput, 10)
|
|
144
|
-
: 30000;
|
|
145
|
-
if (isNaN(options.filesystemSyncInterval) ||
|
|
146
|
-
options.filesystemSyncInterval < 1000) {
|
|
147
|
-
console.log(chalk.yellow('Invalid sync interval. Using default of 30000ms (30 seconds).'));
|
|
148
|
-
options.filesystemSyncInterval = 30000;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
// Ask about creating missing directories
|
|
152
|
-
if (!configData.filesystem ||
|
|
153
|
-
configData.filesystem.createIfMissing === undefined) {
|
|
154
|
-
const createMissingInput = await promptUser(chalk.yellow(`Create missing directories automatically? (yes/no, default: yes): `));
|
|
155
|
-
// Default to true if empty or starts with 'y'
|
|
156
|
-
const inputStr = createMissingInput.toLowerCase().trim();
|
|
157
|
-
options.filesystemCreateMissing =
|
|
158
|
-
!inputStr || inputStr.startsWith('y');
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
console.log(chalk.blue('Filesystem storage will not be enabled'));
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
// If both storage options are enabled, ask for primary storage
|
|
166
|
-
if (options.backblaze && options.filesystem && !options.primaryStorage) {
|
|
167
|
-
const primaryStorage = (await promptUser(chalk.yellow('Which storage should be primary? (backblaze/filesystem): ')));
|
|
168
|
-
if (primaryStorage.toLowerCase().startsWith('f')) {
|
|
169
|
-
options.primaryStorage = 'filesystem';
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
options.primaryStorage = 'backblaze';
|
|
173
|
-
}
|
|
174
|
-
console.log(chalk.green(`Primary storage set to ${options.primaryStorage}`));
|
|
175
|
-
}
|
|
176
|
-
// Set up Backblaze if requested and not already configured
|
|
177
|
-
if (options.backblaze &&
|
|
178
|
-
(!configData.backblaze || !configData.backblaze.enabled)) {
|
|
179
|
-
console.log(chalk.blue('Setting up Backblaze B2 backup for Automerge documents...'));
|
|
180
|
-
const b2KeyId = await promptUser(chalk.yellow('Enter your Backblaze B2 Application Key ID: '));
|
|
181
|
-
const b2Key = await promptUser(chalk.yellow('Enter your Backblaze B2 Application Key: '));
|
|
182
|
-
const b2BucketId = await promptUser(chalk.yellow('Enter your Backblaze B2 Bucket ID: '));
|
|
183
|
-
const b2BucketName = await promptUser(chalk.yellow('Enter your Backblaze B2 Bucket Name: '));
|
|
184
|
-
// Update config
|
|
185
|
-
configData.backblaze = {
|
|
186
|
-
enabled: true,
|
|
187
|
-
applicationKeyId: b2KeyId,
|
|
188
|
-
applicationKey: b2Key,
|
|
189
|
-
bucketId: b2BucketId,
|
|
190
|
-
bucketName: b2BucketName,
|
|
191
|
-
syncInterval: 5 * 60 * 1000, // 5 minutes default
|
|
192
|
-
maxRetries: 3,
|
|
193
|
-
};
|
|
194
|
-
// Save updated config
|
|
195
|
-
fs.writeFileSync(configFilePath, JSON.stringify(configData, null, 2), 'utf8');
|
|
196
|
-
console.log(chalk.green('Backblaze B2 configuration saved'));
|
|
197
|
-
}
|
|
198
|
-
// Set up Filesystem storage if requested and not already configured
|
|
199
|
-
if (options.filesystem &&
|
|
200
|
-
(!configData.filesystem || !configData.filesystem.enabled)) {
|
|
201
|
-
console.log(chalk.blue('Setting up Filesystem storage for Automerge documents...'));
|
|
202
|
-
// Update config with all the options
|
|
203
|
-
configData.filesystem = {
|
|
204
|
-
enabled: true,
|
|
205
|
-
storagePath: options.filesystemPath || '~/tonk-data',
|
|
206
|
-
syncInterval: options.filesystemSyncInterval || 30 * 1000, // 30 seconds default
|
|
207
|
-
createIfMissing: options.filesystemCreateMissing !== false, // default to true
|
|
208
|
-
};
|
|
209
|
-
// Save updated config
|
|
210
|
-
fs.writeFileSync(configFilePath, JSON.stringify(configData, null, 2), 'utf8');
|
|
211
|
-
console.log(chalk.green('Filesystem storage configuration saved'));
|
|
212
|
-
}
|
|
213
|
-
// Set primary storage if both storage types are enabled
|
|
214
|
-
if (options.backblaze && options.filesystem) {
|
|
215
|
-
configData.primaryStorage = options.primaryStorage || 'backblaze';
|
|
216
|
-
// Save updated config
|
|
217
|
-
fs.writeFileSync(configFilePath, JSON.stringify(configData, null, 2), 'utf8');
|
|
218
|
-
console.log(chalk.green(`Primary storage set to ${configData.primaryStorage}`));
|
|
219
|
-
}
|
|
220
|
-
try {
|
|
221
|
-
// 1. Build the application
|
|
222
|
-
console.log(chalk.blue('Building application...'));
|
|
223
|
-
execSync('npm run build', { cwd: projectRoot, stdio: 'inherit' });
|
|
224
|
-
// 2. Copy Dockerfile if it doesn't exist
|
|
225
|
-
const dockerfilePath = path.join(projectRoot, 'Dockerfile');
|
|
226
|
-
if (!fs.existsSync(dockerfilePath)) {
|
|
227
|
-
const require = createRequire(import.meta.url);
|
|
228
|
-
const templatePath = path.join(require.resolve('@tonk/server/package.json'), '..', 'templates', 'Dockerfile');
|
|
229
|
-
fs.copyFileSync(templatePath, dockerfilePath);
|
|
230
|
-
console.log(chalk.green('Created Dockerfile from template'));
|
|
231
|
-
}
|
|
232
|
-
// 3. Package the application
|
|
233
|
-
console.log(chalk.blue('Packaging application...'));
|
|
234
|
-
// Create a tarball
|
|
235
|
-
const packOutput = execSync('npm pack', {
|
|
236
|
-
cwd: projectRoot,
|
|
237
|
-
encoding: 'utf8',
|
|
238
|
-
}).trim();
|
|
239
|
-
// npm pack creates a file with a name like: package-name-version.tgz
|
|
240
|
-
const npmPackageFile = path.join(projectRoot, packOutput);
|
|
241
|
-
const tarFileName = 'tonk-app.tgz';
|
|
242
|
-
const tarFilePath = path.join(projectRoot, tarFileName);
|
|
243
|
-
// Rename the npm package to our standard name
|
|
244
|
-
if (fs.existsSync(tarFilePath)) {
|
|
245
|
-
fs.unlinkSync(tarFilePath);
|
|
246
|
-
}
|
|
247
|
-
fs.renameSync(npmPackageFile, tarFilePath);
|
|
248
|
-
// 4. Copy to EC2
|
|
249
|
-
console.log(chalk.blue(`Copying to EC2 instance ${options.instance}...`));
|
|
250
|
-
execSync(`scp -i "${options.key}" "${tarFileName}" ${options.user}@${options.instance}:~/`, { cwd: projectRoot, stdio: 'inherit' });
|
|
251
|
-
// Copy the config too if storage is configured
|
|
252
|
-
if (options.backblaze || options.filesystem) {
|
|
253
|
-
// Create the directory first
|
|
254
|
-
execSync(`ssh -i "${options.key}" ${options.user}@${options.instance} "mkdir -p ~/tonk-app"`, { cwd: projectRoot, stdio: 'inherit' });
|
|
255
|
-
execSync(`scp -i "${options.key}" "${configFilePath}" ${options.user}@${options.instance}:~/tonk-app/tonk.config.json`, { cwd: projectRoot, stdio: 'inherit' });
|
|
256
|
-
}
|
|
257
|
-
// 5. SSH into EC2 and deploy with Docker
|
|
258
|
-
console.log(chalk.blue('Deploying on EC2...'));
|
|
259
|
-
// Build the Docker run command with environment variables for storage if configured
|
|
260
|
-
let dockerRunCmd = 'docker run -d --name tonk-app-container -p 8080:8080 -e PORT=8080';
|
|
261
|
-
// Add Backblaze environment variables if enabled
|
|
262
|
-
if (options.backblaze &&
|
|
263
|
-
configData.backblaze &&
|
|
264
|
-
configData.backblaze.enabled) {
|
|
265
|
-
dockerRunCmd += ` -e BACKBLAZE_ENABLED=true`;
|
|
266
|
-
dockerRunCmd += ` -e BACKBLAZE_APP_KEY_ID='${configData.backblaze.applicationKeyId}'`;
|
|
267
|
-
dockerRunCmd += ` -e BACKBLAZE_APP_KEY='${configData.backblaze.applicationKey}'`;
|
|
268
|
-
dockerRunCmd += ` -e BACKBLAZE_BUCKET_ID='${configData.backblaze.bucketId}'`;
|
|
269
|
-
dockerRunCmd += ` -e BACKBLAZE_BUCKET_NAME='${configData.backblaze.bucketName}'`;
|
|
270
|
-
dockerRunCmd += ` -e BACKBLAZE_SYNC_INTERVAL='${configData.backblaze.syncInterval || 300000}'`;
|
|
271
|
-
}
|
|
272
|
-
function formatDockerPath(storagePath) {
|
|
273
|
-
// Remove trailing slashes for consistency
|
|
274
|
-
storagePath = storagePath.replace(/\/+$/, '');
|
|
275
|
-
// If path starts with tilde, we need to resolve it on the EC2 host
|
|
276
|
-
if (storagePath.startsWith('~/')) {
|
|
277
|
-
// This will be run on the EC2 instance to resolve the tilde
|
|
278
|
-
const resolvePathCmd = `echo ${storagePath}`;
|
|
279
|
-
const resolvedPath = execSync(`ssh -i "${options.key}" ${options.user}@${options.instance} "${resolvePathCmd}"`, { cwd: projectRoot, encoding: 'utf8' }).trim();
|
|
280
|
-
return resolvedPath;
|
|
281
|
-
}
|
|
282
|
-
return storagePath;
|
|
283
|
-
}
|
|
284
|
-
// Add Filesystem environment variables if enabled
|
|
285
|
-
if (options.filesystem &&
|
|
286
|
-
configData.filesystem &&
|
|
287
|
-
configData.filesystem.enabled) {
|
|
288
|
-
let storagePath = configData.filesystem.storagePath || '~/tonk-data';
|
|
289
|
-
// Get the fully resolved path on the EC2 host
|
|
290
|
-
const resolvedPath = formatDockerPath(storagePath);
|
|
291
|
-
// Create the directory on the host machine with proper permissions
|
|
292
|
-
const createDirCmd = `mkdir -p ${resolvedPath} && chmod 755 ${resolvedPath}`;
|
|
293
|
-
console.log(chalk.blue(`Creating storage directory on host: ${resolvedPath}`));
|
|
294
|
-
execSync(`ssh -i "${options.key}" ${options.user}@${options.instance} "${createDirCmd}"`, { cwd: projectRoot, stdio: 'inherit' });
|
|
295
|
-
// Add volume mount to Docker run command
|
|
296
|
-
dockerRunCmd += ` -v ${resolvedPath}:${resolvedPath}`;
|
|
297
|
-
// Pass the exact same path to the container
|
|
298
|
-
dockerRunCmd += ` -e FILESYSTEM_ENABLED=true`;
|
|
299
|
-
dockerRunCmd += ` -e FILESYSTEM_STORAGE_PATH='${resolvedPath}'`;
|
|
300
|
-
dockerRunCmd += ` -e FILESYSTEM_SYNC_INTERVAL='${configData.filesystem.syncInterval || 30000}'`;
|
|
301
|
-
dockerRunCmd += ` -e FILESYSTEM_CREATE_MISSING='true'`;
|
|
302
|
-
// Add this to the Docker run command to ensure proper volume permissions
|
|
303
|
-
dockerRunCmd += ' --mount type=tmpfs,destination=/tmp,tmpfs-mode=1777';
|
|
304
|
-
}
|
|
305
|
-
// Set primary storage if both are enabled
|
|
306
|
-
if (options.backblaze &&
|
|
307
|
-
options.filesystem &&
|
|
308
|
-
configData.primaryStorage) {
|
|
309
|
-
dockerRunCmd += ` -e PRIMARY_STORAGE='${configData.primaryStorage}'`;
|
|
310
|
-
}
|
|
311
|
-
dockerRunCmd += ' tonk-app';
|
|
312
|
-
const sshCommand = `ssh -i "${options.key}" ${options.user}@${options.instance} '
|
|
313
|
-
mkdir -p tonk-app &&
|
|
314
|
-
tar -xzf ${tarFileName} -C tonk-app --strip-components=1 &&
|
|
315
|
-
cd tonk-app &&
|
|
316
|
-
docker build -t tonk-app . &&
|
|
317
|
-
docker stop tonk-app-container || true &&
|
|
318
|
-
docker rm tonk-app-container || true &&
|
|
319
|
-
${dockerRunCmd} &&
|
|
320
|
-
sudo systemctl restart nginx.service
|
|
321
|
-
'`;
|
|
322
|
-
execSync(sshCommand, { cwd: projectRoot, stdio: 'inherit' });
|
|
323
|
-
// 6. Clean up
|
|
324
|
-
fs.unlinkSync(tarFilePath);
|
|
325
|
-
console.log(chalk.green(`
|
|
326
|
-
✅ Deployment successful!
|
|
327
|
-
Your app is now running at http://${options.instance}
|
|
328
|
-
`));
|
|
329
|
-
// Print storage info if enabled
|
|
330
|
-
if (options.backblaze &&
|
|
331
|
-
configData.backblaze &&
|
|
332
|
-
configData.backblaze.enabled) {
|
|
333
|
-
console.log(chalk.green(`
|
|
334
|
-
Backblaze B2 backup is enabled for your Automerge documents.
|
|
335
|
-
Documents will be synced to your B2 bucket: ${configData.backblaze.bucketName}
|
|
336
|
-
`));
|
|
337
|
-
}
|
|
338
|
-
if (options.filesystem &&
|
|
339
|
-
configData.filesystem &&
|
|
340
|
-
configData.filesystem.enabled) {
|
|
341
|
-
console.log(chalk.green(`
|
|
342
|
-
Filesystem storage is enabled for your Automerge documents.
|
|
343
|
-
Documents will be stored at: ${configData.filesystem.storagePath}
|
|
344
|
-
`));
|
|
345
|
-
}
|
|
346
|
-
if (options.backblaze &&
|
|
347
|
-
options.filesystem &&
|
|
348
|
-
configData.primaryStorage) {
|
|
349
|
-
console.log(chalk.green(`
|
|
350
|
-
Primary storage is set to: ${configData.primaryStorage}
|
|
351
|
-
`));
|
|
352
|
-
}
|
|
353
|
-
// 7. Set up reverse proxy with pinggy.io
|
|
354
|
-
console.log(chalk.blue('Setting up secure public access via pinggy.io...'));
|
|
355
|
-
// Prompt user for Pinggy token if not provided
|
|
356
|
-
if (!options.token) {
|
|
357
|
-
console.log(chalk.yellow(`
|
|
358
|
-
No Pinggy.io access token found. You'll need a token to create a secure public URL.
|
|
359
|
-
`));
|
|
360
|
-
options.token = await promptUser(chalk.yellow('Please enter your Pinggy.io access token (or visit https://pinggy.io/ to sign up): '));
|
|
361
|
-
if (!options.token.trim()) {
|
|
362
|
-
console.log(chalk.yellow(`
|
|
363
|
-
No token provided. Skipping public URL setup.
|
|
364
|
-
You can manually set up a tunnel later by SSH-ing into your EC2 instance.
|
|
365
|
-
`));
|
|
366
|
-
rl.close();
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
|
-
// Ask if user wants to save the token in config
|
|
370
|
-
const saveToken = await promptUser(chalk.yellow('Would you like to save this token in your tonk.config.json for future deployments? (yes/no): '));
|
|
371
|
-
if (saveToken.toLowerCase().startsWith('y')) {
|
|
372
|
-
try {
|
|
373
|
-
const configData = JSON.parse(fs.readFileSync(configFilePath, 'utf8'));
|
|
374
|
-
configData.pinggy = configData.pinggy || {};
|
|
375
|
-
configData.pinggy.token = options.token;
|
|
376
|
-
fs.writeFileSync(configFilePath, JSON.stringify(configData, null, 2), 'utf8');
|
|
377
|
-
console.log(chalk.green('Token saved to configuration file.'));
|
|
378
|
-
}
|
|
379
|
-
catch (error) {
|
|
380
|
-
console.log(chalk.yellow(`Could not save token to config file: ${error.message}`));
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
try {
|
|
385
|
-
// Run the pinggy.io command on the EC2 instance with user's token
|
|
386
|
-
const pinggySetupCommand = `ssh -i "${options.key}" ${options.user}@${options.instance} '
|
|
387
|
-
# Kill any existing pinggy sessions
|
|
388
|
-
screen -ls | grep pinggy && screen -S pinggy -X quit || true
|
|
389
|
-
|
|
390
|
-
# Start a new detached screen session for the pinggy tunnel
|
|
391
|
-
screen -dmS pinggy bash -c "ssh -p 443 -R0:localhost:8080 -L4300:localhost:4300 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 ${options.token}@pro.pinggy.io x:https 2>&1 | tee /tmp/pinggy.log"
|
|
392
|
-
|
|
393
|
-
# Wait for the URL to appear in the log
|
|
394
|
-
echo "Waiting for pinggy.io to establish connection..."
|
|
395
|
-
timeout=30
|
|
396
|
-
while [ $timeout -gt 0 ] && ! grep -q "https://" /tmp/pinggy.log; do
|
|
397
|
-
sleep 1
|
|
398
|
-
timeout=$((timeout-1))
|
|
399
|
-
done
|
|
400
|
-
|
|
401
|
-
# Extract and display the URL
|
|
402
|
-
if grep -q "https://" /tmp/pinggy.log; then
|
|
403
|
-
grep -o "https://[^ ]*" /tmp/pinggy.log
|
|
404
|
-
echo "Tunnel is running in the background. To view logs: screen -r pinggy"
|
|
405
|
-
echo "To terminate: screen -S pinggy -X quit"
|
|
406
|
-
else
|
|
407
|
-
echo "Timed out waiting for pinggy.io URL"
|
|
408
|
-
cat /tmp/pinggy.log
|
|
409
|
-
fi
|
|
410
|
-
'`;
|
|
411
|
-
const pinggyOutput = execSync(pinggySetupCommand, {
|
|
412
|
-
encoding: 'utf8',
|
|
413
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
414
|
-
});
|
|
415
|
-
// Extract the HTTPS URL from the output
|
|
416
|
-
const urlMatch = pinggyOutput.match(/https:\/\/[^\s"']+/);
|
|
417
|
-
const publicUrl = urlMatch ? urlMatch[0] : null;
|
|
418
|
-
if (publicUrl) {
|
|
419
|
-
console.log(chalk.green(`
|
|
420
|
-
🌐 Public access URL:
|
|
421
|
-
${publicUrl}
|
|
422
|
-
|
|
423
|
-
This URL will remain active as long as the EC2 instance is running.
|
|
424
|
-
The tunnel is running in a detached screen session on your EC2 instance.
|
|
425
|
-
|
|
426
|
-
To view tunnel logs: ssh into your EC2 instance and run 'screen -r pinggy'
|
|
427
|
-
To terminate the tunnel: ssh into your EC2 instance and run 'screen -S pinggy -X quit'
|
|
428
|
-
`));
|
|
429
|
-
}
|
|
430
|
-
else {
|
|
431
|
-
console.log(chalk.yellow(`
|
|
432
|
-
Could not extract public URL from pinggy.io output.
|
|
433
|
-
The tunnel might still be running. SSH into your EC2 instance to check.
|
|
434
|
-
|
|
435
|
-
Output from setup command:
|
|
436
|
-
${pinggyOutput}
|
|
437
|
-
`));
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
catch (error) {
|
|
441
|
-
console.log(chalk.yellow(`
|
|
442
|
-
Note: Could not establish reverse proxy tunnel.
|
|
443
|
-
You can manually run the following command in the EC2 instance to create a public URL:
|
|
444
|
-
|
|
445
|
-
ssh -p 443 -R0:localhost:8080 -L4300:localhost:4300 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 YOUR_PINGGY_TOKEN@pro.pinggy.io x:https
|
|
446
|
-
|
|
447
|
-
Error details: ${error}
|
|
448
|
-
`));
|
|
449
|
-
}
|
|
450
|
-
// Close readline interface
|
|
451
|
-
rl.close();
|
|
452
|
-
}
|
|
453
|
-
catch (error) {
|
|
454
|
-
console.error(chalk.red('Deployment failed:'), error);
|
|
455
|
-
// Make sure to close readline interface even on error
|
|
456
|
-
rl.close();
|
|
457
|
-
process.exit(1);
|
|
458
|
-
}
|
|
459
|
-
});
|
|
460
|
-
//# sourceMappingURL=deploy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/dev.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAOlC,eAAO,MAAM,UAAU,SAmFnB,CAAC"}
|
package/dist/commands/dev.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { spawn } from 'child_process';
|
|
4
|
-
import { createServer } from '@tonk/server';
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import fs from 'fs';
|
|
7
|
-
export const devCommand = new Command('dev')
|
|
8
|
-
.description('Start a Tonk app in development mode')
|
|
9
|
-
.option('-p, --port <port>', 'Port to run the sync server on', '4080')
|
|
10
|
-
.option('-f, --frontend-port <port>', 'Port to run the frontend dev server on', '3000')
|
|
11
|
-
.option('--no-open', 'Disable auto-opening the browser')
|
|
12
|
-
.action(async (options) => {
|
|
13
|
-
const projectRoot = process.cwd();
|
|
14
|
-
const port = parseInt(options.port, 10);
|
|
15
|
-
const frontendPort = parseInt(options.frontendPort, 10);
|
|
16
|
-
// Ensure we have a package.json
|
|
17
|
-
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
18
|
-
if (!fs.existsSync(packageJsonPath)) {
|
|
19
|
-
console.error(chalk.red('Error: package.json not found. Make sure you are in a Tonk project directory.'));
|
|
20
|
-
process.exit(1);
|
|
21
|
-
}
|
|
22
|
-
console.log(chalk.blue('Starting Tonk development environment...'));
|
|
23
|
-
// Start the sync server
|
|
24
|
-
const server = await createServer({
|
|
25
|
-
port,
|
|
26
|
-
mode: 'development',
|
|
27
|
-
verbose: true,
|
|
28
|
-
distPath: undefined,
|
|
29
|
-
});
|
|
30
|
-
// Start webpack dev server
|
|
31
|
-
const webpackArgs = [
|
|
32
|
-
'webpack',
|
|
33
|
-
'serve',
|
|
34
|
-
'--mode',
|
|
35
|
-
'development',
|
|
36
|
-
'--port',
|
|
37
|
-
frontendPort.toString(),
|
|
38
|
-
];
|
|
39
|
-
// Add --open flag if needed
|
|
40
|
-
if (options.open) {
|
|
41
|
-
webpackArgs.push('--open');
|
|
42
|
-
}
|
|
43
|
-
console.log(chalk.blue(`Starting webpack dev server on port ${frontendPort}...`));
|
|
44
|
-
console.log(chalk.blue(`Sync server running on port ${port}`));
|
|
45
|
-
const webpackProcess = spawn('npx', webpackArgs, {
|
|
46
|
-
cwd: projectRoot,
|
|
47
|
-
stdio: 'inherit',
|
|
48
|
-
shell: true,
|
|
49
|
-
env: {
|
|
50
|
-
...process.env,
|
|
51
|
-
PORT: frontendPort.toString(),
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
// Handle process termination
|
|
55
|
-
const cleanup = () => {
|
|
56
|
-
console.log(chalk.yellow('\nShutting down servers...'));
|
|
57
|
-
webpackProcess.kill();
|
|
58
|
-
server.stop().catch(console.error);
|
|
59
|
-
};
|
|
60
|
-
process.on('SIGINT', cleanup);
|
|
61
|
-
process.on('SIGTERM', cleanup);
|
|
62
|
-
// Handle webpack process exit
|
|
63
|
-
webpackProcess.on('exit', code => {
|
|
64
|
-
if (code !== 0 && code !== null) {
|
|
65
|
-
console.error(chalk.red(`Webpack process exited with code ${code}`));
|
|
66
|
-
}
|
|
67
|
-
server.stop().catch(console.error);
|
|
68
|
-
process.exit(code || 0);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
//# sourceMappingURL=dev.js.map
|
package/dist/commands/dev.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/serve.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AA0BlC,eAAO,MAAM,YAAY,SA2KrB,CAAC"}
|