44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
const State = require('../State')
|
|
|
|
class YarnInstallState extends State {
|
|
#ran_once = false
|
|
|
|
static get services() {
|
|
return [...super.services, 'output']
|
|
}
|
|
|
|
async apply() {
|
|
const cmd = `cd "${this._config.path}" && yarn install`
|
|
await this._host.run(cmd)
|
|
this.#ran_once = true
|
|
}
|
|
|
|
async check() {
|
|
if ( this._config.force ) return this.#ran_once
|
|
else {
|
|
const node_modules = this._host.get_path(`${this._config.path}/node_modules`)
|
|
await node_modules.classify()
|
|
return node_modules.is_directory()
|
|
}
|
|
}
|
|
|
|
async reverse() {
|
|
const node_modules = this._host.get_path(`${this._config.path}/node_modules`)
|
|
await node_modules.unlink()
|
|
}
|
|
|
|
failure_message() {
|
|
return `The Yarn packages at ${this._config.path} need to be installed.`
|
|
}
|
|
|
|
check_message() {
|
|
return this.failure_message()
|
|
}
|
|
|
|
display() {
|
|
return `Ensure that the Yarn packages at ${this._config.path} are installed...`
|
|
}
|
|
}
|
|
|
|
module.exports = exports = YarnInstallState
|