2021-06-03 03:36:25 +00:00
|
|
|
import {Directive} from '../Directive'
|
|
|
|
import {CommandLineApplication} from '../service'
|
|
|
|
import {Injectable} from '../../di'
|
|
|
|
import {ErrorWithContext} from '../../util'
|
|
|
|
import {Unit} from '../../lifecycle/Unit'
|
2021-06-02 01:59:40 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* A directive that starts the framework's final target normally.
|
|
|
|
* In most cases, this runs the HTTP server, which would have been replaced
|
|
|
|
* by the CommandLineApplication unit.
|
|
|
|
*/
|
|
|
|
@Injectable()
|
|
|
|
export class RunDirective extends Directive {
|
|
|
|
getDescription(): string {
|
|
|
|
return 'run the application normally'
|
|
|
|
}
|
|
|
|
|
|
|
|
getKeywords(): string | string[] {
|
|
|
|
return ['run', 'up']
|
|
|
|
}
|
|
|
|
|
|
|
|
async handle(): Promise<void> {
|
|
|
|
if ( !CommandLineApplication.getReplacement() ) {
|
|
|
|
throw new ErrorWithContext(`Cannot run application: no run target specified.`)
|
|
|
|
}
|
|
|
|
|
|
|
|
const unit = <Unit> this.make(CommandLineApplication.getReplacement())
|
|
|
|
await this.app().startUnit(unit)
|
|
|
|
await this.app().stopUnit(unit)
|
|
|
|
}
|
|
|
|
}
|