@trikhub/cli 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/LICENSE +21 -0
- package/README.md +389 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +105 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/info.d.ts +11 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +101 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/install.d.ts +17 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +358 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +11 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +96 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +19 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +154 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/publish.d.ts +13 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +285 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/search.d.ts +12 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +60 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/sync.d.ts +19 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +193 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/uninstall.d.ts +11 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +153 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/upgrade.d.ts +15 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +144 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +79 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +202 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/registry.d.ts +90 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +294 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/storage.d.ts +82 -0
- package/dist/lib/storage.d.ts.map +1 -0
- package/dist/lib/storage.js +177 -0
- package/dist/lib/storage.js.map +1 -0
- package/dist/lib/validator.d.ts +24 -0
- package/dist/lib/validator.d.ts.map +1 -0
- package/dist/lib/validator.js +181 -0
- package/dist/lib/validator.js.map +1 -0
- package/dist/types.d.ts +187 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +36 -0
- package/dist/types.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trik login command
|
|
3
|
+
*
|
|
4
|
+
* Authenticates with the TrikHub registry using GitHub's device flow.
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
import { RegistryClient } from '../lib/registry.js';
|
|
9
|
+
import { loadConfig, saveConfig } from '../lib/storage.js';
|
|
10
|
+
export async function loginCommand() {
|
|
11
|
+
const spinner = ora();
|
|
12
|
+
const config = loadConfig();
|
|
13
|
+
// Check if already logged in
|
|
14
|
+
if (config.authToken && config.authExpiresAt) {
|
|
15
|
+
const expiresAt = new Date(config.authExpiresAt);
|
|
16
|
+
if (expiresAt > new Date()) {
|
|
17
|
+
console.log(chalk.yellow(`Already logged in as ${chalk.cyan(config.publisherUsername)}`));
|
|
18
|
+
console.log(chalk.dim('Use `trik logout` to sign out first'));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const registry = new RegistryClient();
|
|
23
|
+
try {
|
|
24
|
+
// Start device flow
|
|
25
|
+
spinner.start('Initializing authentication...');
|
|
26
|
+
const deviceAuth = await registry.startDeviceAuth();
|
|
27
|
+
spinner.stop();
|
|
28
|
+
// Display instructions to user
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(chalk.bold(' To authenticate, please:'));
|
|
31
|
+
console.log();
|
|
32
|
+
console.log(` 1. Visit: ${chalk.cyan(deviceAuth.verificationUrl)}`);
|
|
33
|
+
console.log(` 2. Enter code: ${chalk.yellow.bold(deviceAuth.userCode)}`);
|
|
34
|
+
console.log();
|
|
35
|
+
console.log(chalk.dim(` This code expires in ${Math.floor(deviceAuth.expiresIn / 60)} minutes`));
|
|
36
|
+
console.log();
|
|
37
|
+
// Poll for authorization
|
|
38
|
+
spinner.start('Waiting for authorization...');
|
|
39
|
+
const pollInterval = (deviceAuth.interval || 5) * 1000; // Convert to ms
|
|
40
|
+
const maxAttempts = Math.ceil(deviceAuth.expiresIn / (pollInterval / 1000));
|
|
41
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
42
|
+
await sleep(pollInterval);
|
|
43
|
+
try {
|
|
44
|
+
const result = await registry.pollDeviceAuth(deviceAuth.deviceCode);
|
|
45
|
+
if (result) {
|
|
46
|
+
// Authorization complete - save credentials
|
|
47
|
+
config.authToken = result.accessToken;
|
|
48
|
+
config.authExpiresAt = result.expiresAt;
|
|
49
|
+
config.publisherUsername = result.publisher.username;
|
|
50
|
+
saveConfig(config);
|
|
51
|
+
spinner.succeed(`Authenticated as ${chalk.green(result.publisher.displayName)} (${chalk.cyan('@' + result.publisher.username)})`);
|
|
52
|
+
console.log();
|
|
53
|
+
console.log(chalk.dim('You can now publish triks with `trik publish`'));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Still pending, continue polling
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof Error) {
|
|
60
|
+
if (error.message.includes('expired')) {
|
|
61
|
+
spinner.fail('Authorization expired');
|
|
62
|
+
console.log(chalk.dim('Please run `trik login` again'));
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
if (error.message.includes('denied') || error.message.includes('access_denied')) {
|
|
66
|
+
spinner.fail('Authorization denied');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
spinner.fail('Authorization timeout');
|
|
74
|
+
console.log(chalk.dim('Please run `trik login` again'));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
spinner.fail('Authentication failed');
|
|
79
|
+
if (error instanceof Error) {
|
|
80
|
+
console.error(chalk.red(error.message));
|
|
81
|
+
}
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* trik logout command
|
|
87
|
+
*
|
|
88
|
+
* Removes saved authentication credentials.
|
|
89
|
+
*/
|
|
90
|
+
export async function logoutCommand() {
|
|
91
|
+
const config = loadConfig();
|
|
92
|
+
if (!config.authToken) {
|
|
93
|
+
console.log(chalk.yellow('Not logged in'));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const username = config.publisherUsername;
|
|
97
|
+
// Try to invalidate session on server
|
|
98
|
+
try {
|
|
99
|
+
const registry = new RegistryClient();
|
|
100
|
+
await registry.logout();
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Ignore errors - we'll clear local credentials anyway
|
|
104
|
+
}
|
|
105
|
+
// Clear local credentials
|
|
106
|
+
delete config.authToken;
|
|
107
|
+
delete config.authExpiresAt;
|
|
108
|
+
delete config.publisherUsername;
|
|
109
|
+
saveConfig(config);
|
|
110
|
+
console.log(chalk.green(`Logged out${username ? ` from @${username}` : ''}`));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* trik whoami command
|
|
114
|
+
*
|
|
115
|
+
* Shows the current authenticated user.
|
|
116
|
+
*/
|
|
117
|
+
export async function whoamiCommand() {
|
|
118
|
+
const config = loadConfig();
|
|
119
|
+
if (!config.authToken) {
|
|
120
|
+
console.log(chalk.yellow('Not logged in'));
|
|
121
|
+
console.log(chalk.dim('Run `trik login` to authenticate'));
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
// Check if token is expired
|
|
125
|
+
if (config.authExpiresAt && new Date(config.authExpiresAt) < new Date()) {
|
|
126
|
+
console.log(chalk.yellow('Session expired'));
|
|
127
|
+
console.log(chalk.dim('Run `trik login` to re-authenticate'));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const spinner = ora('Fetching user info...').start();
|
|
131
|
+
try {
|
|
132
|
+
const registry = new RegistryClient();
|
|
133
|
+
const user = await registry.getCurrentUser();
|
|
134
|
+
spinner.stop();
|
|
135
|
+
console.log();
|
|
136
|
+
console.log(` ${chalk.bold(user.displayName)}`);
|
|
137
|
+
console.log(` ${chalk.cyan('@' + user.username)}`);
|
|
138
|
+
if (user.verified) {
|
|
139
|
+
console.log(` ${chalk.green('✓')} Verified publisher`);
|
|
140
|
+
}
|
|
141
|
+
console.log();
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
spinner.fail('Failed to fetch user info');
|
|
145
|
+
if (error instanceof Error) {
|
|
146
|
+
console.error(chalk.red(error.message));
|
|
147
|
+
}
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function sleep(ms) {
|
|
152
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trik publish command
|
|
3
|
+
*
|
|
4
|
+
* Publishes a trik to the TrikHub registry.
|
|
5
|
+
*/
|
|
6
|
+
interface PublishOptions {
|
|
7
|
+
directory?: string;
|
|
8
|
+
tag?: string;
|
|
9
|
+
skipRelease?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function publishCommand(options: PublishOptions): Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAgBD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuT3E"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trik publish command
|
|
3
|
+
*
|
|
4
|
+
* Publishes a trik to the TrikHub registry.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync, readFileSync, mkdirSync, rmSync } from 'node:fs';
|
|
7
|
+
import { join, resolve } from 'node:path';
|
|
8
|
+
import { createHash } from 'node:crypto';
|
|
9
|
+
import { spawnSync } from 'node:child_process';
|
|
10
|
+
import { tmpdir } from 'node:os';
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import ora from 'ora';
|
|
13
|
+
import * as tar from 'tar';
|
|
14
|
+
import { RegistryClient } from '../lib/registry.js';
|
|
15
|
+
import { loadConfig } from '../lib/storage.js';
|
|
16
|
+
import { validateTrik, formatValidationResult } from '../lib/validator.js';
|
|
17
|
+
export async function publishCommand(options) {
|
|
18
|
+
const spinner = ora();
|
|
19
|
+
const config = loadConfig();
|
|
20
|
+
// Check if logged in
|
|
21
|
+
if (!config.authToken) {
|
|
22
|
+
console.log(chalk.red('Not logged in'));
|
|
23
|
+
console.log(chalk.dim('Run `trik login` to authenticate first'));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
// Check if token is expired
|
|
27
|
+
if (config.authExpiresAt && new Date(config.authExpiresAt) < new Date()) {
|
|
28
|
+
console.log(chalk.red('Session expired'));
|
|
29
|
+
console.log(chalk.dim('Run `trik login` to re-authenticate'));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
const trikDir = resolve(options.directory || '.');
|
|
33
|
+
try {
|
|
34
|
+
// Step 1: Validate trik structure
|
|
35
|
+
spinner.start('Validating trik structure...');
|
|
36
|
+
// Check required files exist
|
|
37
|
+
const manifestPath = join(trikDir, 'manifest.json');
|
|
38
|
+
const trikhubPath = join(trikDir, 'trikhub.json');
|
|
39
|
+
if (!existsSync(manifestPath)) {
|
|
40
|
+
spinner.fail('Missing manifest.json');
|
|
41
|
+
console.log(chalk.dim('Create a manifest.json file with your trik definition'));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
if (!existsSync(trikhubPath)) {
|
|
45
|
+
spinner.fail('Missing trikhub.json');
|
|
46
|
+
console.log(chalk.dim('Create a trikhub.json file with registry metadata'));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
// Read manifest
|
|
50
|
+
let manifest;
|
|
51
|
+
try {
|
|
52
|
+
manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
spinner.fail('Invalid manifest.json');
|
|
56
|
+
console.log(chalk.red(error instanceof Error ? error.message : 'Parse error'));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
// Read trikhub.json
|
|
60
|
+
let trikhubMeta;
|
|
61
|
+
try {
|
|
62
|
+
trikhubMeta = JSON.parse(readFileSync(trikhubPath, 'utf-8'));
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
spinner.fail('Invalid trikhub.json');
|
|
66
|
+
console.log(chalk.red(error instanceof Error ? error.message : 'Parse error'));
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
// Check entry point exists
|
|
70
|
+
const entryPath = join(trikDir, manifest.entry.module);
|
|
71
|
+
if (!existsSync(entryPath)) {
|
|
72
|
+
spinner.fail(`Missing entry point: ${manifest.entry.module}`);
|
|
73
|
+
console.log(chalk.dim('Build your trik first (e.g., npm run build)'));
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
// Run validation
|
|
77
|
+
const validation = validateTrik(trikDir);
|
|
78
|
+
if (!validation.valid) {
|
|
79
|
+
spinner.fail('Validation failed');
|
|
80
|
+
console.log(formatValidationResult(validation));
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
if (validation.warnings.length > 0) {
|
|
84
|
+
spinner.warn('Validation passed with warnings');
|
|
85
|
+
console.log(formatValidationResult(validation));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
spinner.succeed('Validation passed');
|
|
89
|
+
}
|
|
90
|
+
// Step 2: Determine version
|
|
91
|
+
const version = options.tag?.replace(/^v/, '') || manifest.version;
|
|
92
|
+
console.log(chalk.dim(` Version: ${version}`));
|
|
93
|
+
// Step 3: Get GitHub repo from trikhub.json
|
|
94
|
+
const repoUrl = trikhubMeta.repository;
|
|
95
|
+
const repoMatch = repoUrl.match(/github\.com\/([^/]+\/[^/]+)/);
|
|
96
|
+
if (!repoMatch) {
|
|
97
|
+
console.log(chalk.red('Invalid repository URL in trikhub.json'));
|
|
98
|
+
console.log(chalk.dim('Expected format: https://github.com/owner/repo'));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
const githubRepo = repoMatch[1].replace(/\.git$/, '');
|
|
102
|
+
const [owner] = githubRepo.split('/');
|
|
103
|
+
const trikName = manifest.id || manifest.name;
|
|
104
|
+
const fullName = `@${owner}/${trikName}`;
|
|
105
|
+
console.log(chalk.dim(` Trik: ${fullName}`));
|
|
106
|
+
console.log(chalk.dim(` Repo: ${githubRepo}`));
|
|
107
|
+
// Step 4: Create tarball
|
|
108
|
+
spinner.start('Creating tarball...');
|
|
109
|
+
const tarballName = `${trikName}-${version}.tar.gz`;
|
|
110
|
+
const tarballDir = join(tmpdir(), `trikhub-publish-${Date.now()}`);
|
|
111
|
+
mkdirSync(tarballDir, { recursive: true });
|
|
112
|
+
const tarballPath = join(tarballDir, tarballName);
|
|
113
|
+
// Files to include in tarball
|
|
114
|
+
const filesToInclude = [
|
|
115
|
+
'manifest.json',
|
|
116
|
+
'trikhub.json',
|
|
117
|
+
manifest.entry.module,
|
|
118
|
+
];
|
|
119
|
+
// Add dist directory if it exists
|
|
120
|
+
const distDir = join(trikDir, 'dist');
|
|
121
|
+
if (existsSync(distDir)) {
|
|
122
|
+
filesToInclude.push('dist');
|
|
123
|
+
}
|
|
124
|
+
// Add README if it exists
|
|
125
|
+
for (const readme of ['README.md', 'README.txt', 'README']) {
|
|
126
|
+
if (existsSync(join(trikDir, readme))) {
|
|
127
|
+
filesToInclude.push(readme);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Add LICENSE if it exists
|
|
132
|
+
for (const license of ['LICENSE', 'LICENSE.md', 'LICENSE.txt']) {
|
|
133
|
+
if (existsSync(join(trikDir, license))) {
|
|
134
|
+
filesToInclude.push(license);
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
await tar.create({
|
|
139
|
+
gzip: true,
|
|
140
|
+
file: tarballPath,
|
|
141
|
+
cwd: trikDir,
|
|
142
|
+
}, filesToInclude.filter((f) => existsSync(join(trikDir, f))));
|
|
143
|
+
// Compute SHA-256
|
|
144
|
+
const tarballBuffer = readFileSync(tarballPath);
|
|
145
|
+
const sha256 = createHash('sha256').update(tarballBuffer).digest('hex');
|
|
146
|
+
spinner.succeed(`Tarball created (${(tarballBuffer.length / 1024).toFixed(1)} KB)`);
|
|
147
|
+
console.log(chalk.dim(` SHA-256: ${sha256.slice(0, 16)}...`));
|
|
148
|
+
// Step 5: Create GitHub Release (unless skipped)
|
|
149
|
+
let tarballUrl;
|
|
150
|
+
if (options.skipRelease) {
|
|
151
|
+
// User must provide tarball URL manually
|
|
152
|
+
console.log(chalk.yellow('\nSkipping GitHub release creation.'));
|
|
153
|
+
console.log('Please create a release manually and provide the tarball URL.');
|
|
154
|
+
console.log(chalk.dim(`Tarball saved at: ${tarballPath}`));
|
|
155
|
+
// For now, construct expected URL
|
|
156
|
+
tarballUrl = `https://github.com/${githubRepo}/releases/download/v${version}/${tarballName}`;
|
|
157
|
+
console.log(chalk.dim(`Expected tarball URL: ${tarballUrl}`));
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
spinner.start('Creating GitHub release...');
|
|
161
|
+
// Check if gh CLI is available
|
|
162
|
+
const ghCheck = spawnSync('gh', ['--version'], { encoding: 'utf-8' });
|
|
163
|
+
if (ghCheck.status !== 0) {
|
|
164
|
+
spinner.fail('GitHub CLI (gh) not found');
|
|
165
|
+
console.log(chalk.dim('Install: https://cli.github.com/'));
|
|
166
|
+
console.log(chalk.dim('Or use --skip-release to create the release manually'));
|
|
167
|
+
// Cleanup
|
|
168
|
+
rmSync(tarballDir, { recursive: true, force: true });
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
// Check gh auth status
|
|
172
|
+
const authCheck = spawnSync('gh', ['auth', 'status'], { encoding: 'utf-8' });
|
|
173
|
+
if (authCheck.status !== 0) {
|
|
174
|
+
spinner.fail('GitHub CLI not authenticated');
|
|
175
|
+
console.log(chalk.dim('Run: gh auth login'));
|
|
176
|
+
rmSync(tarballDir, { recursive: true, force: true });
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
// Create release
|
|
180
|
+
try {
|
|
181
|
+
const releaseResult = spawnSync('gh', [
|
|
182
|
+
'release',
|
|
183
|
+
'create',
|
|
184
|
+
`v${version}`,
|
|
185
|
+
tarballPath,
|
|
186
|
+
'--repo',
|
|
187
|
+
githubRepo,
|
|
188
|
+
'--title',
|
|
189
|
+
`v${version}`,
|
|
190
|
+
'--notes',
|
|
191
|
+
`Release v${version}\n\nPublished via TrikHub CLI`,
|
|
192
|
+
], { encoding: 'utf-8', cwd: trikDir });
|
|
193
|
+
if (releaseResult.status !== 0) {
|
|
194
|
+
// Check if release already exists
|
|
195
|
+
if (releaseResult.stderr?.includes('already exists')) {
|
|
196
|
+
spinner.info('Release already exists, uploading asset...');
|
|
197
|
+
// Upload asset to existing release
|
|
198
|
+
const uploadResult = spawnSync('gh', [
|
|
199
|
+
'release',
|
|
200
|
+
'upload',
|
|
201
|
+
`v${version}`,
|
|
202
|
+
tarballPath,
|
|
203
|
+
'--repo',
|
|
204
|
+
githubRepo,
|
|
205
|
+
'--clobber',
|
|
206
|
+
], { encoding: 'utf-8', cwd: trikDir });
|
|
207
|
+
if (uploadResult.status !== 0) {
|
|
208
|
+
throw new Error(uploadResult.stderr || 'Failed to upload asset');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
throw new Error(releaseResult.stderr || 'Failed to create release');
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
tarballUrl = `https://github.com/${githubRepo}/releases/download/v${version}/${tarballName}`;
|
|
216
|
+
spinner.succeed('GitHub release created');
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
spinner.fail('Failed to create GitHub release');
|
|
220
|
+
console.log(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
221
|
+
rmSync(tarballDir, { recursive: true, force: true });
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Step 6: Register with registry
|
|
226
|
+
spinner.start('Publishing to TrikHub registry...');
|
|
227
|
+
const registry = new RegistryClient();
|
|
228
|
+
try {
|
|
229
|
+
// Check if trik exists, if not register it
|
|
230
|
+
const existingTrik = await registry.getTrik(fullName);
|
|
231
|
+
if (!existingTrik) {
|
|
232
|
+
// Register new trik
|
|
233
|
+
try {
|
|
234
|
+
await registry.registerTrik({
|
|
235
|
+
githubRepo,
|
|
236
|
+
name: trikName, // Explicit name from manifest.id
|
|
237
|
+
description: trikhubMeta.shortDescription || manifest.description,
|
|
238
|
+
categories: trikhubMeta.categories,
|
|
239
|
+
keywords: trikhubMeta.keywords,
|
|
240
|
+
});
|
|
241
|
+
console.log(chalk.dim(` Registered new trik: ${fullName}`));
|
|
242
|
+
}
|
|
243
|
+
catch (regError) {
|
|
244
|
+
// If trik already exists (409), that's fine - continue to publish version
|
|
245
|
+
// This can happen if the trik was registered but GET didn't find it
|
|
246
|
+
if (regError instanceof Error && !regError.message.includes('already exists')) {
|
|
247
|
+
throw regError;
|
|
248
|
+
}
|
|
249
|
+
console.log(chalk.dim(` Trik already registered: ${fullName}`));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// Publish version
|
|
253
|
+
await registry.publishVersion(fullName, {
|
|
254
|
+
version,
|
|
255
|
+
tarballUrl,
|
|
256
|
+
sha256,
|
|
257
|
+
manifest: manifest,
|
|
258
|
+
});
|
|
259
|
+
spinner.succeed('Published to TrikHub registry');
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
spinner.fail('Failed to publish to registry');
|
|
263
|
+
console.log(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
264
|
+
rmSync(tarballDir, { recursive: true, force: true });
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
// Cleanup
|
|
268
|
+
rmSync(tarballDir, { recursive: true, force: true });
|
|
269
|
+
// Success message
|
|
270
|
+
console.log();
|
|
271
|
+
console.log(chalk.green.bold(' Published successfully!'));
|
|
272
|
+
console.log();
|
|
273
|
+
console.log(` ${chalk.dim('Install with:')} trik install ${fullName}@${version}`);
|
|
274
|
+
console.log(` ${chalk.dim('View at:')} https://trikhub.com/triks/${encodeURIComponent(fullName)}`);
|
|
275
|
+
console.log();
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
spinner.fail('Publish failed');
|
|
279
|
+
if (error instanceof Error) {
|
|
280
|
+
console.error(chalk.red(error.message));
|
|
281
|
+
}
|
|
282
|
+
process.exit(1);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trik search command
|
|
3
|
+
*
|
|
4
|
+
* Searches the registry for triks.
|
|
5
|
+
*/
|
|
6
|
+
interface SearchOptions {
|
|
7
|
+
json?: boolean;
|
|
8
|
+
limit?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function searchCommand(query: string, options: SearchOptions): Promise<void>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trik search command
|
|
3
|
+
*
|
|
4
|
+
* Searches the registry for triks.
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
import { registry } from '../lib/registry.js';
|
|
9
|
+
import { isTrikInstalled } from '../lib/storage.js';
|
|
10
|
+
export async function searchCommand(query, options) {
|
|
11
|
+
const spinner = ora(`Searching for "${query}"...`).start();
|
|
12
|
+
try {
|
|
13
|
+
const limit = parseInt(options.limit ?? '10', 10);
|
|
14
|
+
const results = await registry.search(query, { perPage: limit });
|
|
15
|
+
spinner.stop();
|
|
16
|
+
if (options.json) {
|
|
17
|
+
console.log(JSON.stringify(results, null, 2));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (results.total === 0) {
|
|
21
|
+
console.log(chalk.yellow(`\nNo triks found for "${query}"\n`));
|
|
22
|
+
console.log(chalk.dim('Try a different search term or browse all triks at https://trikhub.com'));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
console.log(chalk.bold(`\nFound ${results.total} trik${results.total === 1 ? '' : 's'}:\n`));
|
|
26
|
+
for (const trik of results.results) {
|
|
27
|
+
const installed = isTrikInstalled(trik.fullName);
|
|
28
|
+
const installedBadge = installed ? chalk.green(' [installed]') : '';
|
|
29
|
+
const verifiedBadge = trik.verified ? chalk.blue(' ✓') : '';
|
|
30
|
+
console.log(` ${chalk.cyan(trik.fullName)}${verifiedBadge}${installedBadge}`);
|
|
31
|
+
console.log(` ${chalk.dim(trik.description)}`);
|
|
32
|
+
console.log(chalk.dim(` v${trik.latestVersion} · ⬇ ${formatNumber(trik.downloads)} · ⭐ ${trik.stars}`));
|
|
33
|
+
console.log();
|
|
34
|
+
}
|
|
35
|
+
if (results.total > results.results.length) {
|
|
36
|
+
console.log(chalk.dim(`Showing ${results.results.length} of ${results.total} results. Use --limit to see more.`));
|
|
37
|
+
}
|
|
38
|
+
console.log(chalk.dim(`\nInstall with: trik install @scope/name`));
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
spinner.fail('Search failed');
|
|
42
|
+
if (error instanceof Error) {
|
|
43
|
+
console.error(chalk.red(error.message));
|
|
44
|
+
}
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Format a number with K/M suffixes
|
|
50
|
+
*/
|
|
51
|
+
function formatNumber(num) {
|
|
52
|
+
if (num >= 1_000_000) {
|
|
53
|
+
return `${(num / 1_000_000).toFixed(1)}M`;
|
|
54
|
+
}
|
|
55
|
+
if (num >= 1_000) {
|
|
56
|
+
return `${(num / 1_000).toFixed(1)}K`;
|
|
57
|
+
}
|
|
58
|
+
return num.toString();
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trik sync command
|
|
3
|
+
*
|
|
4
|
+
* Discovers trik packages in node_modules and adds them to the config.
|
|
5
|
+
* This enables npm-based trik installation:
|
|
6
|
+
* 1. Add trik to package.json dependencies
|
|
7
|
+
* 2. Run npm install
|
|
8
|
+
* 3. Run trik sync to register the trik
|
|
9
|
+
*/
|
|
10
|
+
interface SyncOptions {
|
|
11
|
+
dryRun?: boolean;
|
|
12
|
+
json?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Sync command implementation
|
|
16
|
+
*/
|
|
17
|
+
export declare function syncCommand(options: SyncOptions): Promise<void>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAmID;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFrE"}
|