Skip to content

Commit

Permalink
feat: setup script
Browse files Browse the repository at this point in the history
  • Loading branch information
helloanoop committed Dec 17, 2024
1 parent db90d31 commit f871bc0
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 1 deletion.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"ts-jest": "^29.0.5"
},
"scripts": {
"setup": "node ./scripts/setup.js",
"dev": "concurrently --kill-others \"npm run dev:web\" \"npm run dev:electron\"",
"dev:web": "npm run dev --workspace=packages/bruno-app",
"build:web": "npm run build --workspace=packages/bruno-app",
Expand All @@ -51,6 +52,6 @@
"prepare": "husky install"
},
"overrides": {
"rollup":"3.29.5"
"rollup": "3.29.5"
}
}
95 changes: 95 additions & 0 deletions scripts/setup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');

const icons = {
clean: '🧹',
delete: '🗑️',
install: '📦',
build: '🔨',
success: '✅',
error: '❌',
working: '⚡'
};

const execCommand = (command, description) => {
try {
console.log(`\n${icons.working} ${description}...`);
execSync(command, { stdio: 'inherit' });
console.log(`${icons.success} ${description} completed`);
} catch (error) {
console.error(`${icons.error} ${description} failed`);
throw error;
}
};

const glob = function (startPath, pattern) {
let results = [];

// Ensure start path exists
if (!fs.existsSync(startPath)) {
return results;
}

const files = fs.readdirSync(startPath);
for (const file of files) {
const filename = path.join(startPath, file);
const stat = fs.lstatSync(filename);

// If directory, recurse into it
if (stat.isDirectory()) {
// Skip node_modules recursion to avoid unnecessary deep scanning
if (file === 'node_modules') {
if (file === pattern) {
results.push(filename);
}
continue;
}
results = results.concat(glob(filename, pattern));
}

// If file matches pattern, add to results
if (file === pattern) {
results.push(filename);
}
}

return results;
};

async function setup() {
try {
// Clean up node_modules (if exists)
console.log(`\n${icons.clean} Cleaning up node_modules directories...`);
const nodeModulesPaths = glob('.', 'node_modules');
for (const dir of nodeModulesPaths) {
console.log(`${icons.delete} Removing ${dir}`);
fs.rmSync(dir, { recursive: true, force: true });
}

// Install dependencies
execCommand('npm i --legacy-peer-deps', 'Installing dependencies');

// Build packages
execCommand('npm run build:graphql-docs', 'Building graphql-docs');
execCommand('npm run build:bruno-query', 'Building bruno-query');
execCommand('npm run build:bruno-common', 'Building bruno-common');

// Bundle JS sandbox libraries
execCommand(
'npm run sandbox:bundle-libraries --workspace=packages/bruno-js',
'Bundling JS sandbox libraries'
);

console.log(`\n${icons.success} Setup completed successfully!\n`);
} catch (error) {
console.error(`\n${icons.error} Setup failed:`);
console.error(error);
process.exit(1);
}
}

setup().catch(error => {
console.error(error);
process.exit(1);
});

0 comments on commit f871bc0

Please sign in to comment.