Skip to content

Commit

Permalink
feat: Better error message + suggestion for invalid Bakelet names
Browse files Browse the repository at this point in the history
  • Loading branch information
ssmirr committed Feb 20, 2019
1 parent 05e886c commit 145ece9
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion lib/bakelets/resolve.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
const fs = require('fs-extra');
const path = require('path');
const Promise = require('bluebird');
const Spinner = require('../modules/spinner');
Expand Down Expand Up @@ -201,7 +202,15 @@ async function resolve(vmName, bakerScriptPath, remotesPath, dir, bakelet, extra

if (verbose) console.log("Found", bakeletName, version, extra_vars);

let classFoo = require(mod)
let classFoo = null;
try {
classFoo = require(mod);
} catch (error) {
let correctPath = (await getSupportedBakeletList(path.join(dir, '..'))).filter(bakelet => bakelet.name === info.bakeletName)[0];
let errorMessage = `Cannot find ${info.bakeletName} in ${path.join(info.mod, '..').split('/').pop()} Bakelets. `;
if (correctPath) errorMessage += `Did you mean ${correctPath.dir}:${info.bakeletName}?`
throw Error(errorMessage);
}

const boxes = path.join(require('os').homedir(), '.baker');
const ansible = path.join(boxes, 'ansible-srv');
Expand All @@ -217,3 +226,16 @@ async function resolve(vmName, bakerScriptPath, remotesPath, dir, bakelet, extra
await Spinner.spinPromise(j.load(bakelet, extra_vars), `Preparing ${bakeletName}`, spinnerDot);
await Spinner.spinPromise(j.install(), `Installing ${bakeletName}`, spinnerDot);
}

async function getSupportedBakeletList(bakeletsPath) {
let bakeletDirs = (await fs.readdir(bakeletsPath))
bakeletDirs = bakeletDirs.filter(dir => (fs.statSync(path.join(bakeletsPath, dir))).isDirectory());
let bakeletList = [];
for (let dir of bakeletDirs) {
let names = (await fs.readdir(path.join(bakeletsPath, dir))).map(dir => dir.split('.js')[0]);
for (let name of names) {
bakeletList.push({ name, dir });
}
}
return bakeletList;
}

0 comments on commit 145ece9

Please sign in to comment.