Re: libseed-list imports.searchPath
- From: "Alan Knowles" <alan akbkhome com>
- To: "Jonatan Liljedahl" <libseed-list-bounces gnome org>
- Cc: libseed-list gnome org
- Subject: Re: libseed-list imports.searchPath
- Date: Fri, 18 Jun 2010 19:32:01 +0800
I'm trying to get my head round that ;)
our "." always points to the currently running script path
eg.
seed a.js
base/a.js
-------
c = imports.b.c; // -> base/b/c.js
base/b/c.js
----
d = imports.d; // could be base/b/d.js or base/d.js
however, unless we add __script_path__ on the initial run, that could never find base/d.js
or did I miss something.
Regards
Alan
--- On 18/Jun/2010, Jonatan Liljedahl wrote:
> I forgot I also made some changes to Seed.js:
>
> if(!imports.searchPath || (imports.searchPath.length == 0))
> {
> imports.searchPath = [
> "/usr/share/gnome-js",
> "/usr/lib/seed",
> "/usr/share/seed",
> "/usr/local/lib/seed",
> "/usr/local/share/seed",
> "/usr/lib/seed",
> "/usr/share/seed"];
>
> __script_path__ = GLib.path_get_dirname(Seed.argv.length > 1 ?
> Seed.argv[1] : ".");
>
> try
> {
> if(!GLib.path_is_absolute(__script_path__))
> {
> __script_path__ = GLib.build_filenamev([GLib.get_current_dir(),
> __script_path__]);
> }
>
> __script_path__ = imports.os.realpath(__script_path__);
>
> }
> catch(e)
> {
> print(imports.JSON.stringify(e));
> }
>
> imports.searchPath.unshift(".");
> }
> //////////////////////////
>
> (always try to set __script_path__ but don't add it to searchPath since
> we now replaces '.' with this instead)
>
> /J
>
> Jonatan Liljedahl wrote:
> > Here's the patch. It does the below, including replacing '.' with
> > current script_path if set. It also shrank the source by 55 lines.
> >
> > I've tested it, and everything works as expected. Please apply!
> >
> > PS: something that didn't work before but now does, is that a
> > dir_importer object will now allow importing of any existing
> > libseed_xxx.so modules in that dir.
> >
> > Regards
> > /Jonatan
> >
> > Jonatan Liljedahl wrote:
> >> Looking at the importer, I see a lot of things I'd like to do:
> >>
> >> seed_importer_search() and seed_importer_dir_get_property() actually
> >> does the same thing, except seed_importer_search() does it once for
> >> each searchpath. I'll do a seed_importer_search_in_dir(dirpath, prop)
> >> that is called by both.
> >>
> >> In this seed_importer_search_in_dir() I will instead of walking
> >> through all directory entries simply:
> >>
> >> - is dirpath/prop a file or dir? pass it to seed_importer_handle_file()
> >> - is dirpath/prop.js a file? pass it to seed_importer_handle_file()
> >> - is dirpath/libseed_prop.so a file? pass it to
> >> seed_importer_handle_native_module()
> >> - else return NULL
> >>
> >> Note the check for .js extension. I really think this is the way to do
> >> it, you don't want it to load an old foo.js~ backup file or foo.data
> >> or whatever.
> >>
> >> Patch coming soon!
> >>
> >> /Jonatan
> >>
> >> Jonatan Liljedahl wrote:
> >> ...
> >>>> for the importer you could try changing the
> >>>> seed-importer.c:seed_importer_search
> >>>>
> >>>> from dir = g_dir_open ((gchar *) walk->data, 0, &e);
> >>>>
> >>>>
> >>>> to something like this. gchar* sp = seed_value_to_string (ctx,
> >>>> seed_object_get_property (nctx, global, "__script_path__"); exception);
> >>>>
> >>>> gchar* test_path = (gchar *) walk->data; if (strcmp(test_path, ".")
> >>>> == 0) { test_path = sp; }
> >>>>
> >>>> And see how it behaves. Regards Alan
> >>>
> >>> Ok, will try something out.
> >>> /Jonatan
> >>
> >
>
>
> _______________________________________________
> libseed-list mailing list
> libseed-list gnome org
> http://mail.gnome.org/mailman/listinfo/libseed-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]