Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/utils/platforms/xulrunner/lib/system.js
blob: a483c154fee63a1f52d67a84cf90ba28e62861c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const Cc = Components.classes;
const Ci = Components.interfaces;

const Env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
const MozConsole = Cc['@mozilla.org/consoleservice;1'].getService(Ci.nsIConsoleService);

var IO = require("./io").IO;
exports.stdin  = null;/*TODO*/
exports.stdout = null;/*TODO*/
exports.stderr = null;/*TODO*/

exports.args = global.arguments || [];

exports.env = {
    // Unfortunate hack to have a fallback mechanism like
    // var foo = system.env['bar'] || system.env['bar']();
    // try {system.env['bar']('foo')} finally {system.env['bar'] = 'foo'}
    __noSuchMethod__: function(name, args) {
        if (args) return Env.set(name, args[0])
        else return Env.exists(name) ? Env.get(name) : null;
    }
};

try { // Hack useing xpconnect to get env varibales from jvm
    var env = Packages.java.lang.System.getenv(),
        keyIterator = env.keySet().iterator();
    while (keyIterator.hasNext()) {
        var key = keyIterator.next();
        exports.env[String(key)] = String(env.get(key));
    }
} catch(e) {}

exports.fs = require('./file');

// default logger
var Logger = require("logger").Logger;
exports.log = new Logger({ print: function(message) {
    print(message);
    MozConsole.logStringMessage(message);
}});