diff --git a/packages/safe-chain/src/shell-integration/helpers.js b/packages/safe-chain/src/shell-integration/helpers.js index d6c19d7..aac54d6 100644 --- a/packages/safe-chain/src/shell-integration/helpers.js +++ b/packages/safe-chain/src/shell-integration/helpers.js @@ -1,6 +1,7 @@ import { spawnSync } from "child_process"; import * as os from "os"; import fs from "fs"; +import path from "path"; export const knownAikidoTools = [ { tool: "npm", aikidoCommand: "aikido-npm" }, @@ -65,13 +66,24 @@ function shouldRemoveLine(line, pattern) { } export function addLineToFile(filePath, line, eol) { - if (!fs.existsSync(filePath)) { - fs.writeFileSync(filePath, "", "utf-8"); - } + createFileIfNotExists(filePath); eol = eol || os.EOL; const fileContent = fs.readFileSync(filePath, "utf-8"); - const updatedContent = fileContent + eol + line; + const updatedContent = fileContent + eol + line + eol; fs.writeFileSync(filePath, updatedContent, "utf-8"); } + +function createFileIfNotExists(filePath) { + if (fs.existsSync(filePath)) { + return; + } + + const dir = path.dirname(filePath); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + + fs.writeFileSync(filePath, "", "utf-8"); +} diff --git a/packages/safe-chain/src/shell-integration/setup.js b/packages/safe-chain/src/shell-integration/setup.js index 792aa3c..b58eb51 100644 --- a/packages/safe-chain/src/shell-integration/setup.js +++ b/packages/safe-chain/src/shell-integration/setup.js @@ -56,11 +56,13 @@ export async function setup() { */ function setupShell(shell) { let success = false; + let error; try { shell.teardown(knownAikidoTools); // First, tear down to prevent duplicate aliases success = shell.setup(knownAikidoTools); - } catch { + } catch (err) { success = false; + error = err; } if (success) { @@ -75,6 +77,13 @@ function setupShell(shell) { "Setup failed" )}. Please check your ${shell.name} configuration.` ); + if (error) { + let message = ` Error: ${error.message}`; + if (error.code) { + message += ` (code: ${error.code})`; + } + ui.writeError(message); + } } return success;