Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

What should relative paths be relative to in the JS shell?

19 views
Skip to first unread message

Steve Fink

unread,
Mar 11, 2013, 5:03:45 PM3/11/13
to js-internals
Over in bug 835552, I'm trying to change the behavior of relative path
lookups.

Current behavior:
- load("foo/bar.js") will search relative to the current working directory
- read("foo/bar.txt") will search relative to the calling script's
filename on XP_UNIX (and relative to the current working directory on
non-XP_UNIX, but ignore that for now.)

To me, that seems backwards. I want to be able to be able to have a
directory of scripts that load each other, so load() needs to be
caller-relative. And the actual reason I'm doing something with this is
because I want to be able to do

system("something > tmp.txt"); load("tmp.txt")

and have it find the file. It would also be nice to be able to run

js ~/scripts/process.js somefile.txt

(where process.js calls read(arguments[0])) and have the JS shell
resolve the path the same way that bash would -- ie, relative to the cwd.

But there are uses for the current behavior. I've added a
readRelativeToScript() so you can have data files alongside scripts. Now
in https://bugzilla.mozilla.org/show_bug.cgi?id=835552#c15 njn argues
that the current cwd-relative behavior of load() should be the default
and there should be a loadRelativeToScript() available.

Note that probably a better solution would be to implement some basic
path manipulation routines and perhaps a nicer way to get the current
script's filename, but I've already scope-creeped this and this question
is really about the default behavior.

Opinions?
0 new messages