fix: honor original working directory when running npx installer and searching for task files
(cherry picked from commit 6a5a597fe39bc75379f54bedc1616bfab283dfa1)
This commit is contained in:
@@ -26,9 +26,12 @@ if (isNpxExecution) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Honor the directory where the user invoked npx from
|
||||||
|
const originalCwd = process.env.INIT_CWD || process.env.PWD || process.cwd();
|
||||||
execSync(`node "${bmadScriptPath}" ${arguments_.join(' ')}`, {
|
execSync(`node "${bmadScriptPath}" ${arguments_.join(' ')}`, {
|
||||||
stdio: 'inherit',
|
stdio: 'inherit',
|
||||||
cwd: path.dirname(__dirname),
|
cwd: originalCwd,
|
||||||
|
env: { ...process.env, BMAD_ORIGINAL_CWD: originalCwd },
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
process.exit(error.status || 1);
|
process.exit(error.status || 1);
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ async function promptInstallation() {
|
|||||||
console.log(chalk.bold.magenta('🚀 Universal AI Agent Framework for Any Domain'));
|
console.log(chalk.bold.magenta('🚀 Universal AI Agent Framework for Any Domain'));
|
||||||
console.log(chalk.bold.blue(`✨ Installer v${version}\n`));
|
console.log(chalk.bold.blue(`✨ Installer v${version}\n`));
|
||||||
|
|
||||||
|
const originalCwd = process.env.INIT_CWD || process.env.PWD || process.cwd();
|
||||||
const answers = {};
|
const answers = {};
|
||||||
|
|
||||||
// Ask for installation directory first
|
// Ask for installation directory first
|
||||||
@@ -216,7 +217,7 @@ async function promptInstallation() {
|
|||||||
type: 'input',
|
type: 'input',
|
||||||
name: 'directory',
|
name: 'directory',
|
||||||
message: 'Enter the full path to your project directory where BMad should be installed:',
|
message: 'Enter the full path to your project directory where BMad should be installed:',
|
||||||
default: path.resolve('.'),
|
default: originalCwd,
|
||||||
validate: (input) => {
|
validate: (input) => {
|
||||||
if (!input.trim()) {
|
if (!input.trim()) {
|
||||||
return 'Please enter a valid project path';
|
return 'Please enter a valid project path';
|
||||||
|
|||||||
@@ -520,15 +520,14 @@ class IdeSetup extends BaseIdeSetup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (await fileManager.pathExists(tasksDir)) {
|
if (await fileManager.pathExists(tasksDir)) {
|
||||||
const glob = require('glob');
|
const taskFiles = await resourceLocator.findFiles('*.md', { cwd: tasksDir });
|
||||||
const taskFiles = glob.sync('*.md', { cwd: tasksDir });
|
|
||||||
allTaskIds.push(...taskFiles.map((file) => path.basename(file, '.md')));
|
allTaskIds.push(...taskFiles.map((file) => path.basename(file, '.md')));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check common tasks
|
// Check common tasks
|
||||||
const commonTasksDir = path.join(installDir, 'common', 'tasks');
|
const commonTasksDir = path.join(installDir, 'common', 'tasks');
|
||||||
if (await fileManager.pathExists(commonTasksDir)) {
|
if (await fileManager.pathExists(commonTasksDir)) {
|
||||||
const commonTaskFiles = glob.sync('*.md', { cwd: commonTasksDir });
|
const commonTaskFiles = await resourceLocator.findFiles('*.md', { cwd: commonTasksDir });
|
||||||
allTaskIds.push(...commonTaskFiles.map((file) => path.basename(file, '.md')));
|
allTaskIds.push(...commonTaskFiles.map((file) => path.basename(file, '.md')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ class Installer {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// Store the original CWD where npx was executed
|
// Store the original CWD where npx was executed
|
||||||
const originalCwd = process.env.INIT_CWD || process.env.PWD || process.cwd();
|
const originalCwd =
|
||||||
|
process.env.BMAD_ORIGINAL_CWD || process.env.INIT_CWD || process.env.PWD || process.cwd();
|
||||||
|
|
||||||
// Resolve installation directory relative to where the user ran the command
|
// Resolve installation directory relative to where the user ran the command
|
||||||
let installDir = path.isAbsolute(config.directory)
|
let installDir = path.isAbsolute(config.directory)
|
||||||
|
|||||||
Reference in New Issue
Block a user