UNPKG

1.37 kBJavaScriptView Raw
1var fs = require('fs');
2var path = require('path');
3var child = require('child_process');
4var _ = require('lodash');
5var exists = require('is-there');
6var state = require('../lib/state');
7var docker = require('../lib/docker');
8var platforms = require('../platforms');
9
10module.exports = function(topic) {
11 return {
12 topic: topic,
13 command: 'create',
14 description: 'creates a local development environment',
15 help: `help text for ${topic}:create`,
16 flags: [
17 { name: 'template', description: 'create a Dockerfile based on a language template', hasValue: true }
18 ],
19 run: function(context) {
20 createDockerfile(context.cwd, context.args.template);
21 createImage(context.cwd);
22 }
23 };
24};
25
26function createDockerfile(dir, lang) {
27 var dockerfile = path.join(dir, 'Dockerfile');
28 var platform = lang ? platforms.find(lang) : platforms.detect(dir);
29 if (!platform) return;
30
31 var contents = platform.getDockerfile(dir);
32 if (contents) {
33 fs.writeFileSync(dockerfile, contents);
34 console.log(`Wrote Dockerfile for ${platform.name} apps`);
35 }
36}
37
38function createImage(dir) {
39 var dockerfile = path.join(dir, 'Dockerfile');
40 if (!exists.sync(dockerfile)) {
41 console.error('Error: No Dockerfile found');
42 process.exit();
43 }
44 var imageId = docker.buildImage(dir, dockerfile);
45 state.set(dir, { runImageId: imageId });
46}