mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-04-07 11:26:41 +00:00
Completely decouple client code from server module
This commit is contained in:
parent
aeafd23e43
commit
1b9c62a50f
@ -2,14 +2,14 @@ _ = require('lodash')
|
||||
async = require('async')
|
||||
path = require('path')
|
||||
mkdirp = require('mkdirp')
|
||||
url = require('url')
|
||||
ProgressBar = require('progress')
|
||||
resin = require('../resin')
|
||||
connection = require('../connection/connection')
|
||||
ui = require('../ui')
|
||||
log = require('../log/log')
|
||||
permissions = require('../permissions/permissions')
|
||||
errors = require('../errors/errors')
|
||||
cache = require('../cache/cache')
|
||||
resin = require('../resin')
|
||||
|
||||
exports.download = (params, options) ->
|
||||
networkParams =
|
||||
@ -34,13 +34,22 @@ exports.download = (params, options) ->
|
||||
(parameters, callback) ->
|
||||
parameters.appId = params.id
|
||||
|
||||
query = url.format(query: parameters)
|
||||
downloadUrl = url.resolve(resin.settings.get('urls.download'), query)
|
||||
bar = null
|
||||
received = 0
|
||||
|
||||
return callback(null, downloadUrl)
|
||||
resin.models.os.download parameters, outputFile, callback, (state) ->
|
||||
|
||||
(downloadUrl, callback) ->
|
||||
ui.patterns.downloadFile(downloadUrl, outputFile, callback)
|
||||
# TODO: Allow quieting this progress bar
|
||||
bar ?= new ProgressBar 'Downloading device OS [:bar] :percent :etas',
|
||||
complete: '='
|
||||
incomplete: ' '
|
||||
width: 40
|
||||
total: state.total
|
||||
|
||||
return if bar.complete or not state?
|
||||
|
||||
bar.tick(state.received - received)
|
||||
received = state.received
|
||||
|
||||
], (error) ->
|
||||
errors.handle(error) if error?
|
||||
|
@ -3,3 +3,4 @@ module.exports =
|
||||
device: require('./device')
|
||||
key: require('./key')
|
||||
environmentVariables: require('./environment-variables')
|
||||
os: require('./os')
|
||||
|
15
lib/resin/models/os.coffee
Normal file
15
lib/resin/models/os.coffee
Normal file
@ -0,0 +1,15 @@
|
||||
url = require('url')
|
||||
fs = require('fs')
|
||||
server = require('../server/server')
|
||||
settings = require('../settings')
|
||||
|
||||
exports.download = (parameters, destination, callback, onProgress) ->
|
||||
query = url.format(query: parameters)
|
||||
downloadUrl = url.resolve(settings.get('urls.download'), query)
|
||||
|
||||
server.request
|
||||
method: 'GET'
|
||||
url: downloadUrl
|
||||
pipe: fs.createWriteStream(destination)
|
||||
, callback
|
||||
, onProgress
|
@ -18,27 +18,3 @@ exports.remove = (name, confirmAttribute, deleteFunction, outerCallback) ->
|
||||
deleteFunction(callback)
|
||||
|
||||
], outerCallback)
|
||||
|
||||
exports.downloadFile = (url, dest, callback) ->
|
||||
bar = null
|
||||
received = 0
|
||||
|
||||
resin.server.request
|
||||
method: 'GET'
|
||||
url: url
|
||||
pipe: fs.createWriteStream(dest)
|
||||
, (error) ->
|
||||
return callback(error)
|
||||
, (state) ->
|
||||
|
||||
# TODO: Allow quieting this progress bar
|
||||
bar ?= new ProgressBar 'Downloading device OS [:bar] :percent :etas',
|
||||
complete: '='
|
||||
incomplete: ' '
|
||||
width: 40
|
||||
total: state.total
|
||||
|
||||
return if bar.complete or not state?
|
||||
|
||||
bar.tick(state.received - received)
|
||||
received = state.received
|
||||
|
Loading…
x
Reference in New Issue
Block a user