30 lines
822 B
JavaScript
30 lines
822 B
JavaScript
|
const State = require('../State')
|
||
|
|
||
|
class UpdateState extends State {
|
||
|
static get services() {
|
||
|
return [...super.services, 'output']
|
||
|
}
|
||
|
|
||
|
constructor(host, config) {
|
||
|
if ( !host.packages ) {
|
||
|
throw new Error(`Cannot apply update state to host ${host.name}: missing package manager API.`)
|
||
|
}
|
||
|
super(host, config)
|
||
|
}
|
||
|
|
||
|
async apply() {
|
||
|
const packages = (await this._host.packages.list_updates()).map(x => x.name)
|
||
|
await this._host.packages.update(...packages)
|
||
|
}
|
||
|
|
||
|
async check() {
|
||
|
return (await this._host.packages.list_updates()).length === 0
|
||
|
}
|
||
|
|
||
|
async reverse() {
|
||
|
this.output.warn(`Update state does not currently support reversing package updates. (Host: ${this._host.name})`)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = exports = UpdateState
|