balena-cli/lib/actions/os.coffee

48 lines
1.3 KiB
CoffeeScript
Raw Normal View History

2014-12-02 11:08:22 -04:00
_ = require('lodash')
async = require('async')
path = require('path')
mkdirp = require('mkdirp')
url = require('url')
resin = require('../resin')
connection = require('../connection/connection')
2014-12-05 12:00:15 -04:00
ui = require('../ui')
2014-12-22 12:41:14 -04:00
log = require('../log/log')
permissions = require('../permissions/permissions')
2014-12-22 12:47:12 -04:00
errors = require('../errors/errors')
cache = require('../cache/cache')
2014-12-02 11:08:22 -04:00
exports.download = (params, options) ->
networkParams =
network: options.network
wifiSsid: options.ssid
wifiKey: options.key
2014-12-02 11:08:22 -04:00
fileName = cache.generateCacheName(params.id, networkParams)
outputFile = options.output or path.join(resin.settings.get('directories.os'), fileName)
2014-12-02 11:08:22 -04:00
async.waterfall [
(callback) ->
# We need to ensure this directory exists
2014-12-02 11:53:34 -04:00
mkdirp path.dirname(outputFile), (error) ->
2014-12-02 11:08:22 -04:00
return callback(error)
(callback) ->
connection.parseConnectionParameters(networkParams, callback)
2014-12-02 11:08:22 -04:00
(parameters, callback) ->
parameters.appId = params.id
2014-12-02 11:08:22 -04:00
query = url.format(query: parameters)
2014-12-05 10:53:59 -04:00
downloadUrl = url.resolve(resin.settings.get('urls.download'), query)
2014-12-02 11:08:22 -04:00
return callback(null, downloadUrl)
(downloadUrl, callback) ->
2014-12-05 12:00:15 -04:00
ui.patterns.downloadFile(downloadUrl, outputFile, callback)
2014-12-02 11:08:22 -04:00
], (error) ->
2014-12-22 12:47:12 -04:00
errors.handle(error) if error?
2014-12-22 12:41:14 -04:00
log.info("\nFinished downloading #{outputFile}")