2020-02-27 06:31:07 +00:00
|
|
|
const State = require('../State')
|
|
|
|
|
|
|
|
class PackageState extends State {
|
|
|
|
constructor(host, config) {
|
|
|
|
if ( !host.packages ) {
|
|
|
|
throw new Error(`Cannot apply package state to host ${host.name}: missing package manager API.`)
|
|
|
|
}
|
|
|
|
super(host, config)
|
|
|
|
}
|
|
|
|
|
|
|
|
async apply() {
|
|
|
|
return this._host.packages.install(this._config.package)
|
|
|
|
}
|
|
|
|
|
|
|
|
async check() {
|
|
|
|
return this._host.packages.is_installed(this._config.package)
|
|
|
|
}
|
|
|
|
|
|
|
|
async reverse() {
|
|
|
|
return this._host.packages.uninstall(this._config.package)
|
|
|
|
}
|
2020-04-15 14:11:10 +00:00
|
|
|
|
|
|
|
failure_message() {
|
|
|
|
return `The package "${this._config.package}" is not installed on host "${this._host.name}."`
|
|
|
|
}
|
|
|
|
|
|
|
|
check_message() {
|
|
|
|
return this.failure_message()
|
|
|
|
}
|
2020-02-27 06:31:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = exports = PackageState
|