@onexapis/cli 1.1.5 → 1.1.7
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/cli.js +60 -55
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +60 -55
- package/dist/cli.mjs.map +1 -1
- package/dist/index.js +18 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -16
- package/dist/index.mjs.map +1 -1
- package/dist/preview/preview-app.tsx +8 -1
- package/package.json +10 -11
- package/templates/default/esbuild.config.js +3 -3
package/dist/cli.mjs
CHANGED
|
@@ -12,6 +12,7 @@ import fs from 'fs-extra';
|
|
|
12
12
|
import ejs from 'ejs';
|
|
13
13
|
import { execSync, spawn } from 'child_process';
|
|
14
14
|
import { Command } from 'commander';
|
|
15
|
+
import { createRequire } from 'module';
|
|
15
16
|
import fs2 from 'fs';
|
|
16
17
|
import inquirer from 'inquirer';
|
|
17
18
|
import archiver from 'archiver';
|
|
@@ -327,7 +328,7 @@ async function extractDataRequirements(themePath) {
|
|
|
327
328
|
return requirements;
|
|
328
329
|
}
|
|
329
330
|
async function generateManifest2(themeName, themePath, outputDir) {
|
|
330
|
-
let
|
|
331
|
+
let version2 = "1.0.0";
|
|
331
332
|
let themeId = themeName;
|
|
332
333
|
try {
|
|
333
334
|
const pkgContent = await fs7.readFile(
|
|
@@ -335,7 +336,7 @@ async function generateManifest2(themeName, themePath, outputDir) {
|
|
|
335
336
|
"utf-8"
|
|
336
337
|
);
|
|
337
338
|
const pkg = JSON.parse(pkgContent);
|
|
338
|
-
|
|
339
|
+
version2 = pkg.version || version2;
|
|
339
340
|
if (pkg.name) {
|
|
340
341
|
themeId = pkg.name.replace(/^@onex-themes\//, "");
|
|
341
342
|
}
|
|
@@ -359,7 +360,7 @@ async function generateManifest2(themeName, themePath, outputDir) {
|
|
|
359
360
|
const entryFile = jsFiles.find((f) => f.includes("bundle-entry")) || "bundle-entry.js";
|
|
360
361
|
const manifest = {
|
|
361
362
|
themeId,
|
|
362
|
-
version,
|
|
363
|
+
version: version2,
|
|
363
364
|
name: themeId.charAt(0).toUpperCase() + themeId.slice(1),
|
|
364
365
|
compiledAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
365
366
|
format: "esm",
|
|
@@ -1249,7 +1250,7 @@ Add your theme-specific blocks here.
|
|
|
1249
1250
|
}
|
|
1250
1251
|
}
|
|
1251
1252
|
function generateManifest(data) {
|
|
1252
|
-
return `import type { ThemeExport } from "@
|
|
1253
|
+
return `import type { ThemeExport } from "@onexapis/core";
|
|
1253
1254
|
|
|
1254
1255
|
/**
|
|
1255
1256
|
* ${data.displayName} Theme Manifest
|
|
@@ -1263,10 +1264,10 @@ export const manifest: ThemeExport = {
|
|
|
1263
1264
|
author: "${data.author}",
|
|
1264
1265
|
|
|
1265
1266
|
// Theme configuration
|
|
1266
|
-
config: () => import("./
|
|
1267
|
+
config: () => import("./config").then((m) => m.themeConfig),
|
|
1267
1268
|
|
|
1268
1269
|
// Theme layout (header/footer sections)
|
|
1269
|
-
layout: () => import("./
|
|
1270
|
+
layout: () => import("./layout").then((m) => m.themeLayout),
|
|
1270
1271
|
|
|
1271
1272
|
// Available sections in this theme
|
|
1272
1273
|
sections: {
|
|
@@ -1297,7 +1298,7 @@ export default manifest;
|
|
|
1297
1298
|
`;
|
|
1298
1299
|
}
|
|
1299
1300
|
function generateThemeConfig(data) {
|
|
1300
|
-
return `import type { ThemeConfig } from "@
|
|
1301
|
+
return `import type { ThemeConfig } from "@onexapis/core";
|
|
1301
1302
|
|
|
1302
1303
|
/**
|
|
1303
1304
|
* ${data.displayName} Theme Configuration
|
|
@@ -1398,7 +1399,7 @@ export const themeConfig: ThemeConfig = {
|
|
|
1398
1399
|
`;
|
|
1399
1400
|
}
|
|
1400
1401
|
function generateThemeLayout(data) {
|
|
1401
|
-
return `import type { ThemeLayoutConfig } from "@
|
|
1402
|
+
return `import type { ThemeLayoutConfig } from "@onexapis/core";
|
|
1402
1403
|
|
|
1403
1404
|
/**
|
|
1404
1405
|
* ${data.themeName} Theme Layout
|
|
@@ -1432,13 +1433,13 @@ function generateThemeIndex(data) {
|
|
|
1432
1433
|
* ${data.themeNamePascal} Theme
|
|
1433
1434
|
*/
|
|
1434
1435
|
|
|
1435
|
-
export { manifest as ${data.
|
|
1436
|
-
export { themeConfig as ${data.
|
|
1437
|
-
export { themeLayout as ${data.
|
|
1436
|
+
export { manifest as ${data.themeNamePascal}Manifest } from "./manifest";
|
|
1437
|
+
export { themeConfig as ${data.themeNamePascal}Config } from "./config";
|
|
1438
|
+
export { themeLayout as ${data.themeNamePascal}Layout } from "./layout";
|
|
1438
1439
|
`;
|
|
1439
1440
|
}
|
|
1440
1441
|
function generateHomePage(data) {
|
|
1441
|
-
return `import type { PageConfig } from "@
|
|
1442
|
+
return `import type { PageConfig } from "@onexapis/core";
|
|
1442
1443
|
|
|
1443
1444
|
/**
|
|
1444
1445
|
* Home Page Configuration
|
|
@@ -1589,7 +1590,7 @@ async function createSectionCommand(name, options) {
|
|
|
1589
1590
|
}
|
|
1590
1591
|
}
|
|
1591
1592
|
function generateSectionSchema(data) {
|
|
1592
|
-
return `import type { SectionSchema } from "@
|
|
1593
|
+
return `import type { SectionSchema } from "@onexapis/core";
|
|
1593
1594
|
|
|
1594
1595
|
/**
|
|
1595
1596
|
* ${data.displayName} Section Schema
|
|
@@ -1651,7 +1652,7 @@ export const ${data.sectionName}Schema: SectionSchema = {
|
|
|
1651
1652
|
}
|
|
1652
1653
|
function generateSectionTemplate(data) {
|
|
1653
1654
|
return `import React from "react";
|
|
1654
|
-
import type { SectionComponentProps } from "@
|
|
1655
|
+
import type { SectionComponentProps } from "@onexapis/core";
|
|
1655
1656
|
|
|
1656
1657
|
/**
|
|
1657
1658
|
* ${data.displayName} - Default Template
|
|
@@ -1835,7 +1836,7 @@ async function createBlockCommand(name, options) {
|
|
|
1835
1836
|
}
|
|
1836
1837
|
}
|
|
1837
1838
|
function generateBlockSchema(data) {
|
|
1838
|
-
return `import type { BlockDefinition } from "@
|
|
1839
|
+
return `import type { BlockDefinition } from "@onexapis/core";
|
|
1839
1840
|
|
|
1840
1841
|
/**
|
|
1841
1842
|
* ${data.displayName} Block Schema
|
|
@@ -1884,7 +1885,7 @@ export const ${data.blockName}Definition: BlockDefinition = {
|
|
|
1884
1885
|
}
|
|
1885
1886
|
function generateBlockComponent(data) {
|
|
1886
1887
|
return `import React from "react";
|
|
1887
|
-
import type { BlockComponentProps } from "@
|
|
1888
|
+
import type { BlockComponentProps } from "@onexapis/core";
|
|
1888
1889
|
|
|
1889
1890
|
/**
|
|
1890
1891
|
* ${data.displayName} Block Component
|
|
@@ -2037,7 +2038,7 @@ async function createComponentCommand(name, options) {
|
|
|
2037
2038
|
}
|
|
2038
2039
|
}
|
|
2039
2040
|
function generateComponentSchema(data) {
|
|
2040
|
-
return `import type { ComponentDefinition } from "@
|
|
2041
|
+
return `import type { ComponentDefinition } from "@onexapis/core";
|
|
2041
2042
|
|
|
2042
2043
|
/**
|
|
2043
2044
|
* ${data.displayName} Component Schema
|
|
@@ -2101,7 +2102,7 @@ export const ${data.componentName}Definition: ComponentDefinition = {
|
|
|
2101
2102
|
}
|
|
2102
2103
|
function generateComponent(data) {
|
|
2103
2104
|
return `import React from "react";
|
|
2104
|
-
import type { ComponentProps } from "@
|
|
2105
|
+
import type { ComponentProps } from "@onexapis/core";
|
|
2105
2106
|
|
|
2106
2107
|
/**
|
|
2107
2108
|
* ${data.displayName} Component
|
|
@@ -2275,9 +2276,9 @@ async function listThemesInfo() {
|
|
|
2275
2276
|
const versionMatch = manifestContent.match(/version:\s*["'](.+)["']/);
|
|
2276
2277
|
const descMatch = manifestContent.match(/description:\s*["'](.+)["']/);
|
|
2277
2278
|
const displayName = nameMatch ? nameMatch[1] : theme;
|
|
2278
|
-
const
|
|
2279
|
+
const version2 = versionMatch ? versionMatch[1] : "unknown";
|
|
2279
2280
|
const description = descMatch ? descMatch[1] : "";
|
|
2280
|
-
logger.log(chalk4.cyan(` ${displayName}`) + chalk4.gray(` (v${
|
|
2281
|
+
logger.log(chalk4.cyan(` ${displayName}`) + chalk4.gray(` (v${version2})`));
|
|
2281
2282
|
if (description) {
|
|
2282
2283
|
logger.log(chalk4.gray(` ${description}`));
|
|
2283
2284
|
}
|
|
@@ -2625,14 +2626,14 @@ async function packageCommand(options) {
|
|
|
2625
2626
|
}
|
|
2626
2627
|
}
|
|
2627
2628
|
const packageJsonPath = path8.join(themePath, "package.json");
|
|
2628
|
-
let
|
|
2629
|
+
let version2 = "1.0.0";
|
|
2629
2630
|
if (fs.existsSync(packageJsonPath)) {
|
|
2630
2631
|
const packageJson = await fs.readJson(packageJsonPath);
|
|
2631
|
-
|
|
2632
|
+
version2 = packageJson.version || "1.0.0";
|
|
2632
2633
|
}
|
|
2633
2634
|
logger.newLine();
|
|
2634
2635
|
logger.info(`Theme: ${themeName}`);
|
|
2635
|
-
logger.info(`Version: ${
|
|
2636
|
+
logger.info(`Version: ${version2}`);
|
|
2636
2637
|
logger.newLine();
|
|
2637
2638
|
const compiledThemePath = path8.join(
|
|
2638
2639
|
process.cwd(),
|
|
@@ -2667,7 +2668,7 @@ async function packageCommand(options) {
|
|
|
2667
2668
|
}
|
|
2668
2669
|
logger.newLine();
|
|
2669
2670
|
logger.section("Step 2: Create Package");
|
|
2670
|
-
const packageName = options.name || `${themeName}-${
|
|
2671
|
+
const packageName = options.name || `${themeName}-${version2}`;
|
|
2671
2672
|
const outputDir = options.output || path8.join(process.cwd(), "dist");
|
|
2672
2673
|
const outputPath = path8.join(outputDir, `${packageName}.zip`);
|
|
2673
2674
|
await fs.ensureDir(outputDir);
|
|
@@ -2882,7 +2883,7 @@ function getBucketName(env) {
|
|
|
2882
2883
|
const environment = env || process.env.ENVIRONMENT || "staging";
|
|
2883
2884
|
return environment === "production" ? "onex-themes-prod" : "onex-themes-staging";
|
|
2884
2885
|
}
|
|
2885
|
-
async function findCompiledThemeDir(themeId,
|
|
2886
|
+
async function findCompiledThemeDir(themeId, version2) {
|
|
2886
2887
|
const searchPaths = [path8.resolve(process.cwd(), "dist")];
|
|
2887
2888
|
for (const dir of searchPaths) {
|
|
2888
2889
|
if (await fs.pathExists(dir)) {
|
|
@@ -2952,9 +2953,9 @@ async function findSourceDir(themeId, explicitDir) {
|
|
|
2952
2953
|
}
|
|
2953
2954
|
return null;
|
|
2954
2955
|
}
|
|
2955
|
-
async function updateLatestPointer(s3Client, bucket, themeId,
|
|
2956
|
+
async function updateLatestPointer(s3Client, bucket, themeId, version2) {
|
|
2956
2957
|
const latestData = {
|
|
2957
|
-
version,
|
|
2958
|
+
version: version2,
|
|
2958
2959
|
uploadedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2959
2960
|
};
|
|
2960
2961
|
await s3Client.send(
|
|
@@ -2971,23 +2972,23 @@ async function uploadCommand(options) {
|
|
|
2971
2972
|
const spinner = ora("Preparing theme upload...").start();
|
|
2972
2973
|
try {
|
|
2973
2974
|
let themeId;
|
|
2974
|
-
let
|
|
2975
|
+
let version2;
|
|
2975
2976
|
if (options.theme) {
|
|
2976
2977
|
themeId = options.theme;
|
|
2977
|
-
|
|
2978
|
+
version2 = options.version || "1.0.0";
|
|
2978
2979
|
} else {
|
|
2979
2980
|
const manifest = await readManifest();
|
|
2980
2981
|
themeId = manifest.themeId;
|
|
2981
|
-
|
|
2982
|
+
version2 = options.version || manifest.version || "1.0.0";
|
|
2982
2983
|
}
|
|
2983
|
-
spinner.text = `Found theme: ${themeId}@${
|
|
2984
|
+
spinner.text = `Found theme: ${themeId}@${version2}`;
|
|
2984
2985
|
const bucket = options.bucket || getBucketName(options.environment);
|
|
2985
2986
|
const s3Client = getS3Client();
|
|
2986
|
-
const compiledDir = await findCompiledThemeDir(themeId,
|
|
2987
|
+
const compiledDir = await findCompiledThemeDir(themeId, version2);
|
|
2987
2988
|
if (!compiledDir) {
|
|
2988
2989
|
spinner.fail(
|
|
2989
2990
|
chalk4.red(
|
|
2990
|
-
`Compiled theme not found for ${themeId}@${
|
|
2991
|
+
`Compiled theme not found for ${themeId}@${version2}. Run 'onex build' first.`
|
|
2991
2992
|
)
|
|
2992
2993
|
);
|
|
2993
2994
|
logger.info(chalk4.gray(`Expected location:
|
|
@@ -2997,7 +2998,7 @@ async function uploadCommand(options) {
|
|
|
2997
2998
|
spinner.succeed(`Found compiled theme at: ${compiledDir}`);
|
|
2998
2999
|
spinner.start("Creating bundle.zip...");
|
|
2999
3000
|
const tmpDir = os.tmpdir();
|
|
3000
|
-
const bundleZipPath = path8.join(tmpDir, `${themeId}-${
|
|
3001
|
+
const bundleZipPath = path8.join(tmpDir, `${themeId}-${version2}-bundle.zip`);
|
|
3001
3002
|
await createZipFromDir(compiledDir, bundleZipPath);
|
|
3002
3003
|
const bundleZipBuffer = await fs.readFile(bundleZipPath);
|
|
3003
3004
|
const bundleSizeMB = (bundleZipBuffer.length / 1024 / 1024).toFixed(2);
|
|
@@ -3008,7 +3009,7 @@ async function uploadCommand(options) {
|
|
|
3008
3009
|
console.log(chalk4.gray(` bundle.zip: ${bundleSizeMB} MB`));
|
|
3009
3010
|
console.log(
|
|
3010
3011
|
chalk4.cyan(
|
|
3011
|
-
` S3 path: s3://${bucket}/themes/${themeId}/${
|
|
3012
|
+
` S3 path: s3://${bucket}/themes/${themeId}/${version2}/bundle.zip`
|
|
3012
3013
|
)
|
|
3013
3014
|
);
|
|
3014
3015
|
if (!options.skipSource) {
|
|
@@ -3017,7 +3018,7 @@ async function uploadCommand(options) {
|
|
|
3017
3018
|
console.log(chalk4.gray(` source dir: ${sourceDir}`));
|
|
3018
3019
|
console.log(
|
|
3019
3020
|
chalk4.cyan(
|
|
3020
|
-
` S3 path: s3://${bucket}/themes/${themeId}/${
|
|
3021
|
+
` S3 path: s3://${bucket}/themes/${themeId}/${version2}/source.zip`
|
|
3021
3022
|
)
|
|
3022
3023
|
);
|
|
3023
3024
|
} else {
|
|
@@ -3031,7 +3032,7 @@ async function uploadCommand(options) {
|
|
|
3031
3032
|
return;
|
|
3032
3033
|
}
|
|
3033
3034
|
spinner.start("Uploading bundle.zip to S3...");
|
|
3034
|
-
const bundleS3Key = `themes/${themeId}/${
|
|
3035
|
+
const bundleS3Key = `themes/${themeId}/${version2}/bundle.zip`;
|
|
3035
3036
|
await s3Client.send(
|
|
3036
3037
|
new PutObjectCommand({
|
|
3037
3038
|
Bucket: bucket,
|
|
@@ -3053,7 +3054,7 @@ async function uploadCommand(options) {
|
|
|
3053
3054
|
spinner.start("Creating source.zip...");
|
|
3054
3055
|
const sourceZipPath = path8.join(
|
|
3055
3056
|
tmpDir,
|
|
3056
|
-
`${themeId}-${
|
|
3057
|
+
`${themeId}-${version2}-source.zip`
|
|
3057
3058
|
);
|
|
3058
3059
|
await createZipFromDir(sourceDir, sourceZipPath, [
|
|
3059
3060
|
"node_modules/**",
|
|
@@ -3067,7 +3068,7 @@ async function uploadCommand(options) {
|
|
|
3067
3068
|
const sourceSizeMB = (sourceZipBuffer.length / 1024 / 1024).toFixed(2);
|
|
3068
3069
|
spinner.succeed(`Created source.zip (${sourceSizeMB} MB)`);
|
|
3069
3070
|
spinner.start("Uploading source.zip to S3...");
|
|
3070
|
-
const sourceS3Key = `themes/${themeId}/${
|
|
3071
|
+
const sourceS3Key = `themes/${themeId}/${version2}/source.zip`;
|
|
3071
3072
|
await s3Client.send(
|
|
3072
3073
|
new PutObjectCommand({
|
|
3073
3074
|
Bucket: bucket,
|
|
@@ -3088,20 +3089,20 @@ async function uploadCommand(options) {
|
|
|
3088
3089
|
}
|
|
3089
3090
|
}
|
|
3090
3091
|
spinner.start("Updating latest.json pointer...");
|
|
3091
|
-
await updateLatestPointer(s3Client, bucket, themeId,
|
|
3092
|
+
await updateLatestPointer(s3Client, bucket, themeId, version2);
|
|
3092
3093
|
spinner.succeed("Updated latest.json pointer");
|
|
3093
3094
|
console.log();
|
|
3094
3095
|
logger.success(chalk4.green.bold("Theme uploaded successfully!"));
|
|
3095
3096
|
console.log();
|
|
3096
3097
|
console.log(
|
|
3097
|
-
chalk4.cyan(" Theme: ") + chalk4.white(`${themeId}@${
|
|
3098
|
+
chalk4.cyan(" Theme: ") + chalk4.white(`${themeId}@${version2}`)
|
|
3098
3099
|
);
|
|
3099
3100
|
console.log(chalk4.cyan(" Bucket: ") + chalk4.white(bucket));
|
|
3100
3101
|
console.log(
|
|
3101
3102
|
chalk4.cyan(" Files: ") + chalk4.white(`bundle.zip${sourceUploaded ? " + source.zip" : ""}`)
|
|
3102
3103
|
);
|
|
3103
3104
|
console.log(
|
|
3104
|
-
chalk4.cyan(" Path: ") + chalk4.gray(`s3://${bucket}/themes/${themeId}/${
|
|
3105
|
+
chalk4.cyan(" Path: ") + chalk4.gray(`s3://${bucket}/themes/${themeId}/${version2}/`)
|
|
3105
3106
|
);
|
|
3106
3107
|
console.log();
|
|
3107
3108
|
} catch (error) {
|
|
@@ -3243,7 +3244,7 @@ async function downloadCommand(options) {
|
|
|
3243
3244
|
const spinner = ora("Initializing download...").start();
|
|
3244
3245
|
try {
|
|
3245
3246
|
const themeId = options.themeId || process.env.NEXT_PUBLIC_THEME_ID || process.env.THEME_ID;
|
|
3246
|
-
const
|
|
3247
|
+
const version2 = options.version || process.env.THEME_VERSION || "latest";
|
|
3247
3248
|
const bucket = options.bucket || getBucketName2(options.environment);
|
|
3248
3249
|
const outputDir = options.output || "./active-theme";
|
|
3249
3250
|
if (!themeId) {
|
|
@@ -3254,10 +3255,10 @@ async function downloadCommand(options) {
|
|
|
3254
3255
|
);
|
|
3255
3256
|
process.exit(1);
|
|
3256
3257
|
}
|
|
3257
|
-
spinner.text = `Downloading ${themeId}@${
|
|
3258
|
+
spinner.text = `Downloading ${themeId}@${version2} from ${bucket}...`;
|
|
3258
3259
|
const s3Client = getS3Client2();
|
|
3259
|
-
let resolvedVersion =
|
|
3260
|
-
if (
|
|
3260
|
+
let resolvedVersion = version2;
|
|
3261
|
+
if (version2 === "latest") {
|
|
3261
3262
|
spinner.text = "Resolving latest version...";
|
|
3262
3263
|
resolvedVersion = await resolveLatestVersion(s3Client, bucket, themeId);
|
|
3263
3264
|
spinner.succeed(
|
|
@@ -3497,14 +3498,14 @@ async function cloneCommand(themeName, options) {
|
|
|
3497
3498
|
);
|
|
3498
3499
|
process.exit(1);
|
|
3499
3500
|
}
|
|
3500
|
-
let
|
|
3501
|
-
if (
|
|
3501
|
+
let version2 = options.version || "latest";
|
|
3502
|
+
if (version2 === "latest") {
|
|
3502
3503
|
spinner.text = "Resolving latest version...";
|
|
3503
|
-
|
|
3504
|
-
spinner.succeed(`Resolved latest version: ${chalk4.cyan(
|
|
3504
|
+
version2 = await resolveLatestVersion2(s3Client, bucket, themeName);
|
|
3505
|
+
spinner.succeed(`Resolved latest version: ${chalk4.cyan(version2)}`);
|
|
3505
3506
|
}
|
|
3506
|
-
spinner.start(`Downloading source.zip for ${themeName}@${
|
|
3507
|
-
const s3Key = `themes/${themeName}/${
|
|
3507
|
+
spinner.start(`Downloading source.zip for ${themeName}@${version2}...`);
|
|
3508
|
+
const s3Key = `themes/${themeName}/${version2}/source.zip`;
|
|
3508
3509
|
let zipBuffer;
|
|
3509
3510
|
try {
|
|
3510
3511
|
const response = await s3Client.send(
|
|
@@ -3576,7 +3577,7 @@ async function cloneCommand(themeName, options) {
|
|
|
3576
3577
|
logger.success(chalk4.green.bold("Theme cloned successfully!"));
|
|
3577
3578
|
console.log();
|
|
3578
3579
|
console.log(
|
|
3579
|
-
chalk4.cyan(" Source: ") + chalk4.gray(`${themeName}@${
|
|
3580
|
+
chalk4.cyan(" Source: ") + chalk4.gray(`${themeName}@${version2}`)
|
|
3580
3581
|
);
|
|
3581
3582
|
console.log(chalk4.cyan(" Theme: ") + chalk4.white(newName));
|
|
3582
3583
|
console.log(chalk4.cyan(" Location: ") + chalk4.white(outputDir));
|
|
@@ -3584,7 +3585,9 @@ async function cloneCommand(themeName, options) {
|
|
|
3584
3585
|
console.log();
|
|
3585
3586
|
console.log(chalk4.cyan("Next steps:"));
|
|
3586
3587
|
console.log(chalk4.gray(` cd ${path8.relative(process.cwd(), outputDir)}`));
|
|
3587
|
-
console.log(
|
|
3588
|
+
console.log(
|
|
3589
|
+
chalk4.gray(" cp .env.example .env # then add your Company ID")
|
|
3590
|
+
);
|
|
3588
3591
|
if (options.install === false) {
|
|
3589
3592
|
console.log(chalk4.gray(" pnpm install"));
|
|
3590
3593
|
}
|
|
@@ -3849,8 +3852,10 @@ dotenv.config({
|
|
|
3849
3852
|
path: path8.join(os.homedir(), ".onex", ".env"),
|
|
3850
3853
|
quiet: true
|
|
3851
3854
|
});
|
|
3855
|
+
var require2 = createRequire(import.meta.url);
|
|
3856
|
+
var { version } = require2("../package.json");
|
|
3852
3857
|
var program = new Command();
|
|
3853
|
-
program.name("onex").description("CLI tool for OneX theme development").version(
|
|
3858
|
+
program.name("onex").description("CLI tool for OneX theme development").version(version);
|
|
3854
3859
|
program.command("init").description("Create a new OneX theme project").argument("[project-name]", "Name of the project").option(
|
|
3855
3860
|
"-t, --template <template>",
|
|
3856
3861
|
"Template to use (default, minimal)",
|