File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ #!/usr/bin/env node
2+ const { program } = require ( "commander" ) ;
3+ const fs = require ( "fs" ) ;
4+ const path = require ( "path" ) ;
5+
6+ function listDirectory ( dir , options ) {
7+ let entries ;
8+
9+ try {
10+ entries = fs . readdirSync ( dir , { withFileTypes : true } ) ;
11+ } catch ( e ) {
12+ console . error ( `ls: cannot access '${ dir } ': No such file or directory` ) ;
13+ return ;
14+ }
15+
16+ let names = entries . map ( e => e . name ) ;
17+
18+ if ( options . all ) {
19+ names . unshift ( "." , ".." ) ;
20+ } else {
21+
22+ names = names . filter ( name => ! name . startsWith ( "." ) ) ;
23+ }
24+
25+ names . sort ( ) ;
26+
27+ names . forEach ( name => console . log ( name ) ) ;
28+ }
29+
30+ program
31+ . name ( "myls" )
32+ . description ( "Custom implementation of ls" )
33+ . option ( "-1" , "list one file per line (default in our version)" )
34+ . option ( "-a, --all" , "include hidden files" )
35+ . argument ( "[dir]" , "directory to list" , "." )
36+ . action ( ( dir , options ) => {
37+ listDirectory ( dir , options ) ;
38+ } ) ;
39+
40+ program . parse ( ) ;
You can’t perform that action at this time.
0 commit comments