@revos/cli 0.1.1 → 0.1.2
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 +24 -2
- package/dist/adapters/oclif/commands/auth/login.mjs +2 -2
- package/dist/adapters/oclif/commands/auth/logout.mjs +2 -2
- package/dist/adapters/oclif/commands/auth/status.mjs +2 -2
- package/dist/adapters/oclif/commands/init.d.mts +5 -1
- package/dist/adapters/oclif/commands/init.mjs +72 -12
- package/dist/adapters/oclif/commands/org/current.mjs +2 -2
- package/dist/adapters/oclif/commands/org/list.mjs +2 -2
- package/dist/adapters/oclif/commands/org/switch.mjs +2 -2
- package/dist/adapters/oclif/commands/overlays/diff.mjs +2 -2
- package/dist/adapters/oclif/commands/overlays/pull.mjs +2 -2
- package/dist/adapters/oclif/commands/overlays/push.mjs +2 -2
- package/dist/adapters/oclif/commands/overlays/status.mjs +2 -2
- package/dist/{base.command-DlYMawJ6.mjs → base.command-DDSLyx5v.mjs} +1 -1
- package/dist/{core-Dq15hO6f.mjs → core-EJgxP-x5.mjs} +40 -14
- package/dist/{index-DuqD2b_7.d.mts → index-DH6vy050.d.mts} +10 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +10 -2
package/README.md
CHANGED
|
@@ -26,10 +26,32 @@ revos [command] [options]
|
|
|
26
26
|
### Project Initialization
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
revos init [
|
|
29
|
+
revos init [destination] [--yes] [--dry-run]
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
Scaffolds a new RevOS data engineering project. If `
|
|
32
|
+
Scaffolds a new RevOS data engineering project. If `destination` is omitted, initializes in the current directory.
|
|
33
|
+
|
|
34
|
+
**Arguments:**
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
destination Path or project name (default: current directory)
|
|
38
|
+
Examples:
|
|
39
|
+
my-project → creates ./my-project/
|
|
40
|
+
./my-project → same as above
|
|
41
|
+
../my-project → one level up
|
|
42
|
+
/home/user/my-project → absolute path
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Flags:**
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
-y, --yes Skip confirmation prompts, use defaults
|
|
49
|
+
--dry-run Show what would be created without creating files or GCP resources
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Non-empty directory behavior:**
|
|
53
|
+
|
|
54
|
+
If the destination already exists and is not empty, you will be prompted to confirm before proceeding. Use `--yes` to skip this prompt.
|
|
33
55
|
|
|
34
56
|
**What it does:**
|
|
35
57
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as getCredentialsPath, C as getUserInfo, D as tokenResponseToCredentials, N as saveCredentials, O as startOAuthServer, S as generatePKCEChallenge, T as setClerkConfig, b as buildAuthorizationUrl, m as unwrap, n as selectOrganization, p as createApiClient, x as exchangeCodeForTokens } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { A as getCredentialsPath, C as getUserInfo, D as tokenResponseToCredentials, N as saveCredentials, O as startOAuthServer, S as generatePKCEChallenge, T as setClerkConfig, b as buildAuthorizationUrl, m as unwrap, n as selectOrganization, p as createApiClient, x as exchangeCodeForTokens } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { Flags } from "@oclif/core";
|
|
5
5
|
import open from "open";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { k as deleteCredentials } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { k as deleteCredentials } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
//#region src/adapters/oclif/commands/auth/logout.ts
|
|
4
4
|
var AuthLogout = class extends BaseCommand {
|
|
5
5
|
static description = "Remove stored authentication credentials";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as getCredentialsPath, M as loadCredentials, j as isTokenExpired } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { A as getCredentialsPath, M as loadCredentials, j as isTokenExpired } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
//#region src/adapters/oclif/commands/auth/status.ts
|
|
5
5
|
var AuthStatus = class extends BaseCommand {
|
|
@@ -5,7 +5,11 @@ import * as _$_oclif_core_interfaces0 from "@oclif/core/interfaces";
|
|
|
5
5
|
declare class Init extends BaseCommand<typeof Init> {
|
|
6
6
|
static description: string;
|
|
7
7
|
static args: {
|
|
8
|
-
|
|
8
|
+
destination: _$_oclif_core_interfaces0.Arg<string | undefined, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
static flags: {
|
|
11
|
+
yes: _$_oclif_core_interfaces0.BooleanFlag<boolean>;
|
|
12
|
+
"dry-run": _$_oclif_core_interfaces0.BooleanFlag<boolean>;
|
|
9
13
|
};
|
|
10
14
|
run(): Promise<void>;
|
|
11
15
|
}
|
|
@@ -1,27 +1,88 @@
|
|
|
1
|
-
import { P as ApiError, t as InitService, y as getConfig } from "../../../core-
|
|
1
|
+
import { P as ApiError, t as InitService, y as getConfig } from "../../../core-EJgxP-x5.mjs";
|
|
2
2
|
import { TEMPLATES_DIR } from "../../../templates/index.mjs";
|
|
3
|
-
import { t as BaseCommand } from "../../../base.command-
|
|
3
|
+
import { t as BaseCommand } from "../../../base.command-DDSLyx5v.mjs";
|
|
4
|
+
import * as fs from "fs";
|
|
4
5
|
import * as path from "path";
|
|
6
|
+
import select from "@inquirer/select";
|
|
5
7
|
import chalk from "chalk";
|
|
6
|
-
import { Args } from "@oclif/core";
|
|
8
|
+
import { Args, Flags } from "@oclif/core";
|
|
7
9
|
//#region src/adapters/oclif/commands/init.ts
|
|
10
|
+
function isDirEmpty(dirPath) {
|
|
11
|
+
return fs.readdirSync(dirPath).length === 0;
|
|
12
|
+
}
|
|
8
13
|
var Init = class extends BaseCommand {
|
|
9
14
|
static description = "Scaffold a new RevOS data engineering project";
|
|
10
|
-
static args = {
|
|
11
|
-
description: "
|
|
15
|
+
static args = { destination: Args.string({
|
|
16
|
+
description: "Path or project name (default: current directory name). Supports relative and absolute paths.",
|
|
12
17
|
required: false
|
|
13
18
|
}) };
|
|
19
|
+
static flags = {
|
|
20
|
+
yes: Flags.boolean({
|
|
21
|
+
char: "y",
|
|
22
|
+
description: "Non-interactive mode, use defaults",
|
|
23
|
+
default: false
|
|
24
|
+
}),
|
|
25
|
+
"dry-run": Flags.boolean({
|
|
26
|
+
description: "Show what would be created without making any changes",
|
|
27
|
+
default: false
|
|
28
|
+
})
|
|
29
|
+
};
|
|
14
30
|
async run() {
|
|
15
31
|
const { apiUrl, token, organizationId } = await getConfig();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.
|
|
19
|
-
|
|
32
|
+
let projectName;
|
|
33
|
+
let targetDir;
|
|
34
|
+
if (this.args.destination) {
|
|
35
|
+
const resolved = path.resolve(this.args.destination);
|
|
36
|
+
projectName = path.basename(resolved);
|
|
37
|
+
targetDir = path.dirname(resolved);
|
|
38
|
+
} else {
|
|
39
|
+
const cwd = process.cwd();
|
|
40
|
+
projectName = path.basename(cwd);
|
|
41
|
+
targetDir = path.dirname(cwd);
|
|
42
|
+
}
|
|
43
|
+
if (!projectName) this.error("Could not determine project name from path", { exit: 1 });
|
|
44
|
+
const projectDir = path.join(targetDir, projectName);
|
|
45
|
+
if (fs.existsSync(projectDir) && !isDirEmpty(projectDir) && !this.flags.yes) {
|
|
46
|
+
if (await select({
|
|
47
|
+
message: `Directory "${projectName}" already exists and is not empty. What would you like to do?`,
|
|
48
|
+
choices: [{
|
|
49
|
+
name: "Initialize in this directory",
|
|
50
|
+
value: "init"
|
|
51
|
+
}, {
|
|
52
|
+
name: "Cancel",
|
|
53
|
+
value: "cancel"
|
|
54
|
+
}]
|
|
55
|
+
}) === "cancel") {
|
|
56
|
+
this.log("Cancelled.");
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const service = new InitService(TEMPLATES_DIR);
|
|
61
|
+
const org = await service.resolveOrganization(apiUrl, token, organizationId).catch((err) => {
|
|
62
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
63
|
+
this.error(message, { exit: 1 });
|
|
64
|
+
});
|
|
65
|
+
if (this.flags["dry-run"]) {
|
|
66
|
+
const preview = service.dryRun(projectName, targetDir);
|
|
67
|
+
this.log(`\nWould create project ${chalk.bold(projectName)} for organization ${chalk.bold(org.name)}`);
|
|
68
|
+
this.log(` Path: ${chalk.dim(preview.projectDir)}\n`);
|
|
69
|
+
this.log("Directories:");
|
|
70
|
+
for (const dir of preview.dirs) this.log(` ${dir}/`);
|
|
71
|
+
this.log("\nFiles:");
|
|
72
|
+
for (const file of preview.files) this.log(` ${file}`);
|
|
73
|
+
this.log(chalk.dim("\nNo files created, no GCP resources provisioned."));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.log(`\nCreating project ${chalk.bold(projectName)} for organization ${chalk.bold(org.name)}`);
|
|
77
|
+
this.log(` Path: ${chalk.dim(projectDir)}\n`);
|
|
78
|
+
const result = await service.run({
|
|
20
79
|
projectName,
|
|
21
|
-
targetDir
|
|
80
|
+
targetDir,
|
|
22
81
|
apiUrl,
|
|
23
82
|
token,
|
|
24
|
-
organizationId
|
|
83
|
+
organizationId,
|
|
84
|
+
organization: org,
|
|
85
|
+
allowExistingDir: true
|
|
25
86
|
}).catch((err) => {
|
|
26
87
|
if (err instanceof ApiError) {
|
|
27
88
|
this.log(chalk.red(`\nAPI error: ${err.status} ${err.statusText}`));
|
|
@@ -31,7 +92,6 @@ var Init = class extends BaseCommand {
|
|
|
31
92
|
const message = err instanceof Error ? err.message : String(err);
|
|
32
93
|
this.error(message, { exit: 1 });
|
|
33
94
|
});
|
|
34
|
-
this.log(chalk.green(`\nOrganization: ${result.organization.name}`));
|
|
35
95
|
this.log(chalk.green(`\nProject created at ${result.projectDir}`));
|
|
36
96
|
this.log("\nGenerated files:");
|
|
37
97
|
for (const f of result.createdFiles) this.log(` ${f}`);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { M as loadCredentials, m as unwrap, p as createApiClient, y as getConfig } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { M as loadCredentials, m as unwrap, p as createApiClient, y as getConfig } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
//#region src/adapters/oclif/commands/org/current.ts
|
|
4
4
|
var OrgCurrent = class extends BaseCommand {
|
|
5
5
|
static description = "Show currently selected organization";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { m as unwrap, p as createApiClient, y as getConfig } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { m as unwrap, p as createApiClient, y as getConfig } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { Flags } from "@oclif/core";
|
|
5
5
|
//#region src/adapters/oclif/commands/org/list.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { M as loadCredentials, N as saveCredentials, m as unwrap, n as selectOrganization, p as createApiClient, y as getConfig } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { M as loadCredentials, N as saveCredentials, m as unwrap, n as selectOrganization, p as createApiClient, y as getConfig } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { Args } from "@oclif/core";
|
|
5
5
|
//#region src/adapters/oclif/commands/org/switch.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { p as createApiClient, r as DiffService, y as getConfig } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { p as createApiClient, r as DiffService, y as getConfig } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { Args, Flags } from "@oclif/core";
|
|
5
5
|
//#region src/adapters/oclif/commands/overlays/diff.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as PullService, p as createApiClient, y as getConfig } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { a as PullService, p as createApiClient, y as getConfig } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { Flags } from "@oclif/core";
|
|
5
5
|
//#region src/adapters/oclif/commands/overlays/pull.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { o as PushService, p as createApiClient, y as getConfig } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { o as PushService, p as createApiClient, y as getConfig } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { Args, Flags } from "@oclif/core";
|
|
5
5
|
//#region src/adapters/oclif/commands/overlays/push.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as StatusService, p as createApiClient, y as getConfig } from "../../../../core-
|
|
2
|
-
import { t as BaseCommand } from "../../../../base.command-
|
|
1
|
+
import { i as StatusService, p as createApiClient, y as getConfig } from "../../../../core-EJgxP-x5.mjs";
|
|
2
|
+
import { t as BaseCommand } from "../../../../base.command-DDSLyx5v.mjs";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { Args, Flags } from "@oclif/core";
|
|
5
5
|
//#region src/adapters/oclif/commands/overlays/status.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as setClerkEnv, P as ApiError } from "./core-
|
|
1
|
+
import { E as setClerkEnv, P as ApiError } from "./core-EJgxP-x5.mjs";
|
|
2
2
|
import { Command, Flags } from "@oclif/core";
|
|
3
3
|
import { makeTable } from "@oclif/table";
|
|
4
4
|
//#region src/adapters/oclif/base.command.ts
|
|
@@ -801,7 +801,33 @@ async function selectOrganization(organizations) {
|
|
|
801
801
|
}
|
|
802
802
|
//#endregion
|
|
803
803
|
//#region src/core/services/init.service.ts
|
|
804
|
-
var InitService = class {
|
|
804
|
+
var InitService = class InitService {
|
|
805
|
+
static PROJECT_DIRS = [
|
|
806
|
+
".devcontainer",
|
|
807
|
+
".claude/skills/explore-lakehouse",
|
|
808
|
+
".claude/skills/create-semantic-model",
|
|
809
|
+
"dbt/models/bronze",
|
|
810
|
+
"dbt/models/silver",
|
|
811
|
+
"dbt/models/gold",
|
|
812
|
+
"semantic/cubes"
|
|
813
|
+
];
|
|
814
|
+
static PROJECT_FILES = [
|
|
815
|
+
".devcontainer/devcontainer.json",
|
|
816
|
+
".devcontainer/Dockerfile",
|
|
817
|
+
".devcontainer/setup.sh",
|
|
818
|
+
".gitignore",
|
|
819
|
+
"README.md",
|
|
820
|
+
"dbt/profiles.yml",
|
|
821
|
+
"dbt/dbt_project.yml",
|
|
822
|
+
"CLAUDE.md",
|
|
823
|
+
"AGENTS.md",
|
|
824
|
+
".claude/skills/explore-lakehouse/SKILL.md",
|
|
825
|
+
".claude/skills/create-semantic-model/SKILL.md",
|
|
826
|
+
"dbt/models/bronze/.gitkeep",
|
|
827
|
+
"dbt/models/silver/.gitkeep",
|
|
828
|
+
"dbt/models/gold/.gitkeep",
|
|
829
|
+
"semantic/cubes/.gitkeep"
|
|
830
|
+
];
|
|
805
831
|
constructor(templatesDir) {
|
|
806
832
|
this.templatesDir = templatesDir;
|
|
807
833
|
}
|
|
@@ -809,7 +835,7 @@ var InitService = class {
|
|
|
809
835
|
const { projectName, targetDir, apiUrl, token, organizationId } = options;
|
|
810
836
|
const projectDir = path.join(targetDir, projectName);
|
|
811
837
|
const projectSlug = projectName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
812
|
-
const org = await this.resolveOrganization(apiUrl, token, organizationId);
|
|
838
|
+
const org = options.organization ?? await this.resolveOrganization(apiUrl, token, organizationId);
|
|
813
839
|
const gcpProjectId = await this.downloadGcpKey(apiUrl, token, org, projectSlug);
|
|
814
840
|
const resolvedOrg = {
|
|
815
841
|
...org,
|
|
@@ -819,7 +845,7 @@ var InitService = class {
|
|
|
819
845
|
return {
|
|
820
846
|
projectDir,
|
|
821
847
|
organization: resolvedOrg,
|
|
822
|
-
createdFiles: this.scaffold(projectDir, projectName, projectSlug, resolvedOrg)
|
|
848
|
+
createdFiles: this.scaffold(projectDir, projectName, projectSlug, resolvedOrg, options.allowExistingDir)
|
|
823
849
|
};
|
|
824
850
|
}
|
|
825
851
|
async resolveOrganization(apiUrl, token, organizationId) {
|
|
@@ -857,18 +883,18 @@ var InitService = class {
|
|
|
857
883
|
});
|
|
858
884
|
return JSON.parse(keyJson).project_id ?? "";
|
|
859
885
|
}
|
|
860
|
-
|
|
861
|
-
|
|
886
|
+
dryRun(projectName, targetDir) {
|
|
887
|
+
return {
|
|
888
|
+
projectDir: path.join(targetDir, projectName),
|
|
889
|
+
dirs: InitService.PROJECT_DIRS,
|
|
890
|
+
files: InitService.PROJECT_FILES
|
|
891
|
+
};
|
|
892
|
+
}
|
|
893
|
+
scaffold(projectDir, projectName, projectSlug, org, allowExistingDir) {
|
|
894
|
+
if (fs.existsSync(projectDir) && !allowExistingDir) throw new Error(`Directory "${projectName}" already exists. Remove it or choose a different name.`);
|
|
862
895
|
const created = [];
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
".claude/skills/explore-lakehouse",
|
|
866
|
-
".claude/skills/create-semantic-model",
|
|
867
|
-
"dbt/models/bronze",
|
|
868
|
-
"dbt/models/silver",
|
|
869
|
-
"dbt/models/gold",
|
|
870
|
-
"semantic/cubes"
|
|
871
|
-
]) fs.mkdirSync(path.join(projectDir, dir), { recursive: true });
|
|
896
|
+
const dirs = InitService.PROJECT_DIRS;
|
|
897
|
+
for (const dir of dirs) fs.mkdirSync(path.join(projectDir, dir), { recursive: true });
|
|
872
898
|
const dbtName = projectName.replace(/[^a-zA-Z0-9_]/g, "_");
|
|
873
899
|
const files = {
|
|
874
900
|
".devcontainer/devcontainer.json": this.renderTemplate(".devcontainer/devcontainer.json", {
|
|
@@ -162,6 +162,8 @@ interface InitOptions {
|
|
|
162
162
|
apiUrl: string;
|
|
163
163
|
token: string;
|
|
164
164
|
organizationId?: string;
|
|
165
|
+
organization?: OrganizationInfo;
|
|
166
|
+
allowExistingDir?: boolean;
|
|
165
167
|
}
|
|
166
168
|
interface InitResult {
|
|
167
169
|
projectDir: string;
|
|
@@ -170,10 +172,17 @@ interface InitResult {
|
|
|
170
172
|
}
|
|
171
173
|
declare class InitService {
|
|
172
174
|
private readonly templatesDir;
|
|
175
|
+
private static readonly PROJECT_DIRS;
|
|
176
|
+
private static readonly PROJECT_FILES;
|
|
173
177
|
constructor(templatesDir: string);
|
|
174
178
|
run(options: InitOptions): Promise<InitResult>;
|
|
175
|
-
|
|
179
|
+
resolveOrganization(apiUrl: string, token: string, organizationId?: string): Promise<OrganizationInfo>;
|
|
176
180
|
private downloadGcpKey;
|
|
181
|
+
dryRun(projectName: string, targetDir: string): {
|
|
182
|
+
projectDir: string;
|
|
183
|
+
dirs: readonly string[];
|
|
184
|
+
files: readonly string[];
|
|
185
|
+
};
|
|
177
186
|
private scaffold;
|
|
178
187
|
private renderTemplate;
|
|
179
188
|
}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { a as DiffEntry, c as OverlayStatusInfo, d as StatusResult, f as SyncStatus, i as DiffChange, l as PullResult, n as CubeDefinition, o as DiffResult, r as CubeOverlay, s as OverlayFile, t as Config, u as PushResult } from "./types-DZssnweO.mjs";
|
|
2
|
-
import { A as ClerkEnv, B as tokenResponseToCredentials, C as LoadedOverlay, D as loadOverlaysByNames, E as loadOverlays, F as generatePKCEChallenge, G as isTokenExpired, H as startOAuthServer, I as getUserInfo, J as getConfig, K as loadCredentials, L as refreshAccessToken, M as PKCEChallenge, N as buildAuthorizationUrl, O as loadOverlaysFromDir, P as exchangeCodeForTokens, R as setClerkConfig, S as sanitizeFileName, T as loadOverlayFile, U as deleteCredentials, V as OAuthServerResult, W as getCredentialsPath, Y as ApiError, _ as createApiClient, a as DiffOptions, b as formatError, c as StatusOptions, d as PullOptions, f as PullService, g as ApiClient, h as PushService, i as DiffContext, j as ClerkOAuthConfig, k as saveOverlayToFile, l as StatusService, m as PushOptions, n as InitResult, o as DiffService, p as PushContext, q as saveCredentials, r as InitService, s as StatusContext, t as InitOptions, u as PullContext, v as unwrap, w as getLocalOverlayNames, x as isContentEqual, y as findRemoteOnlyOverlays, z as setClerkEnv } from "./index-
|
|
2
|
+
import { A as ClerkEnv, B as tokenResponseToCredentials, C as LoadedOverlay, D as loadOverlaysByNames, E as loadOverlays, F as generatePKCEChallenge, G as isTokenExpired, H as startOAuthServer, I as getUserInfo, J as getConfig, K as loadCredentials, L as refreshAccessToken, M as PKCEChallenge, N as buildAuthorizationUrl, O as loadOverlaysFromDir, P as exchangeCodeForTokens, R as setClerkConfig, S as sanitizeFileName, T as loadOverlayFile, U as deleteCredentials, V as OAuthServerResult, W as getCredentialsPath, Y as ApiError, _ as createApiClient, a as DiffOptions, b as formatError, c as StatusOptions, d as PullOptions, f as PullService, g as ApiClient, h as PushService, i as DiffContext, j as ClerkOAuthConfig, k as saveOverlayToFile, l as StatusService, m as PushOptions, n as InitResult, o as DiffService, p as PushContext, q as saveCredentials, r as InitService, s as StatusContext, t as InitOptions, u as PullContext, v as unwrap, w as getLocalOverlayNames, x as isContentEqual, y as findRemoteOnlyOverlays, z as setClerkEnv } from "./index-DH6vy050.mjs";
|
|
3
3
|
import { a as OrgListResult, c as StoredCredentials, i as OAuthCallbackResult, l as TokenResponse, n as AuthStatusInfo, o as OrgSwitchResult, r as ClerkUserInfo, s as OrganizationInfo, t as AuthResult } from "./types-DsQtGF-c.mjs";
|
|
4
4
|
export { ApiClient, ApiError, AuthResult, AuthStatusInfo, ClerkEnv, ClerkOAuthConfig, ClerkUserInfo, Config, CubeDefinition, CubeOverlay, DiffChange, DiffContext, DiffEntry, DiffOptions, DiffResult, DiffService, InitOptions, InitResult, InitService, LoadedOverlay, OAuthCallbackResult, OAuthServerResult, OrgListResult, OrgSwitchResult, OrganizationInfo, OverlayFile, OverlayStatusInfo, PKCEChallenge, PullContext, PullOptions, PullResult, PullService, PushContext, PushOptions, PushResult, PushService, StatusContext, StatusOptions, StatusResult, StatusService, StoredCredentials, SyncStatus, TokenResponse, buildAuthorizationUrl, createApiClient, deleteCredentials, exchangeCodeForTokens, findRemoteOnlyOverlays, formatError, generatePKCEChallenge, getConfig, getCredentialsPath, getLocalOverlayNames, getUserInfo, isContentEqual, isTokenExpired, loadCredentials, loadOverlayFile, loadOverlays, loadOverlaysByNames, loadOverlaysFromDir, refreshAccessToken, sanitizeFileName, saveCredentials, saveOverlayToFile, setClerkConfig, setClerkEnv, startOAuthServer, tokenResponseToCredentials, unwrap };
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as getCredentialsPath, C as getUserInfo, D as tokenResponseToCredentials, E as setClerkEnv, M as loadCredentials, N as saveCredentials, O as startOAuthServer, P as ApiError, S as generatePKCEChallenge, T as setClerkConfig, _ as isContentEqual, a as PullService, b as buildAuthorizationUrl, c as loadOverlayFile, d as loadOverlaysFromDir, f as saveOverlayToFile, g as formatError, h as findRemoteOnlyOverlays, i as StatusService, j as isTokenExpired, k as deleteCredentials, l as loadOverlays, m as unwrap, o as PushService, p as createApiClient, r as DiffService, s as getLocalOverlayNames, t as InitService, u as loadOverlaysByNames, v as sanitizeFileName, w as refreshAccessToken, x as exchangeCodeForTokens, y as getConfig } from "./core-
|
|
1
|
+
import { A as getCredentialsPath, C as getUserInfo, D as tokenResponseToCredentials, E as setClerkEnv, M as loadCredentials, N as saveCredentials, O as startOAuthServer, P as ApiError, S as generatePKCEChallenge, T as setClerkConfig, _ as isContentEqual, a as PullService, b as buildAuthorizationUrl, c as loadOverlayFile, d as loadOverlaysFromDir, f as saveOverlayToFile, g as formatError, h as findRemoteOnlyOverlays, i as StatusService, j as isTokenExpired, k as deleteCredentials, l as loadOverlays, m as unwrap, o as PushService, p as createApiClient, r as DiffService, s as getLocalOverlayNames, t as InitService, u as loadOverlaysByNames, v as sanitizeFileName, w as refreshAccessToken, x as exchangeCodeForTokens, y as getConfig } from "./core-EJgxP-x5.mjs";
|
|
2
2
|
export { ApiError, DiffService, InitService, PullService, PushService, StatusService, buildAuthorizationUrl, createApiClient, deleteCredentials, exchangeCodeForTokens, findRemoteOnlyOverlays, formatError, generatePKCEChallenge, getConfig, getCredentialsPath, getLocalOverlayNames, getUserInfo, isContentEqual, isTokenExpired, loadCredentials, loadOverlayFile, loadOverlays, loadOverlaysByNames, loadOverlaysFromDir, refreshAccessToken, sanitizeFileName, saveCredentials, saveOverlayToFile, setClerkConfig, setClerkEnv, startOAuthServer, tokenResponseToCredentials, unwrap };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revos/cli",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "RevOS CLI for managing
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "RevOS CLI for managing RevOS platform resources",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
"dirname": "revos",
|
|
17
17
|
"topicSeparator": " ",
|
|
18
18
|
"commands": "./dist/adapters/oclif/commands",
|
|
19
|
+
"plugins": [
|
|
20
|
+
"@oclif/plugin-warn-if-update-available"
|
|
21
|
+
],
|
|
22
|
+
"warn-if-update-available": {
|
|
23
|
+
"timeoutInDays": 7
|
|
24
|
+
},
|
|
19
25
|
"topics": {
|
|
20
26
|
"auth": {
|
|
21
27
|
"description": "Authentication commands"
|
|
@@ -34,7 +40,9 @@
|
|
|
34
40
|
],
|
|
35
41
|
"dependencies": {
|
|
36
42
|
"@inquirer/search": "^4.1.7",
|
|
43
|
+
"@inquirer/select": "^4.4.2",
|
|
37
44
|
"@oclif/core": "^4.2.10",
|
|
45
|
+
"@oclif/plugin-warn-if-update-available": "^3.1.61",
|
|
38
46
|
"@oclif/table": "^0.5.4",
|
|
39
47
|
"chalk": "^4.1.2",
|
|
40
48
|
"open": "^10.1.0",
|