1 | var path = require('path');
|
2 | var fs = require('fs');
|
3 | var _ = require('lodash');
|
4 | var log = require('./log');
|
5 |
|
6 | require('simple-errors');
|
7 |
|
8 |
|
9 |
|
10 | var defaultRouter = [
|
11 | {
|
12 | module: 'webpage'
|
13 | }
|
14 | ];
|
15 |
|
16 |
|
17 |
|
18 | module.exports.update = function(appDir, app, callback) {
|
19 |
|
20 | var packageJsonPath = path.join(appDir, 'package.json');
|
21 | fs.exists(packageJsonPath, function(exists) {
|
22 | if (!exists) {
|
23 | log.info("Writing file %s", packageJsonPath);
|
24 | fs.writeFile(packageJsonPath, JSON.stringify({
|
25 | name: app.name,
|
26 | version: "0.0.1",
|
27 | _virtualApp: {
|
28 | appId: app.appId,
|
29 | router: defaultRouter
|
30 | }
|
31 | }, null, 2), callback);
|
32 | }
|
33 | else {
|
34 |
|
35 | log.debug("Updating file %s", packageJsonPath);
|
36 | fs.readFile(packageJsonPath, function(err, json) {
|
37 | if (err) return callback(err);
|
38 |
|
39 | var packageJson;
|
40 | try {
|
41 | packageJson = JSON.parse(json);
|
42 | }
|
43 | catch (e) {
|
44 | return callback(Error.create("package.json is invalid"));
|
45 | }
|
46 |
|
47 | packageJson.name = app.name;
|
48 | if (!packageJson.version)
|
49 | packageJson.version = "1.0.0";
|
50 |
|
51 | if (_.isObject(packageJson._virtualApp) === false)
|
52 | packageJson._virtualApp = {};
|
53 |
|
54 | packageJson._virtualApp.appId = app.appId;
|
55 | if (_.isArray(packageJson._virtualApp.router) === false)
|
56 | packageJson._virtualApp.router = defaultRouter;
|
57 |
|
58 | fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2),
|
59 | callback);
|
60 | });
|
61 | }
|
62 | });
|
63 | };
|
64 |
|
65 | module.exports.load = function(program, callback) {
|
66 | var packageJsonPath = path.join(program.cwd, 'package.json');
|
67 |
|
68 | fs.exists(packageJsonPath, function(exists) {
|
69 | if (!exists)
|
70 | return callback(new Error("File " + packageJsonPath + " does not exist. Run 'npm init' to create it followed by '4front init'."));
|
71 |
|
72 | fs.readFile(packageJsonPath, function(err, contents) {
|
73 | if (err) return callback(err);
|
74 |
|
75 | var json;
|
76 | try {
|
77 | json = JSON.parse(contents);
|
78 | }
|
79 | catch (e) {
|
80 | return callback("File " + packageJsonPath + " is not valid JSON");
|
81 | }
|
82 |
|
83 | if (!json._virtualApp)
|
84 | return callback("Missing _virtualApp section in package.json file. Try running '4front init'.");
|
85 |
|
86 | var config = json._virtualApp;
|
87 |
|
88 |
|
89 | if (program.appId)
|
90 | config.appId = program.appId;
|
91 |
|
92 | if (!config.appId)
|
93 | return callback(new Error("Missing appId in _virtualApp section of package.json. Try running '4front init'."));
|
94 |
|
95 |
|
96 | _.extend(config, {
|
97 | version: json.version,
|
98 | scripts: json.scripts || {}
|
99 | });
|
100 |
|
101 | callback(null, config);
|
102 | });
|
103 | });
|
104 | };
|