forked from blackbeardapp/compose-watch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcli.js
64 lines (57 loc) · 1.49 KB
/
cli.js
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
61
62
63
64
var minimist = require('minimist')
var nodemon = require('nodemon')
var path = require('path')
var fs = require('fs')
var debug = require('debug')('compose-watch')
var argv = minimist(process.argv.slice(2), {
boolean: ['w', 'h', 'help']
})
console.log(argv)
if(argv.h || argv.help) {
var help = [
'Usage: compose-watch [-nw] appname [dir]',
'',
'Options:',
' -h, --help\tOutput help',
' -nw\tDo not watch, just restart the app once',
' dir\tDir to watch if it should be different than the appname'
]
console.log(help.join('\n'))
process.exit()
}
var file = 'docker-compose.yml'
var dir = findFile('docker-compose.yml', process.cwd())
var app = argv._[0]
var composeYamlFile = dir + '/' + file
var commands = [
'--exec "',
'docker-compose -f ' + composeYamlFile + ' stop -t 0 ' + app + ' && ',
'docker-compose -f ' + composeYamlFile + ' start ' + app + ' && ',
'docker-compose -f ' + composeYamlFile + ' logs ' + app,
'"'
]
if(!argv.nw) {
var watchdir = app
if(typeof argv._[1] !== 'undefined') {
watchdir = argv._[1]
}
commands.push(' -w ' + dir + '/' + watchdir + '/')
}
debug('command', commands.join(''))
nodemon(commands.join(''))
var prev = ''
function findFile(name, dir) {
var filepath = path.resolve(dir, name)
// we hit root /
if(prev === filepath) {
return false
}
prev = filepath
debug('checking', filepath)
try {
fs.statSync(filepath)
return path.resolve(dir)
} catch (e) {
return findFile(name, dir + '/..')
}
}