mirror of
https://github.com/balena-os/balena-supervisor.git
synced 2025-03-22 12:05:53 +00:00
Deduplicate compose command running logic.
This commit is contained in:
parent
a371e35d5c
commit
707ed7e1f6
@ -6,10 +6,29 @@ dockerUtils = require './docker-utils'
|
||||
fs = Promise.promisifyAll(require('fs'))
|
||||
spawn = require('child_process').spawn
|
||||
|
||||
runComposeCommand = (composeArgs, path, onStatus) ->
|
||||
onStatus ?= console.log.bind(console)
|
||||
reportStatus = (status) ->
|
||||
try onStatus(status)
|
||||
new Promise (resolve, reject) ->
|
||||
child = spawn('docker-compose', ['-f', path].concat(composeArgs), stdio: 'pipe')
|
||||
.on 'error', reject
|
||||
.on 'exit', (code) ->
|
||||
return reject(new Error("docker-compose exited with code #{code}")) if code isnt 0
|
||||
resolve()
|
||||
child.stdout.on 'data', (data) ->
|
||||
reportStatus(status: '' + data)
|
||||
child.stderr.on 'data', (data) ->
|
||||
reportStatus(status: '' + data)
|
||||
.catch (err) ->
|
||||
msg = err?.message or err
|
||||
reportStatus(error: msg)
|
||||
throw err
|
||||
|
||||
# Runs docker-compose up using the compose YAML at "path".
|
||||
# Reports status and errors in JSON to the onStatus function.
|
||||
exports.up = (path, onStatus) ->
|
||||
onStatus = console.log.bind(console) if !onStatus?
|
||||
onStatus ?= console.log.bind(console)
|
||||
reportStatus = (status) ->
|
||||
try onStatus(status)
|
||||
fs.readFileAsync(path)
|
||||
@ -28,38 +47,8 @@ exports.up = (path, onStatus) ->
|
||||
.catch ->
|
||||
dockerUtils.pullImage(service.image, reportStatus)
|
||||
.then ->
|
||||
new Promise (resolve, reject) ->
|
||||
child = spawn('docker-compose', ['-f', path, 'up', '-d'], stdio: 'pipe')
|
||||
.on 'error', reject
|
||||
.on 'exit', (code) ->
|
||||
return reject(new Error("docker-compose exited with code #{code}")) if code isnt 0
|
||||
resolve()
|
||||
child.stdout.on 'data', (data) ->
|
||||
reportStatus(status: '' + data)
|
||||
child.stderr.on 'data', (data) ->
|
||||
reportStatus(status: '' + data)
|
||||
.catch (err) ->
|
||||
msg = err?.message or err
|
||||
reportStatus(error: msg)
|
||||
throw err
|
||||
runComposeCommand(['up', '-d'], path, onStatus)
|
||||
|
||||
# Runs docker-compose down using the compose YAML at "path".
|
||||
# Reports status and errors in JSON to the onStatus function.
|
||||
exports.down = (path, onStatus) ->
|
||||
onStatus = console.log.bind(console) if !onStatus?
|
||||
reportStatus = (status) ->
|
||||
try onStatus(status)
|
||||
new Promise (resolve, reject) ->
|
||||
child = spawn('docker-compose', ['-f', path, 'down'], stdio: 'pipe')
|
||||
.on 'error', reject
|
||||
.on 'exit', (code) ->
|
||||
return reject(new Error("docker-compose exited with code #{code}")) if code isnt 0
|
||||
resolve()
|
||||
child.stdout.on 'data', (data) ->
|
||||
reportStatus(status: '' + data)
|
||||
child.stderr.on 'data', (data) ->
|
||||
reportStatus(status: '' + data)
|
||||
.catch (err) ->
|
||||
msg = err?.message or err
|
||||
reportStatus(error: msg)
|
||||
throw err
|
||||
exports.down = _.partial(runComposeCommand, 'down')
|
||||
|
Loading…
x
Reference in New Issue
Block a user