Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/utils/lib/narwhal/tusk/init.js
blob: 3c73fda659df93e638fe4c77758db5bb841be97e (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

var fs = require("file");
var json = require("json");
var util = require("util");
var args = require("args");
var parser = exports.parser = new args.Parser();

parser.help('initializes a Narwhal package/project directory');

parser.option('--name', 'name').def("").set();
parser.option('--author', 'author').def("").set();
parser.option('--dependency', 'dependencies').push();
parser.option('--contributor', 'contributors').push();

parser.action(function (options, parentOptions) {
    parentOptions.acted = true;
    var packageInfo = {};
    var path;
    if (options.args.length && !/^-/.test(options.args[0]))
        path = options.args.shift();
    else
        path = fs.cwd();
    util.update(packageInfo, options);
    delete packageInfo.args;
    delete packageInfo.command;
    path = fs.path(path).absolute();
    print(path);
    path.join('.tusk').mkdirs();
    path.join('bin').mkdirs();
    path.join('lib').mkdirs();
    system.platforms.forEach(function (platform) {
        platform = path.join('platforms', platform);
        platform.join('lib').mkdirs();
    });
    path.join('packages').mkdirs();

    var sea = path.join('bin', 'sea');
    fs.path(system.prefix).join('bin', 'sea').copy(sea);
    sea.chmod(0755);

    var activate = path.join('bin', 'activate.bash');
    fs.path(system.prefix).join('bin', 'activate.bash')
        .copy(activate);
    activate.relative().symlink(activate.resolve('activate'));

    path.join('README').touch();
    path.join('narwhal.conf')
        .write('NARWHAL_DEFAULT_PLATFORM=' + system.platform);
    var packagePath = path.join('package.json');
    if (packagePath.isFile())
        util.complete(
            packageInfo, 
            json.decode(packagePath.read({charset:'utf-8'}))
        );
    packagePath.write(
        json.encode(packageInfo, null, 4),
        {charset:'utf-8'}
    );
});