@wayai/cli 0.1.1 → 0.2.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/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.js +88 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/pull.d.ts +7 -1
- package/dist/commands/pull.js +134 -42
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts +6 -1
- package/dist/commands/push.js +248 -54
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.js +17 -8
- package/dist/commands/status.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +24 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +3 -1
- package/dist/lib/api-client.js +9 -0
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/parser.js +13 -3
- package/dist/lib/parser.js.map +1 -1
- package/dist/lib/repo-config.d.ts +16 -0
- package/dist/lib/repo-config.js +49 -0
- package/dist/lib/repo-config.js.map +1 -0
- package/dist/lib/types.d.ts +13 -0
- package/dist/lib/utils.d.ts +4 -0
- package/dist/lib/utils.js +13 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/workspace.d.ts +75 -0
- package/dist/lib/workspace.js +244 -0
- package/dist/lib/workspace.js.map +1 -0
- package/dist/lib/workspace.test.d.ts +5 -0
- package/dist/lib/workspace.test.js +329 -0
- package/dist/lib/workspace.test.js.map +1 -0
- package/dist/lib/yaml-writer.js +10 -6
- package/dist/lib/yaml-writer.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wayai init [org-name] — link this repo to a WayAI organization
|
|
3
|
+
*
|
|
4
|
+
* Creates .wayai.yaml at the git root with the selected organization.
|
|
5
|
+
* Also creates workspace/ directory if missing.
|
|
6
|
+
*/
|
|
7
|
+
export declare function initCommand(args: string[]): Promise<void>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wayai init [org-name] — link this repo to a WayAI organization
|
|
3
|
+
*
|
|
4
|
+
* Creates .wayai.yaml at the git root with the selected organization.
|
|
5
|
+
* Also creates workspace/ directory if missing.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import * as readline from 'node:readline';
|
|
10
|
+
import { requireAuth } from '../lib/auth.js';
|
|
11
|
+
import { ApiClient } from '../lib/api-client.js';
|
|
12
|
+
import { readRepoConfig, writeRepoConfig } from '../lib/repo-config.js';
|
|
13
|
+
import { findGitRoot } from '../lib/workspace.js';
|
|
14
|
+
function promptSelection(question, options) {
|
|
15
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
16
|
+
return new Promise((resolve) => {
|
|
17
|
+
console.log(question);
|
|
18
|
+
for (let i = 0; i < options.length; i++) {
|
|
19
|
+
console.log(` ${i + 1}. ${options[i]}`);
|
|
20
|
+
}
|
|
21
|
+
rl.question('Select [1]: ', (answer) => {
|
|
22
|
+
rl.close();
|
|
23
|
+
const num = parseInt(answer.trim(), 10);
|
|
24
|
+
if (isNaN(num) || num < 1 || num > options.length) {
|
|
25
|
+
resolve(0); // default to first
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
resolve(num - 1);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export async function initCommand(args) {
|
|
34
|
+
const gitRoot = findGitRoot();
|
|
35
|
+
if (!gitRoot) {
|
|
36
|
+
console.error('Not inside a git repository. Run `git init` first.');
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
// Check for existing config
|
|
40
|
+
const existing = readRepoConfig(gitRoot);
|
|
41
|
+
if (existing) {
|
|
42
|
+
console.log(`Already initialized: organization "${existing.organization}"`);
|
|
43
|
+
console.log('To re-initialize, delete .wayai.yaml and run again.');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const { config, accessToken } = await requireAuth();
|
|
47
|
+
const client = new ApiClient({ apiUrl: config.api_url, accessToken });
|
|
48
|
+
console.log('Fetching organizations...');
|
|
49
|
+
const { organizations } = await client.organizations();
|
|
50
|
+
if (organizations.length === 0) {
|
|
51
|
+
console.error('No organizations found. Create one at platform.wayai.pro first.');
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
let selectedOrg;
|
|
55
|
+
// If arg provided, match by name
|
|
56
|
+
const argName = args.find((a) => !a.startsWith('-'));
|
|
57
|
+
if (argName) {
|
|
58
|
+
const match = organizations.find((org) => org.name.toLowerCase() === argName.toLowerCase());
|
|
59
|
+
if (!match) {
|
|
60
|
+
console.error(`Organization "${argName}" not found. Available:`);
|
|
61
|
+
for (const org of organizations) {
|
|
62
|
+
console.error(` ${org.name}`);
|
|
63
|
+
}
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
selectedOrg = match;
|
|
67
|
+
}
|
|
68
|
+
else if (organizations.length === 1) {
|
|
69
|
+
selectedOrg = organizations[0];
|
|
70
|
+
console.log(`Using organization: ${selectedOrg.name}`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const idx = await promptSelection('Select an organization:', organizations.map((o) => o.name));
|
|
74
|
+
selectedOrg = organizations[idx];
|
|
75
|
+
}
|
|
76
|
+
// Write .wayai.yaml
|
|
77
|
+
const configPath = writeRepoConfig({ organization: selectedOrg.name }, gitRoot);
|
|
78
|
+
console.log(`Wrote ${configPath}`);
|
|
79
|
+
// Create workspace/ if missing
|
|
80
|
+
const workspaceDir = path.join(gitRoot, 'workspace');
|
|
81
|
+
if (!fs.existsSync(workspaceDir)) {
|
|
82
|
+
fs.mkdirSync(workspaceDir, { recursive: true });
|
|
83
|
+
console.log(`Created ${workspaceDir}/`);
|
|
84
|
+
}
|
|
85
|
+
console.log(`\nInitialized for organization: ${selectedOrg.name}`);
|
|
86
|
+
console.log('Run `wayai pull --all` to sync hub configurations.');
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,SAAS,eAAe,CAAC,QAAgB,EAAE,OAAiB;IAC1D,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;YACrC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;YACjC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,sCAAsC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAEtE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;IAEvD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,WAAyC,CAAC;IAE9C,iCAAiC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAC9B,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAC1D,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,iBAAiB,OAAO,yBAAyB,CAAC,CAAC;YACjE,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,WAAW,GAAG,KAAK,CAAC;IACtB,CAAC;SAAM,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,eAAe,CAC/B,yBAAyB,EACzB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACjC,CAAC;QACF,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,oBAAoB;IACpB,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IAEnC,+BAA+B;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,WAAW,YAAY,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/commands/pull.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* wayai pull [hub-path] — fetch hub config
|
|
2
|
+
* wayai pull [hub-path] [--all] [--yes] — fetch hub config and write local files
|
|
3
|
+
*
|
|
4
|
+
* Modes:
|
|
5
|
+
* wayai pull project/hub — resolve workspace folder, pull that hub
|
|
6
|
+
* wayai pull --all — pull all hubs in workspace
|
|
7
|
+
* wayai pull — from hub folder: pull current hub
|
|
8
|
+
* wayai pull — from repo root: error with help
|
|
3
9
|
*/
|
|
4
10
|
export declare function pullCommand(args: string[]): Promise<void>;
|
package/dist/commands/pull.js
CHANGED
|
@@ -1,55 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* wayai pull [hub-path] — fetch hub config
|
|
2
|
+
* wayai pull [hub-path] [--all] [--yes] — fetch hub config and write local files
|
|
3
|
+
*
|
|
4
|
+
* Modes:
|
|
5
|
+
* wayai pull project/hub — resolve workspace folder, pull that hub
|
|
6
|
+
* wayai pull --all — pull all hubs in workspace
|
|
7
|
+
* wayai pull — from hub folder: pull current hub
|
|
8
|
+
* wayai pull — from repo root: error with help
|
|
3
9
|
*/
|
|
4
|
-
import * as readline from 'node:readline';
|
|
5
10
|
import { requireAuth } from '../lib/auth.js';
|
|
6
11
|
import { ApiClient } from '../lib/api-client.js';
|
|
7
12
|
import { writeHubFolder } from '../lib/yaml-writer.js';
|
|
8
13
|
import { parseHubFolder } from '../lib/parser.js';
|
|
9
14
|
import { printDiff } from '../lib/diff-display.js';
|
|
10
|
-
import { detectHubFromCwd } from '../lib/utils.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (hubPath) {
|
|
27
|
-
// Resolve hub-path (org/project/hub) → hub_id
|
|
28
|
-
console.log(`Looking up ${hubPath}...`);
|
|
29
|
-
const lookup = await client.lookup(hubPath);
|
|
30
|
-
hubId = lookup.hub_id;
|
|
31
|
-
hubFolder = process.cwd();
|
|
32
|
-
console.log(`Found hub: ${lookup.hub_name} (${lookup.hub_environment}) in ${lookup.organization_name}/${lookup.project_name}`);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
// Try to detect from wayai.yaml in cwd
|
|
36
|
-
const detected = await detectHubFromCwd();
|
|
37
|
-
if (!detected) {
|
|
38
|
-
console.error('No hub path provided and no wayai.yaml found in current directory.');
|
|
39
|
-
console.error('Usage: wayai pull <org/project/hub>');
|
|
40
|
-
process.exit(1);
|
|
15
|
+
import { confirm, detectHubFromCwd } from '../lib/utils.js';
|
|
16
|
+
import { detectWorkspace, resolveHubFolder, scanWorkspaceHubs, resolveExplicitHubPath } from '../lib/workspace.js';
|
|
17
|
+
import { readRepoConfig } from '../lib/repo-config.js';
|
|
18
|
+
function parseArgs(args) {
|
|
19
|
+
let hubPath;
|
|
20
|
+
let all = false;
|
|
21
|
+
let autoConfirm = false;
|
|
22
|
+
for (const arg of args) {
|
|
23
|
+
if (arg === '--all') {
|
|
24
|
+
all = true;
|
|
25
|
+
}
|
|
26
|
+
else if (arg === '--yes' || arg === '-y') {
|
|
27
|
+
autoConfirm = true;
|
|
28
|
+
}
|
|
29
|
+
else if (!arg.startsWith('-')) {
|
|
30
|
+
hubPath = arg;
|
|
41
31
|
}
|
|
42
|
-
hubId = detected.hubId;
|
|
43
|
-
hubFolder = detected.hubFolder;
|
|
44
|
-
console.log(`Using hub from wayai.yaml: ${hubId}`);
|
|
45
32
|
}
|
|
46
|
-
|
|
33
|
+
return { hubPath, all, autoConfirm };
|
|
34
|
+
}
|
|
35
|
+
async function pullSingleHub(client, hubId, hubFolder, autoConfirm) {
|
|
47
36
|
console.log('Fetching hub configuration...');
|
|
48
37
|
const payload = await client.pull(hubId);
|
|
49
38
|
// If local files exist, show diff before overwriting
|
|
50
39
|
try {
|
|
51
40
|
const localPayload = parseHubFolder(hubFolder);
|
|
52
|
-
// Use the diff endpoint to compare remote vs local
|
|
53
41
|
const diffResult = await client.diff(hubId, localPayload, 'pull');
|
|
54
42
|
if (!diffResult.has_changes) {
|
|
55
43
|
console.log('No changes — local files are up to date.');
|
|
@@ -57,10 +45,12 @@ export async function pullCommand(args) {
|
|
|
57
45
|
}
|
|
58
46
|
console.log('\nChanges to apply locally:');
|
|
59
47
|
printDiff(diffResult.summary);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
48
|
+
if (!autoConfirm) {
|
|
49
|
+
const ok = await confirm('Apply these changes?');
|
|
50
|
+
if (!ok) {
|
|
51
|
+
console.log('Cancelled.');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
64
54
|
}
|
|
65
55
|
}
|
|
66
56
|
catch {
|
|
@@ -70,4 +60,106 @@ export async function pullCommand(args) {
|
|
|
70
60
|
writeHubFolder(hubFolder, payload);
|
|
71
61
|
console.log(`Hub configuration written to ${hubFolder}`);
|
|
72
62
|
}
|
|
63
|
+
async function pullAllHubs(client, autoConfirm) {
|
|
64
|
+
const workspace = detectWorkspace();
|
|
65
|
+
if (!workspace) {
|
|
66
|
+
console.error('No workspace/ directory found. Run from a git repo with a workspace/ directory.');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const hubs = scanWorkspaceHubs(workspace.workspaceDir);
|
|
70
|
+
if (hubs.length === 0) {
|
|
71
|
+
console.log('No hubs found in workspace/.');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
console.log(`Found ${hubs.length} hub(s) in workspace:\n`);
|
|
75
|
+
for (const hub of hubs) {
|
|
76
|
+
console.log(` ${hub.hubFolder}`);
|
|
77
|
+
}
|
|
78
|
+
console.log();
|
|
79
|
+
if (!autoConfirm) {
|
|
80
|
+
const ok = await confirm(`Pull ${hubs.length} hub(s)?`);
|
|
81
|
+
if (!ok) {
|
|
82
|
+
console.log('Cancelled.');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const errors = [];
|
|
87
|
+
for (const hub of hubs) {
|
|
88
|
+
console.log(`\n--- ${hub.hubFolder} ---`);
|
|
89
|
+
try {
|
|
90
|
+
await pullSingleHub(client, hub.hubId, hub.hubFolder, true);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
94
|
+
console.error(`Error: ${msg}`);
|
|
95
|
+
errors.push({ hubFolder: hub.hubFolder, error: msg });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (errors.length > 0) {
|
|
99
|
+
console.error(`\n${errors.length} hub(s) failed:`);
|
|
100
|
+
for (const e of errors) {
|
|
101
|
+
console.error(` ${e.hubFolder}: ${e.error}`);
|
|
102
|
+
}
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async function pullExplicitPath(client, hubPath, autoConfirm) {
|
|
107
|
+
const result = resolveExplicitHubPath(hubPath);
|
|
108
|
+
if ('resolved' in result) {
|
|
109
|
+
console.log(`Found hub locally: ${result.resolved.hubId} (${result.resolved.hubEnvironment})`);
|
|
110
|
+
await pullSingleHub(client, result.resolved.hubId, result.resolved.hubFolder, autoConfirm);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
// Fall back to API lookup (handles original names and remote-only hubs)
|
|
114
|
+
const { segments } = result;
|
|
115
|
+
let lookupPath;
|
|
116
|
+
if (segments.orgPrefix) {
|
|
117
|
+
lookupPath = hubPath;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
const repoConfig = readRepoConfig();
|
|
121
|
+
if (!repoConfig) {
|
|
122
|
+
console.error('Hub not found in workspace and 2-part path requires .wayai.yaml for API lookup.');
|
|
123
|
+
console.error('Run `wayai init` first, or use 3-part: org/project/hub');
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
lookupPath = `${repoConfig.organization}/${hubPath}`;
|
|
127
|
+
}
|
|
128
|
+
console.log(`Looking up ${hubPath}...`);
|
|
129
|
+
const lookup = await client.lookup(lookupPath);
|
|
130
|
+
console.log(`Found hub: ${lookup.hub_name} (${lookup.hub_environment}) in ${lookup.project_name}`);
|
|
131
|
+
const workspace = detectWorkspace();
|
|
132
|
+
const hubFolder = workspace
|
|
133
|
+
? resolveHubFolder(workspace.workspaceDir, lookup.hub_id, lookup.project_name, lookup.hub_name, lookup.hub_environment, lookup.preview_label, lookup.branch_name)
|
|
134
|
+
: process.cwd();
|
|
135
|
+
await pullSingleHub(client, lookup.hub_id, hubFolder, autoConfirm);
|
|
136
|
+
}
|
|
137
|
+
export async function pullCommand(args) {
|
|
138
|
+
const { hubPath, all, autoConfirm } = parseArgs(args);
|
|
139
|
+
const { config, accessToken } = await requireAuth();
|
|
140
|
+
const client = new ApiClient({ apiUrl: config.api_url, accessToken });
|
|
141
|
+
// 1. Explicit hub path argument
|
|
142
|
+
if (hubPath) {
|
|
143
|
+
await pullExplicitPath(client, hubPath, autoConfirm);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
// 2. --all flag: pull all hubs in workspace
|
|
147
|
+
if (all) {
|
|
148
|
+
await pullAllHubs(client, autoConfirm);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// 3. Current directory has wayai.yaml
|
|
152
|
+
const detected = await detectHubFromCwd();
|
|
153
|
+
if (detected) {
|
|
154
|
+
console.log(`Using hub from wayai.yaml: ${detected.hubId}`);
|
|
155
|
+
await pullSingleHub(client, detected.hubId, detected.hubFolder, autoConfirm);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
// 4. None of the above — error with help
|
|
159
|
+
console.error('No hub found. Provide a hub path, use --all, or run from a hub folder:');
|
|
160
|
+
console.error(' wayai pull <project/hub> Pull a specific hub');
|
|
161
|
+
console.error(' wayai pull --all Pull all hubs in workspace');
|
|
162
|
+
console.error(' wayai pull Pull current hub (from hub folder)');
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
73
165
|
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/push.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* wayai push [hub-path] — parse local files, diff remote, sync to preview
|
|
2
|
+
* wayai push [hub-path] [--yes] — parse local files, diff remote, sync to preview
|
|
3
|
+
*
|
|
4
|
+
* Modes:
|
|
5
|
+
* wayai push project/hub — resolve workspace folder, push that hub
|
|
6
|
+
* wayai push — from hub folder: push current hub
|
|
7
|
+
* wayai push — from repo root: auto-detect changed hubs via git
|
|
3
8
|
*/
|
|
4
9
|
export declare function pushCommand(args: string[]): Promise<void>;
|