aspire2coolify 1.0.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 +202 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +221 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/index.d.ts +29 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +76 -0
- package/dist/config/index.js.map +1 -0
- package/dist/generators/coolify/application.d.ts +7 -0
- package/dist/generators/coolify/application.d.ts.map +1 -0
- package/dist/generators/coolify/application.js +65 -0
- package/dist/generators/coolify/application.js.map +1 -0
- package/dist/generators/coolify/database.d.ts +11 -0
- package/dist/generators/coolify/database.d.ts.map +1 -0
- package/dist/generators/coolify/database.js +60 -0
- package/dist/generators/coolify/database.js.map +1 -0
- package/dist/generators/coolify/index.d.ts +24 -0
- package/dist/generators/coolify/index.d.ts.map +1 -0
- package/dist/generators/coolify/index.js +105 -0
- package/dist/generators/coolify/index.js.map +1 -0
- package/dist/generators/coolify/service.d.ts +8 -0
- package/dist/generators/coolify/service.d.ts.map +1 -0
- package/dist/generators/coolify/service.js +75 -0
- package/dist/generators/coolify/service.js.map +1 -0
- package/dist/models/aspire.d.ts +87 -0
- package/dist/models/aspire.d.ts.map +1 -0
- package/dist/models/aspire.js +14 -0
- package/dist/models/aspire.js.map +1 -0
- package/dist/models/coolify.d.ts +41 -0
- package/dist/models/coolify.d.ts.map +1 -0
- package/dist/models/coolify.js +19 -0
- package/dist/models/coolify.js.map +1 -0
- package/dist/parser/extractors/application.d.ts +8 -0
- package/dist/parser/extractors/application.d.ts.map +1 -0
- package/dist/parser/extractors/application.js +150 -0
- package/dist/parser/extractors/application.js.map +1 -0
- package/dist/parser/extractors/container.d.ts +8 -0
- package/dist/parser/extractors/container.d.ts.map +1 -0
- package/dist/parser/extractors/container.js +141 -0
- package/dist/parser/extractors/container.js.map +1 -0
- package/dist/parser/extractors/database.d.ts +12 -0
- package/dist/parser/extractors/database.d.ts.map +1 -0
- package/dist/parser/extractors/database.js +128 -0
- package/dist/parser/extractors/database.js.map +1 -0
- package/dist/parser/extractors/index.d.ts +7 -0
- package/dist/parser/extractors/index.d.ts.map +1 -0
- package/dist/parser/extractors/index.js +7 -0
- package/dist/parser/extractors/index.js.map +1 -0
- package/dist/parser/index.d.ts +27 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +201 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/tokenizer.d.ts +45 -0
- package/dist/parser/tokenizer.d.ts.map +1 -0
- package/dist/parser/tokenizer.js +166 -0
- package/dist/parser/tokenizer.js.map +1 -0
- package/package.json +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# aspire2coolify
|
|
2
|
+
|
|
3
|
+
CLI tool to convert .NET Aspire configurations to Coolify CLI commands.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g aspire2coolify
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or run locally:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install
|
|
15
|
+
npm run build
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
### Parse Command
|
|
21
|
+
|
|
22
|
+
Parse an Aspire Program.cs file and display the extracted model:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
aspire2coolify parse ./AppHost/Program.cs
|
|
26
|
+
|
|
27
|
+
# Output to file
|
|
28
|
+
aspire2coolify parse ./AppHost/Program.cs -o model.json
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Generate Command
|
|
32
|
+
|
|
33
|
+
Generate Coolify CLI commands from an Aspire Program.cs file:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
aspire2coolify generate ./AppHost/Program.cs
|
|
37
|
+
|
|
38
|
+
# Output to file
|
|
39
|
+
aspire2coolify generate ./AppHost/Program.cs -o deploy.sh
|
|
40
|
+
|
|
41
|
+
# With Coolify project/server IDs
|
|
42
|
+
aspire2coolify generate ./AppHost/Program.cs \
|
|
43
|
+
--project-id proj-123 \
|
|
44
|
+
--server-id srv-456
|
|
45
|
+
|
|
46
|
+
# Output as JSON
|
|
47
|
+
aspire2coolify generate ./AppHost/Program.cs --json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Deploy Command
|
|
51
|
+
|
|
52
|
+
Parse and execute Coolify commands (requires `coolify` CLI to be installed):
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Dry run (shows commands without executing)
|
|
56
|
+
aspire2coolify deploy ./AppHost/Program.cs --dry-run
|
|
57
|
+
|
|
58
|
+
# Execute commands
|
|
59
|
+
aspire2coolify deploy ./AppHost/Program.cs
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Init Command
|
|
63
|
+
|
|
64
|
+
Create a configuration file:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
aspire2coolify init
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Example
|
|
71
|
+
|
|
72
|
+
### Input (Program.cs)
|
|
73
|
+
|
|
74
|
+
```csharp
|
|
75
|
+
var builder = DistributedApplication.CreateBuilder(args);
|
|
76
|
+
|
|
77
|
+
var postgres = builder.AddAzurePostgresFlexibleServer("postgreServer")
|
|
78
|
+
.RunAsContainer(a => a
|
|
79
|
+
.WithImage("pgvector/pgvector")
|
|
80
|
+
.WithImageTag("pg17")
|
|
81
|
+
.WithDataVolume()
|
|
82
|
+
.WithHostPort(5432)
|
|
83
|
+
);
|
|
84
|
+
var db = postgres.AddDatabase("db");
|
|
85
|
+
|
|
86
|
+
builder.AddNpmApp("svelte", "../VibeCode.SvelteKit")
|
|
87
|
+
.WithEnvironment("BODY_SIZE_LIMIT", "10M")
|
|
88
|
+
.WithHttpEndpoint(env: "PORT")
|
|
89
|
+
.WithReference(db)
|
|
90
|
+
.PublishAsDockerFile();
|
|
91
|
+
|
|
92
|
+
builder.Build().Run();
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Output (Coolify Commands)
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
#!/bin/bash
|
|
99
|
+
# Generated by aspire2coolify
|
|
100
|
+
|
|
101
|
+
# Database: postgreServer (postgres)
|
|
102
|
+
coolify \
|
|
103
|
+
database:create \
|
|
104
|
+
--name "postgreServer" \
|
|
105
|
+
--type postgres \
|
|
106
|
+
--image "pgvector/pgvector:pg17" \
|
|
107
|
+
--public-port 5432
|
|
108
|
+
|
|
109
|
+
# Database: db (postgres)
|
|
110
|
+
coolify \
|
|
111
|
+
database:create \
|
|
112
|
+
--name "db" \
|
|
113
|
+
--type postgres
|
|
114
|
+
|
|
115
|
+
# Application: svelte (npm)
|
|
116
|
+
coolify \
|
|
117
|
+
application:create \
|
|
118
|
+
--name "svelte" \
|
|
119
|
+
--build-pack dockerfile \
|
|
120
|
+
--source "../VibeCode.SvelteKit" \
|
|
121
|
+
--env "BODY_SIZE_LIMIT=10M" \
|
|
122
|
+
--env "DATABASE_URL=${db.connectionString}" \
|
|
123
|
+
--env "PORT=3000"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Configuration
|
|
127
|
+
|
|
128
|
+
Create an `aspire2coolify.config.js` file:
|
|
129
|
+
|
|
130
|
+
```javascript
|
|
131
|
+
export default {
|
|
132
|
+
coolify: {
|
|
133
|
+
projectId: 'your-project-id',
|
|
134
|
+
serverId: 'your-server-id',
|
|
135
|
+
environmentId: 'your-environment-id',
|
|
136
|
+
},
|
|
137
|
+
defaults: {
|
|
138
|
+
buildPack: 'nixpacks',
|
|
139
|
+
},
|
|
140
|
+
output: {
|
|
141
|
+
includeComments: true,
|
|
142
|
+
format: 'shell',
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Supported Aspire Methods
|
|
148
|
+
|
|
149
|
+
### Databases
|
|
150
|
+
- `AddPostgres`, `AddAzurePostgresFlexibleServer`
|
|
151
|
+
- `AddSqlServer`, `AddAzureSqlServer`
|
|
152
|
+
- `AddMySql`
|
|
153
|
+
- `AddMongoDB`
|
|
154
|
+
- `AddRedis`
|
|
155
|
+
|
|
156
|
+
### Services
|
|
157
|
+
- `AddRabbitMQ`
|
|
158
|
+
- `AddKafka`
|
|
159
|
+
- `AddKeycloak`
|
|
160
|
+
- `AddSeq`
|
|
161
|
+
- `AddMailDev`
|
|
162
|
+
- `AddElasticsearch`
|
|
163
|
+
|
|
164
|
+
### Storage
|
|
165
|
+
- `AddMinioContainer`
|
|
166
|
+
|
|
167
|
+
### Applications
|
|
168
|
+
- `AddNpmApp`, `AddNodeApp`
|
|
169
|
+
- `AddProject<T>`
|
|
170
|
+
- `AddDockerfile`
|
|
171
|
+
- `AddContainer`
|
|
172
|
+
|
|
173
|
+
### Configuration Methods
|
|
174
|
+
- `WithEnvironment(key, value)`
|
|
175
|
+
- `WithReference(resource)`
|
|
176
|
+
- `WithHttpEndpoint()`, `WithHttpsEndpoint()`
|
|
177
|
+
- `WithExternalHttpEndpoints()`
|
|
178
|
+
- `WithHostPort(port)`
|
|
179
|
+
- `WithImage(image)`, `WithImageTag(tag)`
|
|
180
|
+
- `WithDataVolume()`
|
|
181
|
+
- `PublishAsDockerFile()`
|
|
182
|
+
- `RunAsContainer()`
|
|
183
|
+
|
|
184
|
+
## Development
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Install dependencies
|
|
188
|
+
npm install
|
|
189
|
+
|
|
190
|
+
# Build
|
|
191
|
+
npm run build
|
|
192
|
+
|
|
193
|
+
# Run tests
|
|
194
|
+
npm test
|
|
195
|
+
|
|
196
|
+
# Watch mode
|
|
197
|
+
npm run dev
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## License
|
|
201
|
+
|
|
202
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* aspire2coolify CLI
|
|
4
|
+
* Convert .NET Aspire configurations to Coolify CLI commands
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { writeFileSync, existsSync } from 'node:fs';
|
|
8
|
+
import { resolve } from 'node:path';
|
|
9
|
+
import { execSync } from 'node:child_process';
|
|
10
|
+
import { parseFile } from '../parser/index.js';
|
|
11
|
+
import { generate } from '../generators/coolify/index.js';
|
|
12
|
+
import { loadConfig, createConfigTemplate } from '../config/index.js';
|
|
13
|
+
const program = new Command();
|
|
14
|
+
program
|
|
15
|
+
.name('aspire2coolify')
|
|
16
|
+
.description('Convert .NET Aspire configurations to Coolify CLI commands')
|
|
17
|
+
.version('1.0.0');
|
|
18
|
+
// Parse command
|
|
19
|
+
program
|
|
20
|
+
.command('parse <file>')
|
|
21
|
+
.description('Parse an Aspire Program.cs file and display the extracted model')
|
|
22
|
+
.option('-o, --output <file>', 'Output file for the JSON model')
|
|
23
|
+
.option('--pretty', 'Pretty print JSON output', true)
|
|
24
|
+
.action(async (file, options) => {
|
|
25
|
+
try {
|
|
26
|
+
const filePath = resolve(file);
|
|
27
|
+
if (!existsSync(filePath)) {
|
|
28
|
+
console.error(`Error: File not found: ${filePath}`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
console.log(`Parsing: ${filePath}`);
|
|
32
|
+
const result = parseFile(filePath);
|
|
33
|
+
if (result.errors.length > 0) {
|
|
34
|
+
console.error('\nErrors:');
|
|
35
|
+
for (const error of result.errors) {
|
|
36
|
+
console.error(` - ${error.message}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (result.warnings.length > 0) {
|
|
40
|
+
console.warn('\nWarnings:');
|
|
41
|
+
for (const warning of result.warnings) {
|
|
42
|
+
console.warn(` - ${warning}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const jsonOutput = options.pretty
|
|
46
|
+
? JSON.stringify(result.app, null, 2)
|
|
47
|
+
: JSON.stringify(result.app);
|
|
48
|
+
if (options.output) {
|
|
49
|
+
writeFileSync(options.output, jsonOutput);
|
|
50
|
+
console.log(`\nModel saved to: ${options.output}`);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
console.log('\nExtracted Model:');
|
|
54
|
+
console.log(jsonOutput);
|
|
55
|
+
}
|
|
56
|
+
// Summary
|
|
57
|
+
console.log('\nSummary:');
|
|
58
|
+
console.log(` Databases: ${result.app.databases.length}`);
|
|
59
|
+
console.log(` Services: ${result.app.services.length}`);
|
|
60
|
+
console.log(` Storage: ${result.app.storage.length}`);
|
|
61
|
+
console.log(` Applications: ${result.app.applications.length}`);
|
|
62
|
+
console.log(` References: ${result.app.references.length}`);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
console.error(`Error: ${err instanceof Error ? err.message : err}`);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
// Generate command
|
|
70
|
+
program
|
|
71
|
+
.command('generate <file>')
|
|
72
|
+
.description('Generate Coolify CLI commands from an Aspire Program.cs file')
|
|
73
|
+
.option('-o, --output <file>', 'Output file for the generated script')
|
|
74
|
+
.option('-c, --config <file>', 'Config file path')
|
|
75
|
+
.option('--no-comments', 'Exclude comments from output')
|
|
76
|
+
.option('--project-id <id>', 'Coolify project ID')
|
|
77
|
+
.option('--server-id <id>', 'Coolify server ID')
|
|
78
|
+
.option('--environment-id <id>', 'Coolify environment ID')
|
|
79
|
+
.option('--json', 'Output as JSON instead of shell script')
|
|
80
|
+
.action(async (file, options) => {
|
|
81
|
+
try {
|
|
82
|
+
const filePath = resolve(file);
|
|
83
|
+
if (!existsSync(filePath)) {
|
|
84
|
+
console.error(`Error: File not found: ${filePath}`);
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
// Load config
|
|
88
|
+
const config = options.config
|
|
89
|
+
? await import(resolve(options.config)).then((m) => m.default || m)
|
|
90
|
+
: await loadConfig();
|
|
91
|
+
console.log(`Parsing: ${filePath}`);
|
|
92
|
+
const parseResult = parseFile(filePath);
|
|
93
|
+
if (parseResult.errors.length > 0) {
|
|
94
|
+
console.error('\nParse Errors:');
|
|
95
|
+
for (const error of parseResult.errors) {
|
|
96
|
+
console.error(` - ${error.message}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Generate commands
|
|
100
|
+
const generateResult = generate(parseResult.app, {
|
|
101
|
+
includeComments: options.comments !== false,
|
|
102
|
+
projectId: options.projectId || config.coolify?.projectId,
|
|
103
|
+
serverId: options.serverId || config.coolify?.serverId,
|
|
104
|
+
environmentId: options.environmentId || config.coolify?.environmentId,
|
|
105
|
+
});
|
|
106
|
+
if (generateResult.errors.length > 0) {
|
|
107
|
+
console.error('\nGeneration Errors:');
|
|
108
|
+
for (const error of generateResult.errors) {
|
|
109
|
+
console.error(` - ${error}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Output
|
|
113
|
+
let output;
|
|
114
|
+
if (options.json) {
|
|
115
|
+
output = JSON.stringify(generateResult.commands, null, 2);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
output = generateResult.script;
|
|
119
|
+
}
|
|
120
|
+
if (options.output) {
|
|
121
|
+
writeFileSync(options.output, output);
|
|
122
|
+
console.log(`\nScript saved to: ${options.output}`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
console.log('\nGenerated Commands:');
|
|
126
|
+
console.log('─'.repeat(50));
|
|
127
|
+
console.log(output);
|
|
128
|
+
}
|
|
129
|
+
// Summary
|
|
130
|
+
console.log('\nGenerated:');
|
|
131
|
+
console.log(` ${generateResult.commands.length} Coolify commands`);
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
console.error(`Error: ${err instanceof Error ? err.message : err}`);
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
// Deploy command
|
|
139
|
+
program
|
|
140
|
+
.command('deploy <file>')
|
|
141
|
+
.description('Parse and execute Coolify commands (requires coolify CLI)')
|
|
142
|
+
.option('-c, --config <file>', 'Config file path')
|
|
143
|
+
.option('--dry-run', 'Print commands without executing')
|
|
144
|
+
.option('--project-id <id>', 'Coolify project ID')
|
|
145
|
+
.option('--server-id <id>', 'Coolify server ID')
|
|
146
|
+
.option('--environment-id <id>', 'Coolify environment ID')
|
|
147
|
+
.action(async (file, options) => {
|
|
148
|
+
try {
|
|
149
|
+
const filePath = resolve(file);
|
|
150
|
+
if (!existsSync(filePath)) {
|
|
151
|
+
console.error(`Error: File not found: ${filePath}`);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
// Load config
|
|
155
|
+
const config = options.config
|
|
156
|
+
? await import(resolve(options.config)).then((m) => m.default || m)
|
|
157
|
+
: await loadConfig();
|
|
158
|
+
console.log(`Parsing: ${filePath}`);
|
|
159
|
+
const parseResult = parseFile(filePath);
|
|
160
|
+
if (parseResult.errors.length > 0) {
|
|
161
|
+
console.error('\nParse Errors:');
|
|
162
|
+
for (const error of parseResult.errors) {
|
|
163
|
+
console.error(` - ${error.message}`);
|
|
164
|
+
}
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
// Generate commands
|
|
168
|
+
const generateResult = generate(parseResult.app, {
|
|
169
|
+
includeComments: false,
|
|
170
|
+
projectId: options.projectId || config.coolify?.projectId,
|
|
171
|
+
serverId: options.serverId || config.coolify?.serverId,
|
|
172
|
+
environmentId: options.environmentId || config.coolify?.environmentId,
|
|
173
|
+
});
|
|
174
|
+
if (generateResult.errors.length > 0) {
|
|
175
|
+
console.error('\nGeneration Errors:');
|
|
176
|
+
for (const error of generateResult.errors) {
|
|
177
|
+
console.error(` - ${error}`);
|
|
178
|
+
}
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
// Execute commands
|
|
182
|
+
console.log(`\nDeploying ${generateResult.commands.length} resources...`);
|
|
183
|
+
for (const cmd of generateResult.commands) {
|
|
184
|
+
const fullCommand = `coolify ${cmd.command} ${cmd.args.join(' ')}`;
|
|
185
|
+
if (options.dryRun) {
|
|
186
|
+
console.log(`[DRY RUN] ${fullCommand}`);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
console.log(`Executing: ${fullCommand}`);
|
|
190
|
+
try {
|
|
191
|
+
const output = execSync(fullCommand, { encoding: 'utf-8' });
|
|
192
|
+
console.log(output);
|
|
193
|
+
}
|
|
194
|
+
catch (execErr) {
|
|
195
|
+
console.error(`Command failed: ${execErr instanceof Error ? execErr.message : execErr}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
console.log('\nDeployment complete!');
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
console.error(`Error: ${err instanceof Error ? err.message : err}`);
|
|
203
|
+
process.exit(1);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
// Init command
|
|
207
|
+
program
|
|
208
|
+
.command('init')
|
|
209
|
+
.description('Create a configuration file')
|
|
210
|
+
.option('-f, --force', 'Overwrite existing config file')
|
|
211
|
+
.action((options) => {
|
|
212
|
+
const configPath = resolve('aspire2coolify.config.js');
|
|
213
|
+
if (existsSync(configPath) && !options.force) {
|
|
214
|
+
console.error('Config file already exists. Use --force to overwrite.');
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
writeFileSync(configPath, createConfigTemplate());
|
|
218
|
+
console.log(`Created: ${configPath}`);
|
|
219
|
+
});
|
|
220
|
+
program.parse();
|
|
221
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loader using cosmiconfig
|
|
3
|
+
*/
|
|
4
|
+
export interface Aspire2CoolifyConfig {
|
|
5
|
+
coolify?: {
|
|
6
|
+
projectId?: string;
|
|
7
|
+
serverId?: string;
|
|
8
|
+
environmentId?: string;
|
|
9
|
+
apiUrl?: string;
|
|
10
|
+
};
|
|
11
|
+
mappings?: {
|
|
12
|
+
databases?: Record<string, string>;
|
|
13
|
+
services?: Record<string, string>;
|
|
14
|
+
buildPacks?: Record<string, string>;
|
|
15
|
+
};
|
|
16
|
+
defaults?: {
|
|
17
|
+
buildPack?: string;
|
|
18
|
+
region?: string;
|
|
19
|
+
};
|
|
20
|
+
output?: {
|
|
21
|
+
includeComments?: boolean;
|
|
22
|
+
format?: 'shell' | 'json' | 'yaml';
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export declare function loadConfig(searchFrom?: string): Promise<Aspire2CoolifyConfig>;
|
|
26
|
+
export declare function loadConfigFile(filePath: string): Promise<Aspire2CoolifyConfig>;
|
|
27
|
+
export declare function getDefaultConfig(): Aspire2CoolifyConfig;
|
|
28
|
+
export declare function createConfigTemplate(): string;
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;KACpC,CAAC;CACH;AAcD,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAOnF;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAOpF;AAED,wBAAgB,gBAAgB,IAAI,oBAAoB,CAYvD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CA4B7C"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loader using cosmiconfig
|
|
3
|
+
*/
|
|
4
|
+
import { cosmiconfig } from 'cosmiconfig';
|
|
5
|
+
const explorer = cosmiconfig('aspire2coolify', {
|
|
6
|
+
searchPlaces: [
|
|
7
|
+
'aspire2coolify.config.js',
|
|
8
|
+
'aspire2coolify.config.mjs',
|
|
9
|
+
'aspire2coolify.config.cjs',
|
|
10
|
+
'aspire2coolify.config.json',
|
|
11
|
+
'.aspire2coolifyrc',
|
|
12
|
+
'.aspire2coolifyrc.json',
|
|
13
|
+
'package.json',
|
|
14
|
+
],
|
|
15
|
+
});
|
|
16
|
+
export async function loadConfig(searchFrom) {
|
|
17
|
+
try {
|
|
18
|
+
const result = await explorer.search(searchFrom);
|
|
19
|
+
return result?.config || {};
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export async function loadConfigFile(filePath) {
|
|
26
|
+
try {
|
|
27
|
+
const result = await explorer.load(filePath);
|
|
28
|
+
return result?.config || {};
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return {};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function getDefaultConfig() {
|
|
35
|
+
return {
|
|
36
|
+
coolify: {},
|
|
37
|
+
mappings: {},
|
|
38
|
+
defaults: {
|
|
39
|
+
buildPack: 'nixpacks',
|
|
40
|
+
},
|
|
41
|
+
output: {
|
|
42
|
+
includeComments: true,
|
|
43
|
+
format: 'shell',
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function createConfigTemplate() {
|
|
48
|
+
return `// aspire2coolify.config.js
|
|
49
|
+
export default {
|
|
50
|
+
coolify: {
|
|
51
|
+
// projectId: 'your-project-id',
|
|
52
|
+
// serverId: 'your-server-id',
|
|
53
|
+
// environmentId: 'your-environment-id',
|
|
54
|
+
// apiUrl: 'https://your-coolify-instance.com',
|
|
55
|
+
},
|
|
56
|
+
mappings: {
|
|
57
|
+
// Custom database type mappings
|
|
58
|
+
databases: {
|
|
59
|
+
// 'sqlserver': 'postgres', // Map SQL Server to PostgreSQL
|
|
60
|
+
},
|
|
61
|
+
// Custom service type mappings
|
|
62
|
+
services: {
|
|
63
|
+
// 'maildev': 'mailpit',
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
defaults: {
|
|
67
|
+
buildPack: 'nixpacks',
|
|
68
|
+
},
|
|
69
|
+
output: {
|
|
70
|
+
includeComments: true,
|
|
71
|
+
format: 'shell', // 'shell' | 'json'
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
`;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAwB1C,MAAM,QAAQ,GAAG,WAAW,CAAC,gBAAgB,EAAE;IAC7C,YAAY,EAAE;QACZ,0BAA0B;QAC1B,2BAA2B;QAC3B,2BAA2B;QAC3B,4BAA4B;QAC5B,mBAAmB;QACnB,wBAAwB;QACxB,cAAc;KACf;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAmB;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE;YACR,SAAS,EAAE,UAAU;SACtB;QACD,MAAM,EAAE;YACN,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,OAAO;SAChB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BR,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application command generator for Coolify
|
|
3
|
+
*/
|
|
4
|
+
import type { Application, AspireApp } from '../../models/aspire.js';
|
|
5
|
+
import type { CoolifyApplicationCommand } from '../../models/coolify.js';
|
|
6
|
+
export declare function generateApplicationCommand(app: Application, aspireApp: AspireApp): CoolifyApplicationCommand;
|
|
7
|
+
//# sourceMappingURL=application.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../src/generators/coolify/application.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAa,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,yBAAyB,EAAoB,MAAM,yBAAyB,CAAC;AAS3F,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,SAAS,GACnB,yBAAyB,CA8D3B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application command generator for Coolify
|
|
3
|
+
*/
|
|
4
|
+
const ASPIRE_TO_COOLIFY_BUILDPACK = {
|
|
5
|
+
nixpacks: 'nixpacks',
|
|
6
|
+
dockerfile: 'dockerfile',
|
|
7
|
+
static: 'static',
|
|
8
|
+
node: 'nixpacks',
|
|
9
|
+
};
|
|
10
|
+
export function generateApplicationCommand(app, aspireApp) {
|
|
11
|
+
const buildPack = ASPIRE_TO_COOLIFY_BUILDPACK[app.buildPack] || 'nixpacks';
|
|
12
|
+
const args = [
|
|
13
|
+
`--name "${app.name}"`,
|
|
14
|
+
`--build-pack ${buildPack}`,
|
|
15
|
+
];
|
|
16
|
+
// Add source path if available
|
|
17
|
+
if (app.sourcePath) {
|
|
18
|
+
args.push(`--source "${app.sourcePath}"`);
|
|
19
|
+
}
|
|
20
|
+
// Build environment variables map
|
|
21
|
+
const envVars = {};
|
|
22
|
+
// Add explicit environment variables
|
|
23
|
+
for (const env of app.environment) {
|
|
24
|
+
if (!env.isExpression) {
|
|
25
|
+
envVars[env.key] = env.value;
|
|
26
|
+
args.push(`--env "${env.key}=${env.value}"`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Add reference-based environment variables
|
|
30
|
+
const references = aspireApp.references.filter((ref) => ref.from === app.name);
|
|
31
|
+
for (const ref of references) {
|
|
32
|
+
const envName = ref.connectionStringEnv || 'CONNECTION_STRING';
|
|
33
|
+
const envValue = `\${${ref.to}.connectionString}`;
|
|
34
|
+
envVars[envName] = envValue;
|
|
35
|
+
args.push(`--env "${envName}=${envValue}"`);
|
|
36
|
+
}
|
|
37
|
+
// Add port configuration from endpoints
|
|
38
|
+
const ports = [];
|
|
39
|
+
for (const endpoint of app.endpoints) {
|
|
40
|
+
if (endpoint.port) {
|
|
41
|
+
ports.push(endpoint.port);
|
|
42
|
+
}
|
|
43
|
+
if (endpoint.envVariable) {
|
|
44
|
+
// The endpoint exposes a port via environment variable
|
|
45
|
+
envVars[endpoint.envVariable] = endpoint.port?.toString() || '3000';
|
|
46
|
+
args.push(`--env "${endpoint.envVariable}=${endpoint.port || 3000}"`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Add external endpoint configuration
|
|
50
|
+
const hasExternalEndpoint = app.endpoints.some((e) => e.isExternal);
|
|
51
|
+
if (hasExternalEndpoint) {
|
|
52
|
+
args.push('--expose');
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
command: 'application:create',
|
|
56
|
+
name: app.name,
|
|
57
|
+
buildPack,
|
|
58
|
+
source: app.sourcePath,
|
|
59
|
+
envVars,
|
|
60
|
+
ports: ports.length > 0 ? ports : undefined,
|
|
61
|
+
args,
|
|
62
|
+
comment: `Application: ${app.name} (${app.type})`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=application.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../src/generators/coolify/application.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database command generator for Coolify
|
|
3
|
+
*/
|
|
4
|
+
import type { Database } from '../../models/aspire.js';
|
|
5
|
+
import type { CoolifyDatabaseCommand } from '../../models/coolify.js';
|
|
6
|
+
export declare function generateDatabaseCommand(db: Database): CoolifyDatabaseCommand;
|
|
7
|
+
/**
|
|
8
|
+
* Generate connection string placeholder for a database
|
|
9
|
+
*/
|
|
10
|
+
export declare function getDatabaseConnectionString(db: Database): string;
|
|
11
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/generators/coolify/database.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAuB,MAAM,yBAAyB,CAAC;AAU3F,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,GAAG,sBAAsB,CAoC5E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,CAahE"}
|