@linyjs/cli 0.0.3 → 0.0.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,iBA6FpD"}
|
package/dist/commands/init.js
CHANGED
|
@@ -22,15 +22,45 @@ export async function initPlugin(options) {
|
|
|
22
22
|
}
|
|
23
23
|
const spinner1 = ora('Downloading template from npm...').start();
|
|
24
24
|
try {
|
|
25
|
-
//
|
|
26
|
-
|
|
25
|
+
// Method 1: Use npx to download and extract template
|
|
26
|
+
// This downloads the package and extracts the default-template directory
|
|
27
|
+
const tempDir = path.join(process.cwd(), '.ling-init-temp');
|
|
28
|
+
// Clean up any existing temp directory
|
|
29
|
+
if (fs.existsSync(tempDir)) {
|
|
30
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
31
|
+
}
|
|
32
|
+
// Download the package using npm pack
|
|
33
|
+
const packageName = '@linyjs/plugin-templates';
|
|
34
|
+
const packCommand = `npm pack ${packageName}@latest --pack-destination="${tempDir}"`;
|
|
27
35
|
if (options.verbose) {
|
|
28
|
-
console.log(chalk.gray('Running:'),
|
|
36
|
+
console.log(chalk.gray('Running:'), packCommand);
|
|
29
37
|
}
|
|
30
|
-
|
|
38
|
+
fs.mkdirSync(tempDir, { recursive: true });
|
|
39
|
+
execSync(packCommand, {
|
|
31
40
|
stdio: options.verbose ? 'inherit' : 'pipe',
|
|
32
41
|
cwd: process.cwd()
|
|
33
42
|
});
|
|
43
|
+
// Find the downloaded .tgz file
|
|
44
|
+
const tgzFiles = fs.readdirSync(tempDir).filter(f => f.endsWith('.tgz'));
|
|
45
|
+
if (tgzFiles.length === 0) {
|
|
46
|
+
throw new Error('Failed to download template package');
|
|
47
|
+
}
|
|
48
|
+
const tgzFile = path.join(tempDir, tgzFiles[0]);
|
|
49
|
+
// Extract the template
|
|
50
|
+
const extractCommand = `tar -xzf "${tgzFile}" -C "${tempDir}"`;
|
|
51
|
+
execSync(extractCommand, {
|
|
52
|
+
stdio: options.verbose ? 'inherit' : 'pipe'
|
|
53
|
+
});
|
|
54
|
+
// The extracted content is in tempDir/package/
|
|
55
|
+
const extractedPackageDir = path.join(tempDir, 'package');
|
|
56
|
+
const templateDir = path.join(extractedPackageDir, 'default-template');
|
|
57
|
+
if (!fs.existsSync(templateDir)) {
|
|
58
|
+
throw new Error('Template directory not found in package');
|
|
59
|
+
}
|
|
60
|
+
// Copy template to target directory
|
|
61
|
+
copyDirectory(templateDir, absolutePath);
|
|
62
|
+
// Clean up temp directory
|
|
63
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
34
64
|
spinner1.succeed('Template downloaded');
|
|
35
65
|
// Show next steps
|
|
36
66
|
console.log('\n' + chalk.green('✓ Project created successfully!\n'));
|
|
@@ -57,4 +87,25 @@ export async function initPlugin(options) {
|
|
|
57
87
|
process.exit(1);
|
|
58
88
|
}
|
|
59
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Recursively copy directory contents
|
|
92
|
+
*/
|
|
93
|
+
function copyDirectory(src, dest) {
|
|
94
|
+
// Create destination directory
|
|
95
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
96
|
+
// Read source directory
|
|
97
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
98
|
+
for (const entry of entries) {
|
|
99
|
+
const srcPath = path.join(src, entry.name);
|
|
100
|
+
const destPath = path.join(dest, entry.name);
|
|
101
|
+
if (entry.isDirectory()) {
|
|
102
|
+
// Recursively copy subdirectory
|
|
103
|
+
copyDirectory(srcPath, destPath);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Copy file
|
|
107
|
+
fs.copyFileSync(srcPath, destPath);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
60
111
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAoB;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAE5D,oCAAoC;IACpC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,SAAS,kBAAkB,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,kCAAkC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEjE,IAAI,CAAC;QACH,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands/init.ts
CHANGED
|
@@ -33,18 +33,57 @@ export async function initPlugin(options: InitOptions) {
|
|
|
33
33
|
const spinner1 = ora('Downloading template from npm...').start();
|
|
34
34
|
|
|
35
35
|
try {
|
|
36
|
-
//
|
|
37
|
-
|
|
36
|
+
// Method 1: Use npx to download and extract template
|
|
37
|
+
// This downloads the package and extracts the default-template directory
|
|
38
|
+
const tempDir = path.join(process.cwd(), '.ling-init-temp');
|
|
39
|
+
|
|
40
|
+
// Clean up any existing temp directory
|
|
41
|
+
if (fs.existsSync(tempDir)) {
|
|
42
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Download the package using npm pack
|
|
46
|
+
const packageName = '@linyjs/plugin-templates';
|
|
47
|
+
const packCommand = `npm pack ${packageName}@latest --pack-destination="${tempDir}"`;
|
|
38
48
|
|
|
39
49
|
if (options.verbose) {
|
|
40
|
-
console.log(chalk.gray('Running:'),
|
|
50
|
+
console.log(chalk.gray('Running:'), packCommand);
|
|
41
51
|
}
|
|
42
52
|
|
|
43
|
-
|
|
53
|
+
fs.mkdirSync(tempDir, { recursive: true });
|
|
54
|
+
execSync(packCommand, {
|
|
44
55
|
stdio: options.verbose ? 'inherit' : 'pipe',
|
|
45
56
|
cwd: process.cwd()
|
|
46
57
|
});
|
|
47
58
|
|
|
59
|
+
// Find the downloaded .tgz file
|
|
60
|
+
const tgzFiles = fs.readdirSync(tempDir).filter(f => f.endsWith('.tgz'));
|
|
61
|
+
if (tgzFiles.length === 0) {
|
|
62
|
+
throw new Error('Failed to download template package');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const tgzFile = path.join(tempDir, tgzFiles[0]);
|
|
66
|
+
|
|
67
|
+
// Extract the template
|
|
68
|
+
const extractCommand = `tar -xzf "${tgzFile}" -C "${tempDir}"`;
|
|
69
|
+
execSync(extractCommand, {
|
|
70
|
+
stdio: options.verbose ? 'inherit' : 'pipe'
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// The extracted content is in tempDir/package/
|
|
74
|
+
const extractedPackageDir = path.join(tempDir, 'package');
|
|
75
|
+
const templateDir = path.join(extractedPackageDir, 'default-template');
|
|
76
|
+
|
|
77
|
+
if (!fs.existsSync(templateDir)) {
|
|
78
|
+
throw new Error('Template directory not found in package');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Copy template to target directory
|
|
82
|
+
copyDirectory(templateDir, absolutePath);
|
|
83
|
+
|
|
84
|
+
// Clean up temp directory
|
|
85
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
86
|
+
|
|
48
87
|
spinner1.succeed('Template downloaded');
|
|
49
88
|
|
|
50
89
|
// Show next steps
|
|
@@ -73,3 +112,27 @@ export async function initPlugin(options: InitOptions) {
|
|
|
73
112
|
process.exit(1);
|
|
74
113
|
}
|
|
75
114
|
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Recursively copy directory contents
|
|
118
|
+
*/
|
|
119
|
+
function copyDirectory(src: string, dest: string): void {
|
|
120
|
+
// Create destination directory
|
|
121
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
122
|
+
|
|
123
|
+
// Read source directory
|
|
124
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
125
|
+
|
|
126
|
+
for (const entry of entries) {
|
|
127
|
+
const srcPath = path.join(src, entry.name);
|
|
128
|
+
const destPath = path.join(dest, entry.name);
|
|
129
|
+
|
|
130
|
+
if (entry.isDirectory()) {
|
|
131
|
+
// Recursively copy subdirectory
|
|
132
|
+
copyDirectory(srcPath, destPath);
|
|
133
|
+
} else {
|
|
134
|
+
// Copy file
|
|
135
|
+
fs.copyFileSync(srcPath, destPath);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|