UNPKG

1.04 kBJavaScriptView Raw
1var fs = require('fs');
2var path = require('path');
3var _ = require('lodash');
4var exists = require('is-there');
5
6const DEFAULT_ENGINE = '2.2.1';
7const ENGINE_MATCHER = /^ruby ["'](.*?)["']$/m;
8
9module.exports = {
10 name: 'ruby',
11 detect: function(dir) {
12 if (exists.sync(path.resolve(dir, 'Gemfile'))) return true;
13 if (exists.sync(path.resolve(dir, 'Gemfile.lock'))) return true;
14 },
15 getDockerfile: function(dir) {
16 var templatePath = path.resolve(__dirname, 'Dockerfile.t');
17 var template = fs.readFileSync(templatePath, { encoding: 'utf8' });
18 var compiled = _.template(template);
19 var gemfile = path.resolve(dir, 'Gemfile');
20 var engine = getEngines(gemfile).ruby || DEFAULT_ENGINE;
21 return compiled({
22 ruby_engine: engine
23 });
24 }
25};
26
27function getEngines(gemfile) {
28 try {
29 var contents = fs.readFileSync(gemfile, { encoding: 'utf8' });
30 var match = contents.match(ENGINE_MATCHER)
31
32 if (match) {
33 return { ruby: match[1] };
34 }
35 return {};
36 }
37 catch (e) {
38 return {};
39 }
40}