aboutsummaryrefslogtreecommitdiff
path: root/node_modules/shelljs/src/ls.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/shelljs/src/ls.js')
-rw-r--r--node_modules/shelljs/src/ls.js126
1 files changed, 0 insertions, 126 deletions
diff --git a/node_modules/shelljs/src/ls.js b/node_modules/shelljs/src/ls.js
deleted file mode 100644
index bb1b6a7bd..000000000
--- a/node_modules/shelljs/src/ls.js
+++ /dev/null
@@ -1,126 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-var common = require('./common');
-var glob = require('glob');
-
-var globPatternRecursive = path.sep + '**';
-
-common.register('ls', _ls, {
- cmdOptions: {
- 'R': 'recursive',
- 'A': 'all',
- 'L': 'link',
- 'a': 'all_deprecated',
- 'd': 'directory',
- 'l': 'long',
- },
-});
-
-//@
-//@ ### ls([options,] [path, ...])
-//@ ### ls([options,] path_array)
-//@ Available options:
-//@
-//@ + `-R`: recursive
-//@ + `-A`: all files (include files beginning with `.`, except for `.` and `..`)
-//@ + `-L`: follow symlinks
-//@ + `-d`: list directories themselves, not their contents
-//@ + `-l`: list objects representing each file, each with fields containing `ls
-//@ -l` output fields. See
-//@ [fs.Stats](https://nodejs.org/api/fs.html#fs_class_fs_stats)
-//@ for more info
-//@
-//@ Examples:
-//@
-//@ ```javascript
-//@ ls('projs/*.js');
-//@ ls('-R', '/users/me', '/tmp');
-//@ ls('-R', ['/users/me', '/tmp']); // same as above
-//@ ls('-l', 'file.txt'); // { name: 'file.txt', mode: 33188, nlink: 1, ...}
-//@ ```
-//@
-//@ Returns array of files in the given path, or in current directory if no path provided.
-function _ls(options, paths) {
- if (options.all_deprecated) {
- // We won't support the -a option as it's hard to image why it's useful
- // (it includes '.' and '..' in addition to '.*' files)
- // For backwards compatibility we'll dump a deprecated message and proceed as before
- common.log('ls: Option -a is deprecated. Use -A instead');
- options.all = true;
- }
-
- if (!paths) {
- paths = ['.'];
- } else {
- paths = [].slice.call(arguments, 1);
- }
-
- var list = [];
-
- function pushFile(abs, relName, stat) {
- if (process.platform === 'win32') {
- relName = relName.replace(/\\/g, '/');
- }
- if (options.long) {
- stat = stat || (options.link ? fs.statSync(abs) : fs.lstatSync(abs));
- list.push(addLsAttributes(relName, stat));
- } else {
- // list.push(path.relative(rel || '.', file));
- list.push(relName);
- }
- }
-
- paths.forEach(function (p) {
- var stat;
-
- try {
- stat = options.link ? fs.statSync(p) : fs.lstatSync(p);
- } catch (e) {
- common.error('no such file or directory: ' + p, 2, { continue: true });
- return;
- }
-
- // If the stat succeeded
- if (stat.isDirectory() && !options.directory) {
- if (options.recursive) {
- // use glob, because it's simple
- glob.sync(p + globPatternRecursive, { dot: options.all, follow: options.link })
- .forEach(function (item) {
- // Glob pattern returns the directory itself and needs to be filtered out.
- if (path.relative(p, item)) {
- pushFile(item, path.relative(p, item));
- }
- });
- } else if (options.all) {
- // use fs.readdirSync, because it's fast
- fs.readdirSync(p).forEach(function (item) {
- pushFile(path.join(p, item), item);
- });
- } else {
- // use fs.readdirSync and then filter out secret files
- fs.readdirSync(p).forEach(function (item) {
- if (item[0] !== '.') {
- pushFile(path.join(p, item), item);
- }
- });
- }
- } else {
- pushFile(p, p, stat);
- }
- });
-
- // Add methods, to make this more compatible with ShellStrings
- return list;
-}
-
-function addLsAttributes(pathName, stats) {
- // Note: this object will contain more information than .toString() returns
- stats.name = pathName;
- stats.toString = function () {
- // Return a string resembling unix's `ls -l` format
- return [this.mode, this.nlink, this.uid, this.gid, this.size, this.mtime, this.name].join(' ');
- };
- return stats;
-}
-
-module.exports = _ls;