@dokploy/cli 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/commands/app/create.d.ts +4 -0
  3. package/dist/commands/app/create.js +87 -37
  4. package/dist/commands/app/delete.d.ts +2 -0
  5. package/dist/commands/app/delete.js +50 -28
  6. package/dist/commands/app/deploy.d.ts +5 -0
  7. package/dist/commands/app/deploy.js +93 -55
  8. package/dist/commands/app/stop.d.ts +5 -0
  9. package/dist/commands/app/stop.js +87 -54
  10. package/dist/commands/database/mariadb/create.d.ts +9 -0
  11. package/dist/commands/database/mariadb/create.js +160 -66
  12. package/dist/commands/database/mariadb/delete.d.ts +2 -0
  13. package/dist/commands/database/mariadb/delete.js +56 -47
  14. package/dist/commands/database/mariadb/deploy.d.ts +5 -0
  15. package/dist/commands/database/mariadb/deploy.js +88 -54
  16. package/dist/commands/database/mariadb/stop.d.ts +5 -0
  17. package/dist/commands/database/mariadb/stop.js +88 -54
  18. package/dist/commands/database/mongo/create.d.ts +8 -0
  19. package/dist/commands/database/mongo/create.js +145 -76
  20. package/dist/commands/database/mongo/delete.d.ts +2 -0
  21. package/dist/commands/database/mongo/delete.js +56 -45
  22. package/dist/commands/database/mongo/deploy.d.ts +5 -0
  23. package/dist/commands/database/mongo/deploy.js +88 -54
  24. package/dist/commands/database/mongo/stop.d.ts +5 -0
  25. package/dist/commands/database/mongo/stop.js +88 -54
  26. package/dist/commands/database/mysql/create.d.ts +9 -0
  27. package/dist/commands/database/mysql/create.js +168 -81
  28. package/dist/commands/database/mysql/delete.d.ts +2 -0
  29. package/dist/commands/database/mysql/delete.js +56 -47
  30. package/dist/commands/database/mysql/deploy.js +70 -53
  31. package/dist/commands/database/mysql/stop.js +70 -53
  32. package/dist/commands/database/postgres/create.d.ts +8 -0
  33. package/dist/commands/database/postgres/create.js +155 -76
  34. package/dist/commands/database/postgres/delete.d.ts +2 -0
  35. package/dist/commands/database/postgres/delete.js +56 -44
  36. package/dist/commands/database/postgres/deploy.d.ts +5 -0
  37. package/dist/commands/database/postgres/deploy.js +90 -56
  38. package/dist/commands/database/postgres/stop.d.ts +5 -0
  39. package/dist/commands/database/postgres/stop.js +91 -57
  40. package/dist/commands/database/redis/create.d.ts +6 -0
  41. package/dist/commands/database/redis/create.js +129 -65
  42. package/dist/commands/database/redis/delete.d.ts +2 -0
  43. package/dist/commands/database/redis/delete.js +60 -50
  44. package/dist/commands/database/redis/deploy.d.ts +5 -0
  45. package/dist/commands/database/redis/deploy.js +90 -56
  46. package/dist/commands/database/redis/stop.d.ts +5 -0
  47. package/dist/commands/database/redis/stop.js +91 -57
  48. package/dist/commands/env/pull.d.ts +10 -0
  49. package/dist/commands/env/pull.js +68 -0
  50. package/dist/commands/env/push.d.ts +10 -0
  51. package/dist/commands/env/push.js +106 -0
  52. package/dist/commands/project/create.d.ts +2 -1
  53. package/dist/commands/project/create.js +53 -34
  54. package/dist/utils/utils.js +9 -2
  55. package/oclif.manifest.json +895 -110
  56. package/package.json +3 -2
  57. package/{README.md → readme.md} +16 -1
@@ -14,94 +14,173 @@ export default class DatabasePostgresCreate extends Command {
14
14
  description: "ID of the project",
15
15
  required: false,
16
16
  }),
17
+ name: Flags.string({
18
+ char: "n",
19
+ description: "Database name",
20
+ required: false,
21
+ }),
22
+ databaseName: Flags.string({
23
+ description: "PostgreSQL database name",
24
+ required: false,
25
+ }),
26
+ description: Flags.string({
27
+ char: "d",
28
+ description: "Database description",
29
+ required: false,
30
+ }),
31
+ databasePassword: Flags.string({
32
+ description: "Database password",
33
+ required: false,
34
+ }),
35
+ databaseUser: Flags.string({
36
+ description: "Database user",
37
+ default: "postgres",
38
+ }),
39
+ dockerImage: Flags.string({
40
+ description: "Docker image",
41
+ default: "postgres:15",
42
+ }),
43
+ skipConfirm: Flags.boolean({
44
+ char: "y",
45
+ description: "Skip confirmation prompt",
46
+ default: false,
47
+ }),
48
+ appName: Flags.string({
49
+ description: "App name",
50
+ required: false,
51
+ }),
17
52
  };
18
53
  async run() {
19
54
  const auth = await readAuthConfig(this);
20
55
  const { flags } = await this.parse(DatabasePostgresCreate);
21
- let { projectId } = flags;
22
- if (!projectId) {
56
+ let { projectId, name, databaseName, description, databasePassword, databaseUser, dockerImage, appName } = flags;
57
+ // Modo interactivo si no se proporcionan los flags necesarios
58
+ if (!projectId || !name || !databaseName || !appName || !databasePassword) {
23
59
  console.log(chalk.blue.bold("\n Listing all Projects \n"));
24
60
  const projects = await getProjects(auth, this);
25
- const { project } = await inquirer.prompt([
61
+ if (!projectId) {
62
+ const { project } = await inquirer.prompt([
63
+ {
64
+ choices: projects.map((project) => ({
65
+ name: project.name,
66
+ value: project,
67
+ })),
68
+ message: "Select a project to create the PostgreSQL instance in:",
69
+ name: "project",
70
+ type: "list",
71
+ },
72
+ ]);
73
+ projectId = project.projectId;
74
+ }
75
+ if (!name || !databaseName || !appName || !databasePassword) {
76
+ const dbDetails = await inquirer.prompt([
77
+ {
78
+ message: "Enter the name:",
79
+ name: "name",
80
+ type: "input",
81
+ validate: (input) => (input ? true : "Database name is required"),
82
+ default: name,
83
+ },
84
+ {
85
+ message: "Database name:",
86
+ name: "databaseName",
87
+ type: "input",
88
+ validate: (input) => (input ? true : "Database name is required"),
89
+ default: databaseName,
90
+ },
91
+ {
92
+ message: "Enter the database description (optional):",
93
+ name: "description",
94
+ type: "input",
95
+ default: description,
96
+ },
97
+ {
98
+ message: "Database password:",
99
+ name: "databasePassword",
100
+ type: "password",
101
+ default: databasePassword,
102
+ },
103
+ {
104
+ default: dockerImage || "postgres:15",
105
+ message: "Docker Image (default: postgres:15):",
106
+ name: "dockerImage",
107
+ type: "input",
108
+ },
109
+ {
110
+ default: databaseUser || "postgres",
111
+ message: "Database User: (default: postgres):",
112
+ name: "databaseUser",
113
+ type: "input",
114
+ },
115
+ ]);
116
+ name = dbDetails.name;
117
+ databaseName = dbDetails.databaseName;
118
+ description = dbDetails.description;
119
+ databasePassword = dbDetails.databasePassword;
120
+ dockerImage = dbDetails.dockerImage;
121
+ databaseUser = dbDetails.databaseUser;
122
+ const appNamePrompt = await inquirer.prompt([
123
+ {
124
+ default: appName || `${slugify(name)}`,
125
+ message: "Enter the App name:",
126
+ name: "appName",
127
+ type: "input",
128
+ validate: (input) => (input ? true : "App name is required"),
129
+ },
130
+ ]);
131
+ appName = appNamePrompt.appName;
132
+ }
133
+ }
134
+ // Confirmar si no se especifica --skipConfirm
135
+ if (!flags.skipConfirm) {
136
+ const confirm = await inquirer.prompt([
26
137
  {
27
- choices: projects.map((project) => ({
28
- name: project.name,
29
- value: project,
30
- })),
31
- message: "Select a project to create the PostgreSQL database in:",
32
- name: "project",
33
- type: "list",
138
+ type: 'confirm',
139
+ name: 'proceed',
140
+ message: 'Do you want to create this PostgreSQL instance?',
141
+ default: false,
34
142
  },
35
143
  ]);
36
- projectId = project.projectId;
37
- const dbDetails = await inquirer.prompt([
38
- {
39
- message: "Enter the name:",
40
- name: "name",
41
- type: "input",
42
- validate: (input) => (input ? true : "Database name is required"),
43
- },
44
- {
45
- message: "Database name:",
46
- name: "databaseName",
47
- type: "input",
48
- validate: (input) => (input ? true : "Database name is required"),
49
- },
50
- {
51
- message: "Enter the database description (optional):",
52
- name: "description",
53
- type: "input",
54
- },
55
- {
56
- message: "Database password (optional):",
57
- name: "databasePassword",
58
- type: "password",
59
- },
60
- {
61
- default: "postgres:15",
62
- message: "Docker Image (default: postgres:15):",
63
- name: "dockerImage",
64
- type: "input",
65
- },
66
- {
67
- default: "postgres",
68
- message: "Database User: (default: postgres):",
69
- name: "databaseUser",
70
- type: "input",
144
+ if (!confirm.proceed) {
145
+ this.error(chalk.yellow("PostgreSQL creation cancelled."));
146
+ return;
147
+ }
148
+ }
149
+ try {
150
+ console.log(JSON.stringify({
151
+ name,
152
+ databaseName,
153
+ description,
154
+ databasePassword,
155
+ databaseUser,
156
+ dockerImage,
157
+ appName,
158
+ projectId,
159
+ }, null, 2));
160
+ const response = await axios.post(`${auth.url}/api/trpc/postgres.create`, {
161
+ json: {
162
+ name,
163
+ databaseName,
164
+ description,
165
+ databasePassword,
166
+ databaseUser,
167
+ dockerImage,
168
+ appName,
169
+ projectId,
71
170
  },
72
- ]);
73
- const appName = await inquirer.prompt([
74
- {
75
- default: `${slugify(project.name)}-${dbDetails.name}`,
76
- message: "Enter the App name:",
77
- name: "appName",
78
- type: "input",
79
- validate: (input) => (input ? true : "App name is required"),
171
+ }, {
172
+ headers: {
173
+ Authorization: `Bearer ${auth.token}`,
174
+ "Content-Type": "application/json",
80
175
  },
81
- ]);
82
- try {
83
- const response = await axios.post(`${auth.url}/api/trpc/postgres.create`, {
84
- json: {
85
- ...dbDetails,
86
- appName: appName.appName,
87
- projectId: project.projectId,
88
- },
89
- }, {
90
- headers: {
91
- Authorization: `Bearer ${auth.token}`,
92
- "Content-Type": "application/json",
93
- },
94
- });
95
- if (!response.data.result.data.json) {
96
- this.error(chalk.red("Error creating PostgreSQL database"));
97
- }
98
- this.log(chalk.green(`PostgreSQL database '${dbDetails.name}' created successfully.`));
99
- }
100
- catch (error) {
101
- this.error(
102
- // @ts-ignore
103
- chalk.red(`Failed to create PostgreSQL database: ${error.message}`));
176
+ });
177
+ if (!response.data.result.data.json) {
178
+ this.error(chalk.red("Error creating PostgreSQL instance", response.data.result.data.json));
104
179
  }
180
+ this.log(chalk.green(`PostgreSQL instance '${name}' created successfully.`));
181
+ }
182
+ catch (error) {
183
+ this.error(chalk.red(`Error creating PostgreSQL instance: ${error.message}`));
105
184
  }
106
185
  }
107
186
  }
@@ -4,6 +4,8 @@ export default class DatabasePostgresDelete extends Command {
4
4
  static examples: string[];
5
5
  static flags: {
6
6
  projectId: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ postgresId: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
+ skipConfirm: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
7
9
  };
8
10
  run(): Promise<void>;
9
11
  }
@@ -16,62 +16,75 @@ export default class DatabasePostgresDelete extends Command {
16
16
  description: "ID of the project",
17
17
  required: false,
18
18
  }),
19
+ postgresId: Flags.string({
20
+ char: "d",
21
+ description: "ID of the PostgreSQL database",
22
+ required: false,
23
+ }),
24
+ skipConfirm: Flags.boolean({
25
+ char: "y",
26
+ description: "Skip confirmation",
27
+ required: false,
28
+ }),
19
29
  };
20
30
  async run() {
21
31
  const auth = await readAuthConfig(this);
22
32
  const { flags } = await this.parse(DatabasePostgresDelete);
23
- let { projectId } = flags;
24
- if (!projectId) {
33
+ let { projectId, postgresId } = flags;
34
+ // Modo interactivo si no se proporcionan los flags necesarios
35
+ if (!projectId || !postgresId) {
25
36
  console.log(chalk.blue.bold("\n Listing all Projects \n"));
26
37
  const projects = await getProjects(auth, this);
27
- if (projects.length === 0) {
28
- this.log(chalk.yellow("No projects found."));
29
- return;
38
+ if (!projectId) {
39
+ const answers = await inquirer.prompt([
40
+ {
41
+ choices: projects.map((project) => ({
42
+ name: project.name,
43
+ value: project.projectId,
44
+ })),
45
+ message: "Select a project to delete the PostgreSQL instance from:",
46
+ name: "selectedProject",
47
+ type: "list",
48
+ },
49
+ ]);
50
+ projectId = answers.selectedProject;
30
51
  }
31
- const answers = await inquirer.prompt([
32
- {
33
- choices: projects.map((project) => ({
34
- name: project.name,
35
- value: project.projectId,
36
- })),
37
- message: "Select a project to delete the PostgreSQL database from:",
38
- name: "selectedProject",
39
- type: "list",
40
- },
41
- ]);
42
- projectId = answers.selectedProject;
43
- }
44
- try {
45
- const project = await getProject(projectId, auth, this);
46
- if (!project.postgres || project.postgres.length === 0) {
47
- this.log(chalk.yellow("No PostgreSQL databases found in this project."));
48
- return;
52
+ const projectSelected = await getProject(projectId, auth, this);
53
+ if (!projectSelected.postgres || projectSelected.postgres.length === 0) {
54
+ this.error(chalk.yellow("No PostgreSQL instances found in this project."));
49
55
  }
50
- const appAnswers = await inquirer.prompt([
51
- {
52
- choices: project.postgres.map((db) => ({
53
- name: db.name,
54
- value: db.postgresId,
55
- })),
56
- message: "Select the PostgreSQL database to delete:",
57
- name: "selectedApp",
58
- type: "list",
59
- },
60
- ]);
61
- const postgresId = appAnswers.selectedApp;
56
+ if (!postgresId) {
57
+ const dbAnswers = await inquirer.prompt([
58
+ {
59
+ // @ts-ignore
60
+ choices: projectSelected.postgres.map((db) => ({
61
+ name: db.name,
62
+ value: db.postgresId,
63
+ })),
64
+ message: "Select the PostgreSQL instance to delete:",
65
+ name: "selectedDb",
66
+ type: "list",
67
+ },
68
+ ]);
69
+ postgresId = dbAnswers.selectedDb;
70
+ }
71
+ }
72
+ // Confirmar si no se especifica --skipConfirm
73
+ if (!flags.skipConfirm) {
62
74
  const confirmAnswers = await inquirer.prompt([
63
75
  {
64
76
  default: false,
65
- message: "Are you sure you want to delete this postgres database?",
77
+ message: "Are you sure you want to delete this PostgreSQL instance?",
66
78
  name: "confirmDelete",
67
79
  type: "confirm",
68
80
  },
69
81
  ]);
70
82
  if (!confirmAnswers.confirmDelete) {
71
- this.log(chalk.yellow("Database deletion cancelled."));
72
- return;
83
+ this.error(chalk.yellow("PostgreSQL deletion cancelled."));
73
84
  }
74
- const deleteResponse = await axios.post(`${auth.url}/api/trpc/postgres.remove`, {
85
+ }
86
+ try {
87
+ const response = await axios.post(`${auth.url}/api/trpc/postgres.remove`, {
75
88
  json: {
76
89
  postgresId,
77
90
  },
@@ -81,14 +94,13 @@ export default class DatabasePostgresDelete extends Command {
81
94
  "Content-Type": "application/json",
82
95
  },
83
96
  });
84
- if (!deleteResponse.data.result.data.json) {
85
- this.error(chalk.red("Error deleting PostgreSQL database"));
97
+ if (!response.data.result.data.json) {
98
+ this.error(chalk.red("Error deleting PostgreSQL instance"));
86
99
  }
87
- this.log(chalk.green("PostgreSQL database deleted successfully."));
100
+ this.log(chalk.green("PostgreSQL instance deleted successfully."));
88
101
  }
89
102
  catch (error) {
90
- // @ts-expect-error - TS2339: Property 'data' does not exist on type 'AxiosError<any>'.
91
- this.error(chalk.red(`Failed to delete application: ${error.message}`));
103
+ this.error(chalk.red(`Error deleting PostgreSQL instance: ${error.message}`));
92
104
  }
93
105
  }
94
106
  }
@@ -2,5 +2,10 @@ import { Command } from "@oclif/core";
2
2
  export default class DatabasePostgresDeploy extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
+ static flags: {
6
+ projectId: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ postgresId: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
+ skipConfirm: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ };
5
10
  run(): Promise<void>;
6
11
  }
@@ -1,69 +1,103 @@
1
- import { Command } from "@oclif/core";
1
+ import { Command, Flags } from "@oclif/core";
2
2
  import { readAuthConfig } from "../../../utils/utils.js";
3
3
  import chalk from "chalk";
4
4
  import { getProject, getProjects } from "../../../utils/shared.js";
5
5
  import inquirer from "inquirer";
6
6
  import axios from "axios";
7
7
  export default class DatabasePostgresDeploy extends Command {
8
- static description = "Deploy an postgres to a project.";
9
- static examples = ["$ <%= config.bin %> app deploy"];
8
+ static description = "Deploy a PostgreSQL instance to a project.";
9
+ static examples = ["$ <%= config.bin %> postgres deploy"];
10
+ static flags = {
11
+ projectId: Flags.string({
12
+ char: "p",
13
+ description: "ID of the project",
14
+ required: false,
15
+ }),
16
+ postgresId: Flags.string({
17
+ char: "d",
18
+ description: "ID of the PostgreSQL instance to deploy",
19
+ required: false,
20
+ }),
21
+ skipConfirm: Flags.boolean({
22
+ char: "y",
23
+ description: "Skip confirmation prompt",
24
+ default: false,
25
+ }),
26
+ };
10
27
  async run() {
11
28
  const auth = await readAuthConfig(this);
12
- console.log(chalk.blue.bold("\n Listing all Projects \n"));
13
- const projects = await getProjects(auth, this);
14
- const { project } = await inquirer.prompt([
15
- {
16
- choices: projects.map((project) => ({
17
- name: project.name,
18
- value: project,
19
- })),
20
- message: "Select a project to deploy the postgres in:",
21
- name: "project",
22
- type: "list",
23
- },
24
- ]);
25
- const projectId = project.projectId;
26
- const projectSelected = await getProject(projectId, auth, this);
27
- if (projectSelected.postgres.length === 0) {
28
- this.error(chalk.yellow("No postgres found in this project."));
29
+ const { flags } = await this.parse(DatabasePostgresDeploy);
30
+ let { projectId, postgresId } = flags;
31
+ // Modo interactivo si no se proporcionan los flags necesarios
32
+ if (!projectId || !postgresId) {
33
+ console.log(chalk.blue.bold("\n Listing all Projects \n"));
34
+ const projects = await getProjects(auth, this);
35
+ if (!projectId) {
36
+ const { project } = await inquirer.prompt([
37
+ {
38
+ choices: projects.map((project) => ({
39
+ name: project.name,
40
+ value: project,
41
+ })),
42
+ message: "Select a project to deploy the PostgreSQL instance from:",
43
+ name: "project",
44
+ type: "list",
45
+ },
46
+ ]);
47
+ projectId = project.projectId;
48
+ }
49
+ const projectSelected = await getProject(projectId, auth, this);
50
+ if (projectSelected.postgres.length === 0) {
51
+ this.error(chalk.yellow("No PostgreSQL instances found in this project."));
52
+ }
53
+ if (!postgresId) {
54
+ const dbAnswers = await inquirer.prompt([
55
+ {
56
+ // @ts-ignore
57
+ choices: projectSelected.postgres.map((db) => ({
58
+ name: db.name,
59
+ value: db.postgresId,
60
+ })),
61
+ message: "Select the PostgreSQL instance to deploy:",
62
+ name: "selectedDb",
63
+ type: "list",
64
+ },
65
+ ]);
66
+ postgresId = dbAnswers.selectedDb;
67
+ }
29
68
  }
30
- const appAnswers = await inquirer.prompt([
31
- {
32
- // @ts-ignore
33
- choices: projectSelected.postgres.map((app) => ({
34
- name: app.name,
35
- value: app.postgresId,
36
- })),
37
- message: "Select the postgres to deploy:",
38
- name: "selectedApp",
39
- type: "list",
40
- },
41
- ]);
42
- const postgresId = appAnswers.selectedApp;
43
- const confirmAnswers = await inquirer.prompt([
44
- {
45
- default: false,
46
- message: "Are you sure you want to deploy this postgres?",
47
- name: "confirmDelete",
48
- type: "confirm",
49
- },
50
- ]);
51
- if (!confirmAnswers.confirmDelete) {
52
- this.error(chalk.yellow("postgres deployment cancelled."));
69
+ // Confirmar si no se especifica --skipConfirm
70
+ if (!flags.skipConfirm) {
71
+ const confirmAnswers = await inquirer.prompt([
72
+ {
73
+ default: false,
74
+ message: "Are you sure you want to deploy this PostgreSQL instance?",
75
+ name: "confirmDeploy",
76
+ type: "confirm",
77
+ },
78
+ ]);
79
+ if (!confirmAnswers.confirmDeploy) {
80
+ this.error(chalk.yellow("PostgreSQL deployment cancelled."));
81
+ }
53
82
  }
54
- const response = await axios.post(`${auth.url}/api/trpc/postgres.deploy`, {
55
- json: {
56
- postgresId,
57
- },
58
- }, {
59
- headers: {
60
- Authorization: `Bearer ${auth.token}`,
61
- "Content-Type": "application/json",
62
- },
63
- });
64
- if (response.status !== 200) {
65
- this.error(chalk.red("Error deploying postgres"));
83
+ try {
84
+ const response = await axios.post(`${auth.url}/api/trpc/postgres.deploy`, {
85
+ json: {
86
+ postgresId,
87
+ },
88
+ }, {
89
+ headers: {
90
+ Authorization: `Bearer ${auth.token}`,
91
+ "Content-Type": "application/json",
92
+ },
93
+ });
94
+ if (response.status !== 200) {
95
+ this.error(chalk.red("Error deploying PostgreSQL instance"));
96
+ }
97
+ this.log(chalk.green("PostgreSQL instance deployed successfully."));
98
+ }
99
+ catch (error) {
100
+ this.error(chalk.red(`Error deploying PostgreSQL instance: ${error.message}`));
66
101
  }
67
- this.log(chalk.green("Postgres deployed successful."));
68
102
  }
69
103
  }
@@ -2,5 +2,10 @@ import { Command } from "@oclif/core";
2
2
  export default class DatabasePostgresStop extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
+ static flags: {
6
+ projectId: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
7
+ postgresId: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
8
+ skipConfirm: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ };
5
10
  run(): Promise<void>;
6
11
  }