mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
📦 Release qwen-code CLI as a Standalone Bundled Package (#866)
This commit is contained in:
@@ -17,24 +17,74 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { copyFileSync, existsSync, mkdirSync } from 'node:fs';
|
||||
import { copyFileSync, existsSync, mkdirSync, statSync } from 'node:fs';
|
||||
import { dirname, join, basename } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { glob } from 'glob';
|
||||
import fs from 'node:fs';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const root = join(__dirname, '..');
|
||||
const bundleDir = join(root, 'bundle');
|
||||
const distDir = join(root, 'dist');
|
||||
const coreVendorDir = join(root, 'packages', 'core', 'vendor');
|
||||
|
||||
// Create the bundle directory if it doesn't exist
|
||||
if (!existsSync(bundleDir)) {
|
||||
mkdirSync(bundleDir);
|
||||
// Create the dist directory if it doesn't exist
|
||||
if (!existsSync(distDir)) {
|
||||
mkdirSync(distDir);
|
||||
}
|
||||
|
||||
// Find and copy all .sb files from packages to the root of the bundle directory
|
||||
// Find and copy all .sb files from packages to the root of the dist directory
|
||||
const sbFiles = glob.sync('packages/**/*.sb', { cwd: root });
|
||||
for (const file of sbFiles) {
|
||||
copyFileSync(join(root, file), join(bundleDir, basename(file)));
|
||||
copyFileSync(join(root, file), join(distDir, basename(file)));
|
||||
}
|
||||
|
||||
console.log('Assets copied to bundle/');
|
||||
console.log('Copied sandbox profiles to dist/');
|
||||
|
||||
// Copy vendor directory (contains ripgrep binaries)
|
||||
console.log('Copying vendor directory...');
|
||||
if (existsSync(coreVendorDir)) {
|
||||
const destVendorDir = join(distDir, 'vendor');
|
||||
copyRecursiveSync(coreVendorDir, destVendorDir);
|
||||
console.log('Copied vendor directory to dist/');
|
||||
} else {
|
||||
console.warn(`Warning: Vendor directory not found at ${coreVendorDir}`);
|
||||
}
|
||||
|
||||
console.log('\n✅ All bundle assets copied to dist/');
|
||||
|
||||
/**
|
||||
* Recursively copy directory
|
||||
*/
|
||||
function copyRecursiveSync(src, dest) {
|
||||
if (!existsSync(src)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const stats = statSync(src);
|
||||
|
||||
if (stats.isDirectory()) {
|
||||
if (!existsSync(dest)) {
|
||||
mkdirSync(dest, { recursive: true });
|
||||
}
|
||||
|
||||
const entries = fs.readdirSync(src);
|
||||
for (const entry of entries) {
|
||||
// Skip .DS_Store files
|
||||
if (entry === '.DS_Store') {
|
||||
continue;
|
||||
}
|
||||
|
||||
const srcPath = join(src, entry);
|
||||
const destPath = join(dest, entry);
|
||||
copyRecursiveSync(srcPath, destPath);
|
||||
}
|
||||
} else {
|
||||
copyFileSync(src, dest);
|
||||
// Preserve execute permissions for binaries
|
||||
const srcStats = statSync(src);
|
||||
if (srcStats.mode & 0o111) {
|
||||
fs.chmodSync(dest, srcStats.mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user