import {Application, CommandLineApplication, Foreground} from '@extollo/lib'
import {Units} from './Units.extollo'

/*
 * Helper functions to bootstrap the Application instance for different uses.
 */

/**
 * Get the base application with no final-target unit.
 */
export function base(): Application {
    const app = Application.getApplication()
    app.scaffold(__dirname, Units.slice(0, -1))
    return app
}

/**
 * Get the application with the final unit replaced with the CommandLineApplication
 * for use on the CLI.
 */
export function cli(): Application {
    const app = Application.getApplication()
    app.forceStartupMessage = false

    const units = [...Units, CommandLineApplication]

    app.scaffold(__dirname, units)
    return app
}

/**
 * Get the application as it should be run normally.
 */
export function app(): Application {
    const app = Application.getApplication()

    const units = [...Units]
    units.push(Foreground)

    app.scaffold(__dirname, units)
    return app
}
