From 48a3aade2e64f1b1f2cf0e4d3613ce52dca45c19 Mon Sep 17 00:00:00 2001 From: Nate Fischer Date: Sun, 28 Feb 2016 22:00:22 -0800 Subject: [PATCH] Improved cd performance and fix error messages --- src/cd.js | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/cd.js b/src/cd.js index e70e37d..51bc057 100644 --- a/src/cd.js +++ b/src/cd.js @@ -16,19 +16,20 @@ function _cd(options, dir) { dir = common.state.previousDir; } - // This complexity is so that we only stat once. - var error = null; try { - var stat = fs.statSync(dir); - if(stat.isDirectory()) { - common.state.previousDir = process.cwd(); - process.chdir(dir); - } else { - error = 'not a directory: ' + dir; - } + var curDir = process.cwd(); + process.chdir(dir); + common.state.previousDir = curDir; } catch (e) { - error = 'no such file or directory: ' + dir; + // something went wrong, let's figure out the error + var err; + try { + fs.statSync(dir); // if this succeeds, it must be some sort of file + err = 'not a directory: ' + dir; + } catch (e) { + err = 'no such file or directory: ' + dir; + } + if (err) common.error(err); } - if (error) common.error(error); } module.exports = _cd;