@rool-dev/cli 0.1.4 → 0.1.5-dev.4686b53
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 +11 -0
- package/dist/args.d.ts +1 -0
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +3 -0
- package/dist/args.js.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/media.d.ts +2 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +129 -0
- package/dist/media.js.map +1 -0
- package/dist/publish.d.ts +2 -0
- package/dist/publish.d.ts.map +1 -0
- package/dist/publish.js +195 -0
- package/dist/publish.js.map +1 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -20,6 +20,7 @@ rool <command> [options]
|
|
|
20
20
|
|---------|-------------|
|
|
21
21
|
| `chat <prompt>` | Send a prompt to a space |
|
|
22
22
|
| `chat` | Interactive chat mode |
|
|
23
|
+
| `media upload <file>` | Upload a file and create an object with the media URL |
|
|
23
24
|
| `space list` | List all spaces |
|
|
24
25
|
| `space create <name>` | Create a new space |
|
|
25
26
|
| `space delete <name>` | Delete a space |
|
|
@@ -33,6 +34,7 @@ rool <command> [options]
|
|
|
33
34
|
| `-s, --space <name>` | Space name (default: "Rool CLI") |
|
|
34
35
|
| `-c, --conversation <id>` | Conversation ID (default: "rool-dev") |
|
|
35
36
|
| `-u, --url <url>` | API URL (default: https://api.rool.dev) |
|
|
37
|
+
| `-m, --message <text>` | Comment/description (for media upload) |
|
|
36
38
|
| `-y, --yes` | Skip confirmation prompts |
|
|
37
39
|
|
|
38
40
|
### Examples
|
|
@@ -59,6 +61,15 @@ rool space delete "Old Project"
|
|
|
59
61
|
# Delete without confirmation
|
|
60
62
|
rool space delete "Old Project" -y
|
|
61
63
|
|
|
64
|
+
# Upload a file
|
|
65
|
+
rool media upload photo.jpg
|
|
66
|
+
|
|
67
|
+
# Upload with a comment
|
|
68
|
+
rool media upload report.pdf -m "Q4 sales report"
|
|
69
|
+
|
|
70
|
+
# Upload to a specific space
|
|
71
|
+
rool media upload logo.png -s "My Project"
|
|
72
|
+
|
|
62
73
|
# Show user info
|
|
63
74
|
rool user
|
|
64
75
|
|
package/dist/args.d.ts
CHANGED
package/dist/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAaD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA6BpD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC"}
|
package/dist/args.js
CHANGED
|
@@ -8,12 +8,15 @@ const FLAG_ALIASES = {
|
|
|
8
8
|
'--conversation': 'conversation',
|
|
9
9
|
'-u': 'url',
|
|
10
10
|
'--url': 'url',
|
|
11
|
+
'-m': 'message',
|
|
12
|
+
'--message': 'message',
|
|
11
13
|
};
|
|
12
14
|
export function parseArgs(args) {
|
|
13
15
|
const result = {
|
|
14
16
|
space: DEFAULT_SPACE_NAME,
|
|
15
17
|
conversation: DEFAULT_CONVERSATION_ID,
|
|
16
18
|
url: DEFAULT_API_URL,
|
|
19
|
+
message: undefined,
|
|
17
20
|
rest: [],
|
|
18
21
|
};
|
|
19
22
|
for (let i = 0; i < args.length; i++) {
|
package/dist/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAC/C,MAAM,kBAAkB,GAAG,UAAU,CAAC;AACtC,MAAM,uBAAuB,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAC/C,MAAM,kBAAkB,GAAG,UAAU,CAAC;AACtC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAa3C,MAAM,YAAY,GAAqC;IACrD,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,IAAI,EAAE,cAAc;IACpB,gBAAgB,EAAE,cAAc;IAChC,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,SAAS;CACvB,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,MAAM,GAAe;QACzB,KAAK,EAAE,kBAAkB;QACzB,YAAY,EAAE,uBAAuB;QACrC,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,EAAE;KACT,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,sDAAsD,kBAAkB,IAAI,CAAC,CAAC;IAC5F,OAAO,CAAC,KAAK,CAAC,2DAA2D,uBAAuB,IAAI,CAAC,CAAC;IACtG,OAAO,CAAC,KAAK,CAAC,kDAAkD,eAAe,GAAG,CAAC,CAAC;AACtF,CAAC"}
|
package/dist/chat.js
CHANGED
|
@@ -48,7 +48,7 @@ async function sendPrompt(space, prompt) {
|
|
|
48
48
|
clearStatusLine();
|
|
49
49
|
process.stdout.write(tool ? `[${tool.name}]` : 'Thinking...');
|
|
50
50
|
};
|
|
51
|
-
space.on('
|
|
51
|
+
space.on('conversationUpdated', onUpdate);
|
|
52
52
|
try {
|
|
53
53
|
const result = await space.prompt(prompt);
|
|
54
54
|
clearStatusLine();
|
|
@@ -59,7 +59,7 @@ async function sendPrompt(space, prompt) {
|
|
|
59
59
|
throw err;
|
|
60
60
|
}
|
|
61
61
|
finally {
|
|
62
|
-
space.off('
|
|
62
|
+
space.off('conversationUpdated', onUpdate);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
async function interactiveMode(space, client) {
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { chat } from './chat.js';
|
|
3
|
+
import { media } from './media.js';
|
|
3
4
|
import { space } from './space.js';
|
|
5
|
+
import { publish } from './publish.js';
|
|
4
6
|
import { user } from './user.js';
|
|
5
7
|
import { logout } from './logout.js';
|
|
6
8
|
import { printCommonOptions } from './args.js';
|
|
@@ -9,7 +11,9 @@ function printUsage() {
|
|
|
9
11
|
console.error('');
|
|
10
12
|
console.error('Commands:');
|
|
11
13
|
console.error(' chat [prompt] Chat with a space (interactive if no prompt)');
|
|
14
|
+
console.error(' media upload <file> Upload a file to a space');
|
|
12
15
|
console.error(' space <subcommand> Manage spaces (list, create, delete)');
|
|
16
|
+
console.error(' publish <subcommand> Publish apps (list, unpublish, slug)');
|
|
13
17
|
console.error(' user Show current user info');
|
|
14
18
|
console.error(' logout Log out');
|
|
15
19
|
console.error('');
|
|
@@ -21,6 +25,9 @@ async function main() {
|
|
|
21
25
|
case 'chat':
|
|
22
26
|
await chat(args);
|
|
23
27
|
break;
|
|
28
|
+
case 'media':
|
|
29
|
+
await media(args);
|
|
30
|
+
break;
|
|
24
31
|
case 'space':
|
|
25
32
|
await space(args);
|
|
26
33
|
break;
|
|
@@ -28,6 +35,9 @@ async function main() {
|
|
|
28
35
|
// Alias: "rool spaces" = "rool space list"
|
|
29
36
|
await space(['list', ...args]);
|
|
30
37
|
break;
|
|
38
|
+
case 'publish':
|
|
39
|
+
await publish(args);
|
|
40
|
+
break;
|
|
31
41
|
case 'user':
|
|
32
42
|
await user(args);
|
|
33
43
|
break;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,SAAS,UAAU;IACjB,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACrF,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,kBAAkB,EAAE,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM;QACR,KAAK,OAAO;YACV,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM;QACR,KAAK,QAAQ;YACX,2CAA2C;YAC3C,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAC/B,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR;YACE,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,SAAS,UAAU;IACjB,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACrF,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,kBAAkB,EAAE,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM;QACR,KAAK,OAAO;YACV,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM;QACR,KAAK,OAAO;YACV,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM;QACR,KAAK,QAAQ;YACX,2CAA2C;YAC3C,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAC/B,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR;YACE,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/media.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAwIA,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASzD"}
|
package/dist/media.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { RoolClient } from '@rool-dev/client';
|
|
4
|
+
import { NodeAuthProvider } from '@rool-dev/client/node';
|
|
5
|
+
import { parseArgs, printCommonOptions } from './args.js';
|
|
6
|
+
const EXT_TO_MIME = {
|
|
7
|
+
'.jpg': 'image/jpeg',
|
|
8
|
+
'.jpeg': 'image/jpeg',
|
|
9
|
+
'.png': 'image/png',
|
|
10
|
+
'.gif': 'image/gif',
|
|
11
|
+
'.webp': 'image/webp',
|
|
12
|
+
'.svg': 'image/svg+xml',
|
|
13
|
+
'.mp3': 'audio/mpeg',
|
|
14
|
+
'.wav': 'audio/wav',
|
|
15
|
+
'.ogg': 'audio/ogg',
|
|
16
|
+
'.mp4': 'video/mp4',
|
|
17
|
+
'.webm': 'video/webm',
|
|
18
|
+
'.pdf': 'application/pdf',
|
|
19
|
+
'.txt': 'text/plain',
|
|
20
|
+
'.json': 'application/json',
|
|
21
|
+
'.html': 'text/html',
|
|
22
|
+
'.css': 'text/css',
|
|
23
|
+
'.js': 'application/javascript',
|
|
24
|
+
'.ts': 'application/typescript',
|
|
25
|
+
'.md': 'text/markdown',
|
|
26
|
+
'.zip': 'application/zip',
|
|
27
|
+
};
|
|
28
|
+
function getContentType(filePath) {
|
|
29
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
30
|
+
return EXT_TO_MIME[ext] ?? 'application/octet-stream';
|
|
31
|
+
}
|
|
32
|
+
function formatSize(bytes) {
|
|
33
|
+
if (bytes < 1024)
|
|
34
|
+
return `${bytes} B`;
|
|
35
|
+
if (bytes < 1024 * 1024)
|
|
36
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
37
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
38
|
+
}
|
|
39
|
+
function printUsage() {
|
|
40
|
+
console.error('Usage: rool media upload <file> [options]');
|
|
41
|
+
console.error('');
|
|
42
|
+
console.error('Upload a file to a space and create an object with the media URL.');
|
|
43
|
+
console.error('');
|
|
44
|
+
console.error('Options:');
|
|
45
|
+
console.error(' -m, --message <text> Optional comment/description');
|
|
46
|
+
printCommonOptions();
|
|
47
|
+
console.error('');
|
|
48
|
+
console.error('Examples:');
|
|
49
|
+
console.error(' rool media upload photo.jpg');
|
|
50
|
+
console.error(' rool media upload report.pdf -m "Q4 sales report"');
|
|
51
|
+
console.error(' rool media upload logo.png -s "My Project"');
|
|
52
|
+
}
|
|
53
|
+
async function getClient(apiUrl) {
|
|
54
|
+
const authProvider = new NodeAuthProvider();
|
|
55
|
+
const client = new RoolClient({ baseUrl: apiUrl, authProvider });
|
|
56
|
+
if (!await client.isAuthenticated()) {
|
|
57
|
+
console.log('Opening browser to authenticate...');
|
|
58
|
+
await client.login('Rool CLI');
|
|
59
|
+
}
|
|
60
|
+
return client;
|
|
61
|
+
}
|
|
62
|
+
async function getSpace(client, spaceName) {
|
|
63
|
+
const spaces = await client.listSpaces();
|
|
64
|
+
const spaceInfo = spaces.find(s => s.name === spaceName);
|
|
65
|
+
if (spaceInfo) {
|
|
66
|
+
return client.openSpace(spaceInfo.id);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return client.createSpace(spaceName);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async function uploadMedia(args) {
|
|
73
|
+
const { space: spaceName, url: apiUrl, message, rest } = parseArgs(args);
|
|
74
|
+
const filePath = rest[0];
|
|
75
|
+
if (!filePath) {
|
|
76
|
+
printUsage();
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
if (!fs.existsSync(filePath)) {
|
|
80
|
+
console.error(`File not found: ${filePath}`);
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
const stats = fs.statSync(filePath);
|
|
84
|
+
if (!stats.isFile()) {
|
|
85
|
+
console.error(`Not a file: ${filePath}`);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
const filename = path.basename(filePath);
|
|
89
|
+
const contentType = getContentType(filePath);
|
|
90
|
+
const size = stats.size;
|
|
91
|
+
const client = await getClient(apiUrl);
|
|
92
|
+
const space = await getSpace(client, spaceName);
|
|
93
|
+
try {
|
|
94
|
+
const fileBuffer = fs.readFileSync(filePath);
|
|
95
|
+
const blob = new Blob([fileBuffer], { type: contentType });
|
|
96
|
+
console.log(`Uploading ${filename} (${formatSize(size)})...`);
|
|
97
|
+
const url = await space.uploadMedia(blob);
|
|
98
|
+
const objectData = {
|
|
99
|
+
type: 'file',
|
|
100
|
+
url,
|
|
101
|
+
filename,
|
|
102
|
+
contentType,
|
|
103
|
+
size,
|
|
104
|
+
uploadedAt: new Date().toISOString(),
|
|
105
|
+
};
|
|
106
|
+
if (message) {
|
|
107
|
+
objectData.comment = message;
|
|
108
|
+
}
|
|
109
|
+
const { object } = await space.createObject({ data: objectData });
|
|
110
|
+
console.log(`Uploaded: ${filename} (${formatSize(size)})`);
|
|
111
|
+
console.log(`Created object: ${object.id}`);
|
|
112
|
+
console.log(`URL: ${url}`);
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
space.close();
|
|
116
|
+
client.destroy();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
export async function media(args) {
|
|
120
|
+
const [subcommand, ...subargs] = args;
|
|
121
|
+
if (subcommand === 'upload') {
|
|
122
|
+
await uploadMedia(subargs);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
printUsage();
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAiKA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmE3D"}
|
package/dist/publish.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import archiver from 'archiver';
|
|
4
|
+
import { RoolClient } from '@rool-dev/client';
|
|
5
|
+
import { NodeAuthProvider } from '@rool-dev/client/node';
|
|
6
|
+
import { parseArgs } from './args.js';
|
|
7
|
+
function printUsage() {
|
|
8
|
+
console.error('Usage: rool publish <command> [options]');
|
|
9
|
+
console.error('');
|
|
10
|
+
console.error('Commands:');
|
|
11
|
+
console.error(' <app-id> <path> Publish a directory as an app');
|
|
12
|
+
console.error(' list List published apps');
|
|
13
|
+
console.error(' unpublish <app-id> Unpublish an app');
|
|
14
|
+
console.error(' slug [new-slug] Show or set your user slug');
|
|
15
|
+
console.error('');
|
|
16
|
+
console.error('Options:');
|
|
17
|
+
console.error(' -n, --name <name> App display name (defaults to app-id)');
|
|
18
|
+
console.error(' --no-spa Disable SPA routing (404s won\'t serve index.html)');
|
|
19
|
+
console.error(' -u, --url <url> API URL (default: https://api.rool.dev)');
|
|
20
|
+
console.error('');
|
|
21
|
+
console.error('Examples:');
|
|
22
|
+
console.error(' rool publish my-app ./dist');
|
|
23
|
+
console.error(' rool publish my-app ./dist -n "My App"');
|
|
24
|
+
console.error(' rool publish list');
|
|
25
|
+
console.error(' rool publish unpublish my-app');
|
|
26
|
+
}
|
|
27
|
+
async function getClient(apiUrl) {
|
|
28
|
+
const authProvider = new NodeAuthProvider();
|
|
29
|
+
const client = new RoolClient({ baseUrl: apiUrl, authProvider });
|
|
30
|
+
if (!await client.isAuthenticated()) {
|
|
31
|
+
console.log('Opening browser to authenticate...');
|
|
32
|
+
await client.login("Rool CLI");
|
|
33
|
+
}
|
|
34
|
+
return client;
|
|
35
|
+
}
|
|
36
|
+
async function zipDirectory(dirPath) {
|
|
37
|
+
return new Promise((resolve, reject) => {
|
|
38
|
+
const archive = archiver('zip', { zlib: { level: 9 } });
|
|
39
|
+
const chunks = [];
|
|
40
|
+
archive.on('data', (chunk) => chunks.push(chunk));
|
|
41
|
+
archive.on('end', () => resolve(Buffer.concat(chunks)));
|
|
42
|
+
archive.on('error', reject);
|
|
43
|
+
archive.directory(dirPath, false);
|
|
44
|
+
archive.finalize();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function formatBytes(bytes) {
|
|
48
|
+
if (bytes < 1024)
|
|
49
|
+
return `${bytes} B`;
|
|
50
|
+
if (bytes < 1024 * 1024)
|
|
51
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
52
|
+
return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
|
|
53
|
+
}
|
|
54
|
+
async function publishApp(apiUrl, appId, dirPath, name, spa) {
|
|
55
|
+
// Validate directory exists
|
|
56
|
+
const resolvedPath = path.resolve(dirPath);
|
|
57
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
58
|
+
console.error(`Directory not found: ${resolvedPath}`);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
const stat = fs.statSync(resolvedPath);
|
|
62
|
+
if (!stat.isDirectory()) {
|
|
63
|
+
console.error(`Not a directory: ${resolvedPath}`);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
// Check for index.html
|
|
67
|
+
const indexPath = path.join(resolvedPath, 'index.html');
|
|
68
|
+
if (!fs.existsSync(indexPath)) {
|
|
69
|
+
console.error(`No index.html found in ${resolvedPath}`);
|
|
70
|
+
console.error('The directory must contain an index.html file at the root.');
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
console.log(`Packaging ${resolvedPath}...`);
|
|
74
|
+
const zipBuffer = await zipDirectory(resolvedPath);
|
|
75
|
+
console.log(`Bundle size: ${formatBytes(zipBuffer.length)}`);
|
|
76
|
+
const client = await getClient(apiUrl);
|
|
77
|
+
console.log(`Publishing ${appId}...`);
|
|
78
|
+
const blob = new Blob([new Uint8Array(zipBuffer)], { type: 'application/zip' });
|
|
79
|
+
const result = await client.publishApp(appId, { name, bundle: blob, spa });
|
|
80
|
+
console.log('');
|
|
81
|
+
console.log(`Published: ${result.name}`);
|
|
82
|
+
console.log(`URL: ${result.url}`);
|
|
83
|
+
console.log(`Size: ${formatBytes(result.sizeBytes)}`);
|
|
84
|
+
console.log(`SPA routing: ${result.spa ? 'enabled' : 'disabled'}`);
|
|
85
|
+
client.destroy();
|
|
86
|
+
}
|
|
87
|
+
async function listApps(apiUrl) {
|
|
88
|
+
const client = await getClient(apiUrl);
|
|
89
|
+
const apps = await client.listApps();
|
|
90
|
+
if (apps.length === 0) {
|
|
91
|
+
console.log('No published apps.');
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
console.log('Published apps:');
|
|
95
|
+
console.log('');
|
|
96
|
+
for (const app of apps) {
|
|
97
|
+
console.log(` ${app.appId}`);
|
|
98
|
+
console.log(` Name: ${app.name}`);
|
|
99
|
+
console.log(` URL: ${app.url}`);
|
|
100
|
+
console.log(` Size: ${formatBytes(app.sizeBytes)}`);
|
|
101
|
+
console.log(` SPA: ${app.spa ? 'yes' : 'no'}`);
|
|
102
|
+
console.log(` Updated: ${new Date(app.updatedAt).toLocaleString()}`);
|
|
103
|
+
console.log('');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
client.destroy();
|
|
107
|
+
}
|
|
108
|
+
async function unpublishApp(apiUrl, appId) {
|
|
109
|
+
const client = await getClient(apiUrl);
|
|
110
|
+
// Check if app exists
|
|
111
|
+
const app = await client.getAppInfo(appId);
|
|
112
|
+
if (!app) {
|
|
113
|
+
console.error(`App not found: ${appId}`);
|
|
114
|
+
client.destroy();
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
await client.unpublishApp(appId);
|
|
118
|
+
console.log(`Unpublished: ${appId}`);
|
|
119
|
+
client.destroy();
|
|
120
|
+
}
|
|
121
|
+
async function showOrSetSlug(apiUrl, newSlug) {
|
|
122
|
+
const client = await getClient(apiUrl);
|
|
123
|
+
const user = await client.getCurrentUser();
|
|
124
|
+
if (newSlug) {
|
|
125
|
+
await client.setSlug(newSlug);
|
|
126
|
+
console.log(`Slug updated to: ${newSlug}`);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.log(`Your slug: ${user.slug}`);
|
|
130
|
+
}
|
|
131
|
+
client.destroy();
|
|
132
|
+
}
|
|
133
|
+
export async function publish(args) {
|
|
134
|
+
const { url: apiUrl, rest } = parseArgs(args);
|
|
135
|
+
const [subcommand, ...subargs] = rest;
|
|
136
|
+
// Parse additional flags from subargs
|
|
137
|
+
let name;
|
|
138
|
+
let spa = true;
|
|
139
|
+
const positional = [];
|
|
140
|
+
for (let i = 0; i < subargs.length; i++) {
|
|
141
|
+
const arg = subargs[i];
|
|
142
|
+
if (arg === '-n' || arg === '--name') {
|
|
143
|
+
name = subargs[++i];
|
|
144
|
+
if (!name) {
|
|
145
|
+
console.error('Missing value for --name');
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else if (arg === '--no-spa') {
|
|
150
|
+
spa = false;
|
|
151
|
+
}
|
|
152
|
+
else if (arg.startsWith('-')) {
|
|
153
|
+
console.error(`Unknown option: ${arg}`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
positional.push(arg);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
switch (subcommand) {
|
|
161
|
+
case 'list':
|
|
162
|
+
await listApps(apiUrl);
|
|
163
|
+
break;
|
|
164
|
+
case 'unpublish': {
|
|
165
|
+
const appId = positional[0];
|
|
166
|
+
if (!appId) {
|
|
167
|
+
console.error('Usage: rool publish unpublish <app-id>');
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
await unpublishApp(apiUrl, appId);
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case 'slug': {
|
|
174
|
+
const newSlug = positional[0];
|
|
175
|
+
await showOrSetSlug(apiUrl, newSlug);
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case undefined:
|
|
179
|
+
printUsage();
|
|
180
|
+
process.exit(1);
|
|
181
|
+
break;
|
|
182
|
+
default: {
|
|
183
|
+
// Treat as: rool publish <app-id> <path>
|
|
184
|
+
const appId = subcommand;
|
|
185
|
+
const dirPath = positional[0];
|
|
186
|
+
if (!dirPath) {
|
|
187
|
+
console.error('Usage: rool publish <app-id> <path>');
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
await publishApp(apiUrl, appId, dirPath, name ?? appId, spa);
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,SAAS,UAAU;IACjB,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACtE,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC5D,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC9E,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC3F,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAChF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAc;IACrC,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAEjE,IAAI,CAAC,MAAM,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE5B,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAc,EACd,KAAa,EACb,OAAe,EACf,IAAY,EACZ,GAAY;IAEZ,4BAA4B;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uBAAuB;IACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnE,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAAc;IACpC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IAErC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,KAAa;IACvD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IAEvC,sBAAsB;IACtB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;IAErC,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,OAAgB;IAC3D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IAE3C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IAEtC,sCAAsC;IACtC,IAAI,IAAwB,CAAC;IAC7B,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,GAAG,GAAG,KAAK,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvB,MAAM;QAER,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClC,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QAED,KAAK,SAAS;YACZ,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QAER,OAAO,CAAC,CAAC,CAAC;YACR,yCAAyC;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC;YACzB,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;YAC7D,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rool-dev/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5-dev.4686b53",
|
|
4
4
|
"description": "Command-line interface for the Rool platform",
|
|
5
5
|
"packageManager": "pnpm@10.17.1",
|
|
6
6
|
"type": "module",
|
|
@@ -39,11 +39,13 @@
|
|
|
39
39
|
},
|
|
40
40
|
"license": "UNLICENSED",
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@rool-dev/client": "^0.8.
|
|
42
|
+
"@rool-dev/client": "^0.8.6",
|
|
43
|
+
"archiver": "^7.0.1",
|
|
43
44
|
"marked": "^15.0.12",
|
|
44
45
|
"marked-terminal": "^7.3.0"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
48
|
+
"@types/archiver": "^7.0.0",
|
|
47
49
|
"@types/marked-terminal": "^6.1.1",
|
|
48
50
|
"@types/node": "^25.0.2",
|
|
49
51
|
"typescript": "^5.9.3"
|