diff options
Diffstat (limited to 'node_modules/shelljs/src/cd.js')
-rw-r--r-- | node_modules/shelljs/src/cd.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/node_modules/shelljs/src/cd.js b/node_modules/shelljs/src/cd.js new file mode 100644 index 000000000..634ed835c --- /dev/null +++ b/node_modules/shelljs/src/cd.js @@ -0,0 +1,38 @@ +var fs = require('fs'); +var common = require('./common'); + +common.register('cd', _cd, {}); + +//@ +//@ ### cd([dir]) +//@ Changes to directory `dir` for the duration of the script. Changes to home +//@ directory if no argument is supplied. +function _cd(options, dir) { + if (!dir) dir = common.getUserHome(); + + if (dir === '-') { + if (!process.env.OLDPWD) { + common.error('could not find previous directory'); + } else { + dir = process.env.OLDPWD; + } + } + + try { + var curDir = process.cwd(); + process.chdir(dir); + process.env.OLDPWD = curDir; + } catch (e) { + // 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 (e2) { + err = 'no such file or directory: ' + dir; + } + if (err) common.error(err); + } + return ''; +} +module.exports = _cd; |