Merge pull request #1609 from xtuple/4_5_x
[xtuple] / scripts / explode_manifest.js
1 #!/usr/bin/env node
2
3 /*jshint node:true, indent:2, curly:false, eqeqeq:true, immed:true, latedef:true, newcap:true, noarg:true,
4 regexp:true, undef:true, strict:true, trailing:true, white:true */
5 /*global _:true */
6
7 //
8 // This file really just parses the arguments, and sends the real work
9 // off to scripts/lib/build_all.js.
10 //
11
12 (function () {
13   "use strict";
14
15   var fs = require("fs"),
16     program = require("commander"),
17     path = require("path"),
18     buildDatabaseUtil = require("./lib/build_database_util");
19
20   program
21     .option('-m, --manifest [/path/to/manifest.js]', 'Location of manifest file.')
22     .option('-n, --name [inventory_upgrade.sql]', 'Name of destination file.')
23     .parse(process.argv);
24
25   // the path is not relative if it starts with a slash
26   var manifestPath = program.manifest.substring(0, 1) === '/' ?
27     program.manifest :
28     path.join(process.cwd(), program.manifest);
29
30   buildDatabaseUtil.explodeManifest(manifestPath, {}, function (err, contents) {
31     var outputFile;
32     if (err) {
33       console.log("error: ", err);
34       return;
35     }
36     if (!fs.existsSync(path.join(__dirname, "output"))) {
37       fs.mkdirSync(path.join(__dirname, "output"));
38     }
39
40     outputFile = path.join(__dirname, "output", program.name);
41     fs.writeFile(outputFile, contents, function (err, res) {
42       if (err) {
43         console.log("error: ", err);
44         return;
45       }
46       console.log("File successfully written as ", outputFile);
47     });
48   });
49
50 }());