Sorry if this isn't relevant. This repository showed up on my GitHub newsletter.
Do you know the shell's if statement is actually just syntactic sugar for the test
coreutils utility?
http://www.gnu.org/software/coreutils/manual/html_node/test-invocation.html#test-invocation
So on pretty much any shell, you can run:
$ test -e asdf && echo "asdf exists"
$ test -d adsf && echo "adsf exists and is a directory"
And more... You can test for a file's length, it's permissions, it's type, if it's executable, if it's a socket, if it's newer than another file... You can make assertions over strings etc.
This specific case of test
can be rewritten as:
$ if [ -e asdf ]; then echo "asdf exists"; fi
$ if [ -d adsf ]; then echo "asdf exists and is a directory"; fi
This is also how loops work in the shell, as far as I recall. Heh... A loop that spawns a Node.js runtime on every iteration would be pretty bad.
I just think it's a little weird for this kind of stuff to exist and even require another module to work...
This would be a pretty good example of going to far with modules, don't you think?
test
from coreutils is an example of a useful, fast implementation of something that does 1 thing in the UNIX way... Which sort of means constructing a verb that's modular enough to be composed, but useful enough... A verb.
It seems like if this utility's approach was going to write coreutils, instead of test
, there'd be:
path-exists
path-exists-and-is-directory
path-exists-and-is-directory-and-is-newer-than
path-exists-and-has-filename-equal-to