@butterbase/cli 0.1.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 +255 -0
- package/bin/butterbase.ts +137 -0
- package/dist/bin/butterbase.d.ts +3 -0
- package/dist/bin/butterbase.d.ts.map +1 -0
- package/dist/bin/butterbase.js +112 -0
- package/dist/bin/butterbase.js.map +1 -0
- package/dist/src/commands/apps.d.ts +5 -0
- package/dist/src/commands/apps.d.ts.map +1 -0
- package/dist/src/commands/apps.js +113 -0
- package/dist/src/commands/apps.js.map +1 -0
- package/dist/src/commands/config.d.ts +5 -0
- package/dist/src/commands/config.d.ts.map +1 -0
- package/dist/src/commands/config.js +43 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/functions.d.ts +15 -0
- package/dist/src/commands/functions.d.ts.map +1 -0
- package/dist/src/commands/functions.js +94 -0
- package/dist/src/commands/functions.js.map +1 -0
- package/dist/src/commands/init.d.ts +2 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +118 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/schema.d.ts +10 -0
- package/dist/src/commands/schema.d.ts.map +1 -0
- package/dist/src/commands/schema.js +69 -0
- package/dist/src/commands/schema.js.map +1 -0
- package/dist/src/commands/storage.d.ts +10 -0
- package/dist/src/commands/storage.d.ts.map +1 -0
- package/dist/src/commands/storage.js +105 -0
- package/dist/src/commands/storage.js.map +1 -0
- package/dist/src/lib/api-client.d.ts +44 -0
- package/dist/src/lib/api-client.d.ts.map +1 -0
- package/dist/src/lib/api-client.js +129 -0
- package/dist/src/lib/api-client.js.map +1 -0
- package/dist/src/lib/config.d.ts +47 -0
- package/dist/src/lib/config.d.ts.map +1 -0
- package/dist/src/lib/config.js +87 -0
- package/dist/src/lib/config.js.map +1 -0
- package/package.json +35 -0
- package/src/commands/apps.ts +130 -0
- package/src/commands/config.ts +50 -0
- package/src/commands/functions.ts +116 -0
- package/src/commands/init.ts +151 -0
- package/src/commands/schema.ts +78 -0
- package/src/commands/storage.ts +117 -0
- package/src/lib/api-client.ts +176 -0
- package/src/lib/config.ts +112 -0
- package/templates/react-vite/.env.example +2 -0
- package/templates/react-vite/README.md +38 -0
- package/templates/react-vite/index.html +13 -0
- package/templates/react-vite/package.json +25 -0
- package/templates/react-vite/src/App.css +33 -0
- package/templates/react-vite/src/App.tsx +77 -0
- package/templates/react-vite/src/index.css +8 -0
- package/templates/react-vite/src/lib.ts +6 -0
- package/templates/react-vite/src/main.tsx +10 -0
- package/templates/react-vite/tsconfig.json +21 -0
- package/templates/react-vite/vite.config.ts +6 -0
- package/tsconfig.json +20 -0
package/README.md
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# @butterbase/cli
|
|
2
|
+
|
|
3
|
+
Command-line tool for Butterbase project scaffolding and backend management.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @butterbase/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Login with your API key
|
|
15
|
+
butterbase login
|
|
16
|
+
|
|
17
|
+
# Create a new app
|
|
18
|
+
butterbase apps create my-app
|
|
19
|
+
|
|
20
|
+
# Set as current app
|
|
21
|
+
butterbase apps use app_abc123
|
|
22
|
+
|
|
23
|
+
# Get current schema
|
|
24
|
+
butterbase schema get --output schema.json
|
|
25
|
+
|
|
26
|
+
# Apply schema changes
|
|
27
|
+
butterbase schema apply schema.json
|
|
28
|
+
|
|
29
|
+
# Deploy a function
|
|
30
|
+
butterbase functions deploy ./functions/hello.ts
|
|
31
|
+
|
|
32
|
+
# Upload a file
|
|
33
|
+
butterbase storage upload ./image.png
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Commands
|
|
37
|
+
|
|
38
|
+
### Authentication
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Login
|
|
42
|
+
butterbase login
|
|
43
|
+
|
|
44
|
+
# Logout
|
|
45
|
+
butterbase logout
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Configuration
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Show current config
|
|
52
|
+
butterbase config get
|
|
53
|
+
|
|
54
|
+
# Set endpoint
|
|
55
|
+
butterbase config set endpoint https://api.butterbase.com
|
|
56
|
+
|
|
57
|
+
# Set API key
|
|
58
|
+
butterbase config set apiKey bb_key_...
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Configuration is stored in `~/.butterbase/config.json`.
|
|
62
|
+
|
|
63
|
+
### Apps
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# List all apps
|
|
67
|
+
butterbase apps list
|
|
68
|
+
|
|
69
|
+
# Create new app
|
|
70
|
+
butterbase apps create my-app
|
|
71
|
+
|
|
72
|
+
# Set current app (used by other commands)
|
|
73
|
+
butterbase apps use app_abc123
|
|
74
|
+
|
|
75
|
+
# Delete app
|
|
76
|
+
butterbase apps delete app_abc123
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Schema
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Get current schema
|
|
83
|
+
butterbase schema get
|
|
84
|
+
|
|
85
|
+
# Save schema to file
|
|
86
|
+
butterbase schema get --output schema.json
|
|
87
|
+
|
|
88
|
+
# Preview schema changes (dry-run)
|
|
89
|
+
butterbase schema apply schema.json --dry-run
|
|
90
|
+
|
|
91
|
+
# Apply schema changes
|
|
92
|
+
butterbase schema apply schema.json
|
|
93
|
+
|
|
94
|
+
# Apply with custom migration name
|
|
95
|
+
butterbase schema apply schema.json --name "add_users_table"
|
|
96
|
+
|
|
97
|
+
# Use specific app
|
|
98
|
+
butterbase schema get --app app_abc123
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Functions
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# List deployed functions
|
|
105
|
+
butterbase functions list
|
|
106
|
+
|
|
107
|
+
# Deploy function
|
|
108
|
+
butterbase functions deploy ./functions/hello.ts
|
|
109
|
+
|
|
110
|
+
# Deploy with custom name
|
|
111
|
+
butterbase functions deploy ./functions/hello.ts --name my-function
|
|
112
|
+
|
|
113
|
+
# Deploy with description
|
|
114
|
+
butterbase functions deploy ./functions/hello.ts --description "Hello world function"
|
|
115
|
+
|
|
116
|
+
# Deploy cron function
|
|
117
|
+
butterbase functions deploy ./functions/cleanup.ts --trigger cron
|
|
118
|
+
|
|
119
|
+
# View function logs
|
|
120
|
+
butterbase functions logs my-function
|
|
121
|
+
|
|
122
|
+
# View error logs only
|
|
123
|
+
butterbase functions logs my-function --level error
|
|
124
|
+
|
|
125
|
+
# Limit number of logs
|
|
126
|
+
butterbase functions logs my-function --limit 50
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Storage
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# List storage objects
|
|
133
|
+
butterbase storage list
|
|
134
|
+
|
|
135
|
+
# Upload file
|
|
136
|
+
butterbase storage upload ./image.png
|
|
137
|
+
|
|
138
|
+
# Delete object
|
|
139
|
+
butterbase storage delete obj_abc123
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Global Options
|
|
143
|
+
|
|
144
|
+
Most commands support the `--app` flag to specify an app ID:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
butterbase schema get --app app_abc123
|
|
148
|
+
butterbase functions list --app app_abc123
|
|
149
|
+
butterbase storage list --app app_abc123
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
If `--app` is not provided, the CLI uses the current app set with `butterbase apps use`.
|
|
153
|
+
|
|
154
|
+
## Configuration
|
|
155
|
+
|
|
156
|
+
The CLI stores configuration in two places:
|
|
157
|
+
|
|
158
|
+
1. **Global config**: `~/.butterbase/config.json`
|
|
159
|
+
- API key
|
|
160
|
+
- Default endpoint
|
|
161
|
+
- Current app
|
|
162
|
+
|
|
163
|
+
2. **Project config**: `.butterbase/config.json` (in project directory)
|
|
164
|
+
- App ID
|
|
165
|
+
- Endpoint override
|
|
166
|
+
|
|
167
|
+
Project config takes precedence over global config.
|
|
168
|
+
|
|
169
|
+
## Environment Variables
|
|
170
|
+
|
|
171
|
+
You can also configure the CLI using environment variables:
|
|
172
|
+
|
|
173
|
+
- `BUTTERBASE_API_KEY` - API key
|
|
174
|
+
- `BUTTERBASE_ENDPOINT` - API endpoint URL
|
|
175
|
+
|
|
176
|
+
## Examples
|
|
177
|
+
|
|
178
|
+
### Complete Workflow
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# 1. Login
|
|
182
|
+
butterbase login
|
|
183
|
+
|
|
184
|
+
# 2. Create app
|
|
185
|
+
butterbase apps create my-grocery-app
|
|
186
|
+
|
|
187
|
+
# 3. Set as current
|
|
188
|
+
butterbase apps use app_abc123
|
|
189
|
+
|
|
190
|
+
# 4. Create schema file
|
|
191
|
+
cat > schema.json <<EOF
|
|
192
|
+
{
|
|
193
|
+
"tables": {
|
|
194
|
+
"grocery_items": {
|
|
195
|
+
"columns": {
|
|
196
|
+
"id": { "type": "uuid", "primaryKey": true, "default": "gen_random_uuid()" },
|
|
197
|
+
"name": { "type": "text" },
|
|
198
|
+
"quantity": { "type": "integer", "default": "1" },
|
|
199
|
+
"purchased": { "type": "boolean", "default": "false" },
|
|
200
|
+
"user_id": { "type": "uuid" },
|
|
201
|
+
"created_at": { "type": "timestamptz", "default": "now()" }
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
EOF
|
|
207
|
+
|
|
208
|
+
# 5. Apply schema
|
|
209
|
+
butterbase schema apply schema.json
|
|
210
|
+
|
|
211
|
+
# 6. Deploy function
|
|
212
|
+
butterbase functions deploy ./functions/add-item.ts
|
|
213
|
+
|
|
214
|
+
# 7. Upload image
|
|
215
|
+
butterbase storage upload ./logo.png
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Working with Multiple Apps
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Create production app
|
|
222
|
+
butterbase apps create my-app-prod
|
|
223
|
+
# Returns: app_prod123
|
|
224
|
+
|
|
225
|
+
# Create staging app
|
|
226
|
+
butterbase apps create my-app-staging
|
|
227
|
+
# Returns: app_staging456
|
|
228
|
+
|
|
229
|
+
# Deploy to production
|
|
230
|
+
butterbase functions deploy ./functions/api.ts --app app_prod123
|
|
231
|
+
|
|
232
|
+
# Deploy to staging
|
|
233
|
+
butterbase functions deploy ./functions/api.ts --app app_staging456
|
|
234
|
+
|
|
235
|
+
# Switch between apps
|
|
236
|
+
butterbase apps use app_prod123
|
|
237
|
+
butterbase apps use app_staging456
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Development
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Install dependencies
|
|
244
|
+
npm install
|
|
245
|
+
|
|
246
|
+
# Build
|
|
247
|
+
npm run build
|
|
248
|
+
|
|
249
|
+
# Test locally
|
|
250
|
+
node dist/bin/butterbase.js --help
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## License
|
|
254
|
+
|
|
255
|
+
MIT
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { initCommand } from '../src/commands/init.js';
|
|
5
|
+
import { loginCommand, logoutCommand, configGetCommand, configSetCommand } from '../src/commands/config.js';
|
|
6
|
+
import { appsListCommand, appsCreateCommand, appsUseCommand, appsDeleteCommand } from '../src/commands/apps.js';
|
|
7
|
+
import { schemaGetCommand, schemaApplyCommand } from '../src/commands/schema.js';
|
|
8
|
+
import { functionsListCommand, functionsDeployCommand, functionsLogsCommand } from '../src/commands/functions.js';
|
|
9
|
+
import { storageListCommand, storageUploadCommand, storageDeleteCommand } from '../src/commands/storage.js';
|
|
10
|
+
|
|
11
|
+
const program = new Command();
|
|
12
|
+
|
|
13
|
+
program
|
|
14
|
+
.name('butterbase')
|
|
15
|
+
.description('Butterbase CLI - Backend as a Service')
|
|
16
|
+
.version('0.1.0');
|
|
17
|
+
|
|
18
|
+
// Init
|
|
19
|
+
program
|
|
20
|
+
.command('init [template]')
|
|
21
|
+
.description('Initialize a new Butterbase project')
|
|
22
|
+
.action(initCommand);
|
|
23
|
+
|
|
24
|
+
// Login/Logout
|
|
25
|
+
program
|
|
26
|
+
.command('login')
|
|
27
|
+
.description('Authenticate with Butterbase')
|
|
28
|
+
.action(loginCommand);
|
|
29
|
+
|
|
30
|
+
program
|
|
31
|
+
.command('logout')
|
|
32
|
+
.description('Clear authentication credentials')
|
|
33
|
+
.action(logoutCommand);
|
|
34
|
+
|
|
35
|
+
// Config
|
|
36
|
+
const config = program.command('config').description('Manage configuration');
|
|
37
|
+
|
|
38
|
+
config
|
|
39
|
+
.command('get')
|
|
40
|
+
.description('Show current configuration')
|
|
41
|
+
.action(configGetCommand);
|
|
42
|
+
|
|
43
|
+
config
|
|
44
|
+
.command('set <key> <value>')
|
|
45
|
+
.description('Set a configuration value')
|
|
46
|
+
.action(configSetCommand);
|
|
47
|
+
|
|
48
|
+
// Apps
|
|
49
|
+
const apps = program.command('apps').description('Manage apps');
|
|
50
|
+
|
|
51
|
+
apps
|
|
52
|
+
.command('list')
|
|
53
|
+
.description('List all apps')
|
|
54
|
+
.action(appsListCommand);
|
|
55
|
+
|
|
56
|
+
apps
|
|
57
|
+
.command('create [name]')
|
|
58
|
+
.description('Create a new app')
|
|
59
|
+
.action(appsCreateCommand);
|
|
60
|
+
|
|
61
|
+
apps
|
|
62
|
+
.command('use <app-id>')
|
|
63
|
+
.description('Set the current app')
|
|
64
|
+
.action(appsUseCommand);
|
|
65
|
+
|
|
66
|
+
apps
|
|
67
|
+
.command('delete <app-id>')
|
|
68
|
+
.description('Delete an app')
|
|
69
|
+
.action(appsDeleteCommand);
|
|
70
|
+
|
|
71
|
+
// Schema
|
|
72
|
+
const schema = program.command('schema').description('Manage database schema');
|
|
73
|
+
|
|
74
|
+
schema
|
|
75
|
+
.command('get')
|
|
76
|
+
.description('Get current schema')
|
|
77
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
78
|
+
.option('--output <file>', 'Save schema to file')
|
|
79
|
+
.action(schemaGetCommand);
|
|
80
|
+
|
|
81
|
+
schema
|
|
82
|
+
.command('apply <file>')
|
|
83
|
+
.description('Apply schema from file')
|
|
84
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
85
|
+
.option('--dry-run', 'Preview changes without applying')
|
|
86
|
+
.option('--name <name>', 'Migration name')
|
|
87
|
+
.action(schemaApplyCommand);
|
|
88
|
+
|
|
89
|
+
// Functions
|
|
90
|
+
const functions = program.command('functions').description('Manage serverless functions');
|
|
91
|
+
|
|
92
|
+
functions
|
|
93
|
+
.command('list')
|
|
94
|
+
.description('List deployed functions')
|
|
95
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
96
|
+
.action(functionsListCommand);
|
|
97
|
+
|
|
98
|
+
functions
|
|
99
|
+
.command('deploy <file>')
|
|
100
|
+
.description('Deploy a function')
|
|
101
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
102
|
+
.option('--name <name>', 'Function name (defaults to filename)')
|
|
103
|
+
.option('--trigger <type>', 'Trigger type (http, cron)', 'http')
|
|
104
|
+
.option('--description <desc>', 'Function description')
|
|
105
|
+
.action(functionsDeployCommand);
|
|
106
|
+
|
|
107
|
+
functions
|
|
108
|
+
.command('logs <function-name>')
|
|
109
|
+
.description('View function logs')
|
|
110
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
111
|
+
.option('--level <level>', 'Filter by log level (error, all)')
|
|
112
|
+
.option('--limit <number>', 'Number of logs to fetch', '100')
|
|
113
|
+
.action(functionsLogsCommand);
|
|
114
|
+
|
|
115
|
+
// Storage
|
|
116
|
+
const storage = program.command('storage').description('Manage file storage');
|
|
117
|
+
|
|
118
|
+
storage
|
|
119
|
+
.command('list')
|
|
120
|
+
.description('List storage objects')
|
|
121
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
122
|
+
.action(storageListCommand);
|
|
123
|
+
|
|
124
|
+
storage
|
|
125
|
+
.command('upload <file>')
|
|
126
|
+
.description('Upload a file')
|
|
127
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
128
|
+
.action(storageUploadCommand);
|
|
129
|
+
|
|
130
|
+
storage
|
|
131
|
+
.command('delete <object-id>')
|
|
132
|
+
.description('Delete a storage object')
|
|
133
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
134
|
+
.action(storageDeleteCommand);
|
|
135
|
+
|
|
136
|
+
// Parse arguments
|
|
137
|
+
program.parse();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"butterbase.d.ts","sourceRoot":"","sources":["../../bin/butterbase.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { initCommand } from '../src/commands/init.js';
|
|
4
|
+
import { loginCommand, logoutCommand, configGetCommand, configSetCommand } from '../src/commands/config.js';
|
|
5
|
+
import { appsListCommand, appsCreateCommand, appsUseCommand, appsDeleteCommand } from '../src/commands/apps.js';
|
|
6
|
+
import { schemaGetCommand, schemaApplyCommand } from '../src/commands/schema.js';
|
|
7
|
+
import { functionsListCommand, functionsDeployCommand, functionsLogsCommand } from '../src/commands/functions.js';
|
|
8
|
+
import { storageListCommand, storageUploadCommand, storageDeleteCommand } from '../src/commands/storage.js';
|
|
9
|
+
const program = new Command();
|
|
10
|
+
program
|
|
11
|
+
.name('butterbase')
|
|
12
|
+
.description('Butterbase CLI - Backend as a Service')
|
|
13
|
+
.version('0.1.0');
|
|
14
|
+
// Init
|
|
15
|
+
program
|
|
16
|
+
.command('init [template]')
|
|
17
|
+
.description('Initialize a new Butterbase project')
|
|
18
|
+
.action(initCommand);
|
|
19
|
+
// Login/Logout
|
|
20
|
+
program
|
|
21
|
+
.command('login')
|
|
22
|
+
.description('Authenticate with Butterbase')
|
|
23
|
+
.action(loginCommand);
|
|
24
|
+
program
|
|
25
|
+
.command('logout')
|
|
26
|
+
.description('Clear authentication credentials')
|
|
27
|
+
.action(logoutCommand);
|
|
28
|
+
// Config
|
|
29
|
+
const config = program.command('config').description('Manage configuration');
|
|
30
|
+
config
|
|
31
|
+
.command('get')
|
|
32
|
+
.description('Show current configuration')
|
|
33
|
+
.action(configGetCommand);
|
|
34
|
+
config
|
|
35
|
+
.command('set <key> <value>')
|
|
36
|
+
.description('Set a configuration value')
|
|
37
|
+
.action(configSetCommand);
|
|
38
|
+
// Apps
|
|
39
|
+
const apps = program.command('apps').description('Manage apps');
|
|
40
|
+
apps
|
|
41
|
+
.command('list')
|
|
42
|
+
.description('List all apps')
|
|
43
|
+
.action(appsListCommand);
|
|
44
|
+
apps
|
|
45
|
+
.command('create [name]')
|
|
46
|
+
.description('Create a new app')
|
|
47
|
+
.action(appsCreateCommand);
|
|
48
|
+
apps
|
|
49
|
+
.command('use <app-id>')
|
|
50
|
+
.description('Set the current app')
|
|
51
|
+
.action(appsUseCommand);
|
|
52
|
+
apps
|
|
53
|
+
.command('delete <app-id>')
|
|
54
|
+
.description('Delete an app')
|
|
55
|
+
.action(appsDeleteCommand);
|
|
56
|
+
// Schema
|
|
57
|
+
const schema = program.command('schema').description('Manage database schema');
|
|
58
|
+
schema
|
|
59
|
+
.command('get')
|
|
60
|
+
.description('Get current schema')
|
|
61
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
62
|
+
.option('--output <file>', 'Save schema to file')
|
|
63
|
+
.action(schemaGetCommand);
|
|
64
|
+
schema
|
|
65
|
+
.command('apply <file>')
|
|
66
|
+
.description('Apply schema from file')
|
|
67
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
68
|
+
.option('--dry-run', 'Preview changes without applying')
|
|
69
|
+
.option('--name <name>', 'Migration name')
|
|
70
|
+
.action(schemaApplyCommand);
|
|
71
|
+
// Functions
|
|
72
|
+
const functions = program.command('functions').description('Manage serverless functions');
|
|
73
|
+
functions
|
|
74
|
+
.command('list')
|
|
75
|
+
.description('List deployed functions')
|
|
76
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
77
|
+
.action(functionsListCommand);
|
|
78
|
+
functions
|
|
79
|
+
.command('deploy <file>')
|
|
80
|
+
.description('Deploy a function')
|
|
81
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
82
|
+
.option('--name <name>', 'Function name (defaults to filename)')
|
|
83
|
+
.option('--trigger <type>', 'Trigger type (http, cron)', 'http')
|
|
84
|
+
.option('--description <desc>', 'Function description')
|
|
85
|
+
.action(functionsDeployCommand);
|
|
86
|
+
functions
|
|
87
|
+
.command('logs <function-name>')
|
|
88
|
+
.description('View function logs')
|
|
89
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
90
|
+
.option('--level <level>', 'Filter by log level (error, all)')
|
|
91
|
+
.option('--limit <number>', 'Number of logs to fetch', '100')
|
|
92
|
+
.action(functionsLogsCommand);
|
|
93
|
+
// Storage
|
|
94
|
+
const storage = program.command('storage').description('Manage file storage');
|
|
95
|
+
storage
|
|
96
|
+
.command('list')
|
|
97
|
+
.description('List storage objects')
|
|
98
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
99
|
+
.action(storageListCommand);
|
|
100
|
+
storage
|
|
101
|
+
.command('upload <file>')
|
|
102
|
+
.description('Upload a file')
|
|
103
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
104
|
+
.action(storageUploadCommand);
|
|
105
|
+
storage
|
|
106
|
+
.command('delete <object-id>')
|
|
107
|
+
.description('Delete a storage object')
|
|
108
|
+
.option('--app <app-id>', 'App ID (uses current app if not specified)')
|
|
109
|
+
.action(storageDeleteCommand);
|
|
110
|
+
// Parse arguments
|
|
111
|
+
program.parse();
|
|
112
|
+
//# sourceMappingURL=butterbase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"butterbase.js","sourceRoot":"","sources":["../../bin/butterbase.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAClH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE5G,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,uCAAuC,CAAC;KACpD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;AACP,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,SAAS;AACT,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAE7E,MAAM;KACH,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,MAAM;KACH,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,OAAO;AACP,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAEhE,IAAI;KACD,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,IAAI;KACD,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,IAAI;KACD,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,IAAI;KACD,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,SAAS;AACT,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;AAE/E,MAAM;KACH,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;KAChD,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,MAAM;KACH,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9B,YAAY;AACZ,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;AAE1F,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,SAAS;KACN,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;KAC/D,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,CAAC;KAC/D,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;KACtD,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAElC,SAAS;KACN,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;KAC7D,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,KAAK,CAAC;KAC5D,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,UAAU;AACV,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAE9E,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function appsListCommand(): Promise<void>;
|
|
2
|
+
export declare function appsCreateCommand(name: string): Promise<void>;
|
|
3
|
+
export declare function appsUseCommand(appId: string): Promise<void>;
|
|
4
|
+
export declare function appsDeleteCommand(appId: string): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=apps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../../src/commands/apps.ts"],"names":[],"mappings":"AAMA,wBAAsB,eAAe,kBA4BpC;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,iBA4CnD;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,iBASjD;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,iBAoCpD"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import prompts from 'prompts';
|
|
4
|
+
import { initApp, listApps, deleteApp } from '../lib/api-client.js';
|
|
5
|
+
import { setCurrentAppId, getCurrentAppId } from '../lib/config.js';
|
|
6
|
+
export async function appsListCommand() {
|
|
7
|
+
const spinner = ora('Fetching apps...').start();
|
|
8
|
+
try {
|
|
9
|
+
const response = await listApps();
|
|
10
|
+
spinner.stop();
|
|
11
|
+
if (!response.apps || response.apps.length === 0) {
|
|
12
|
+
console.log(chalk.yellow('No apps found'));
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const currentAppId = await getCurrentAppId();
|
|
16
|
+
console.log(chalk.blue('\nYour apps:\n'));
|
|
17
|
+
for (const app of response.apps) {
|
|
18
|
+
const isCurrent = app.id === currentAppId;
|
|
19
|
+
const marker = isCurrent ? chalk.green('→') : ' ';
|
|
20
|
+
console.log(`${marker} ${chalk.bold(app.name)} ${chalk.gray(`(${app.id})`)}`);
|
|
21
|
+
if (isCurrent) {
|
|
22
|
+
console.log(chalk.gray(` Current app`));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
spinner.fail('Failed to fetch apps');
|
|
28
|
+
console.error(chalk.red(error.message));
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export async function appsCreateCommand(name) {
|
|
33
|
+
if (!name) {
|
|
34
|
+
const response = await prompts({
|
|
35
|
+
type: 'text',
|
|
36
|
+
name: 'name',
|
|
37
|
+
message: 'App name:',
|
|
38
|
+
validate: (value) => value.length > 0 || 'App name is required',
|
|
39
|
+
});
|
|
40
|
+
if (!response.name) {
|
|
41
|
+
console.log(chalk.yellow('Cancelled'));
|
|
42
|
+
process.exit(0);
|
|
43
|
+
}
|
|
44
|
+
name = response.name;
|
|
45
|
+
}
|
|
46
|
+
const spinner = ora(`Creating app "${name}"...`).start();
|
|
47
|
+
try {
|
|
48
|
+
const response = await initApp(name);
|
|
49
|
+
spinner.succeed(`Created app "${name}"`);
|
|
50
|
+
console.log(chalk.green('\n✓ App created successfully!'));
|
|
51
|
+
console.log(chalk.gray(` App ID: ${response.app_id}`));
|
|
52
|
+
console.log(chalk.gray(` API URL: ${response.api_url}`));
|
|
53
|
+
// Ask if they want to set it as current app
|
|
54
|
+
const { setCurrent } = await prompts({
|
|
55
|
+
type: 'confirm',
|
|
56
|
+
name: 'setCurrent',
|
|
57
|
+
message: 'Set as current app?',
|
|
58
|
+
initial: true,
|
|
59
|
+
});
|
|
60
|
+
if (setCurrent) {
|
|
61
|
+
await setCurrentAppId(response.app_id);
|
|
62
|
+
console.log(chalk.green('✓ Set as current app'));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
spinner.fail('Failed to create app');
|
|
67
|
+
console.error(chalk.red(error.message));
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export async function appsUseCommand(appId) {
|
|
72
|
+
if (!appId) {
|
|
73
|
+
console.log(chalk.red('✗ App ID is required'));
|
|
74
|
+
console.log(chalk.gray('Usage: butterbase apps use <app-id>'));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
await setCurrentAppId(appId);
|
|
78
|
+
console.log(chalk.green(`✓ Now using app: ${appId}`));
|
|
79
|
+
}
|
|
80
|
+
export async function appsDeleteCommand(appId) {
|
|
81
|
+
if (!appId) {
|
|
82
|
+
console.log(chalk.red('✗ App ID is required'));
|
|
83
|
+
console.log(chalk.gray('Usage: butterbase apps delete <app-id>'));
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
const { confirm } = await prompts({
|
|
87
|
+
type: 'confirm',
|
|
88
|
+
name: 'confirm',
|
|
89
|
+
message: `Are you sure you want to delete app ${appId}? This cannot be undone.`,
|
|
90
|
+
initial: false,
|
|
91
|
+
});
|
|
92
|
+
if (!confirm) {
|
|
93
|
+
console.log(chalk.yellow('Cancelled'));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const spinner = ora('Deleting app...').start();
|
|
97
|
+
try {
|
|
98
|
+
await deleteApp(appId);
|
|
99
|
+
spinner.succeed('App deleted');
|
|
100
|
+
// Clear current app if it was deleted
|
|
101
|
+
const currentAppId = await getCurrentAppId();
|
|
102
|
+
if (currentAppId === appId) {
|
|
103
|
+
await setCurrentAppId('');
|
|
104
|
+
console.log(chalk.gray('Cleared current app'));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
spinner.fail('Failed to delete app');
|
|
109
|
+
console.error(chalk.red(error.message));
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../../src/commands/apps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function loginCommand(): Promise<void>;
|
|
2
|
+
export declare function logoutCommand(): Promise<void>;
|
|
3
|
+
export declare function configGetCommand(): Promise<void>;
|
|
4
|
+
export declare function configSetCommand(key: string, value: string): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/config.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,kBAmBjC;AAED,wBAAsB,aAAa,kBAGlC;AAED,wBAAsB,gBAAgB,kBAIrC;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAahE"}
|