add ability to access from cli
This commit is contained in:
parent
77fa6ad867
commit
564abb55c7
39
README.md
39
README.md
@ -11,3 +11,42 @@ pnpm build
|
||||
|
||||
The intermediate files are generated in the `exbuild/` directory, and the final compiled output is in the `lib/` directory.
|
||||
|
||||
Access the Zod schema:
|
||||
|
||||
```txt
|
||||
node --experimental-repl-await lib/cli.js shell
|
||||
powered by Extollo, © 2022 Garrett Mills
|
||||
Access your application using the "app" global.
|
||||
(extollo) ➤ Home = require('./lib/app/http/controllers/main/Home.controller').Home
|
||||
[class Home extends Controller]
|
||||
(extollo) ➤ home = new Home
|
||||
Home { request: undefined }
|
||||
(extollo) ➤ home.getValidator().getZod().shape
|
||||
{
|
||||
username: ZodString {
|
||||
spa: [Function (anonymous)],
|
||||
superRefine: [Function (anonymous)],
|
||||
_def: { checks: [Array], typeName: 'ZodString' },
|
||||
transform: [Function: bound ],
|
||||
default: [Function: bound ],
|
||||
_regex: [Function (anonymous)],
|
||||
nonempty: [Function (anonymous)]
|
||||
},
|
||||
password: ZodString {
|
||||
spa: [Function (anonymous)],
|
||||
superRefine: [Function (anonymous)],
|
||||
_def: { checks: [Array], typeName: 'ZodString' },
|
||||
transform: [Function: bound ],
|
||||
default: [Function: bound ],
|
||||
_regex: [Function (anonymous)],
|
||||
nonempty: [Function (anonymous)]
|
||||
},
|
||||
rememberMe: ZodOptional {
|
||||
spa: [Function (anonymous)],
|
||||
superRefine: [Function (anonymous)],
|
||||
_def: { innerType: [ZodBoolean], typeName: 'ZodOptional' },
|
||||
transform: [Function: bound ],
|
||||
default: [Function: bound ]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
10
src/Units.extollo.ts
Normal file
10
src/Units.extollo.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import {
|
||||
Unit,
|
||||
CommandLine,
|
||||
ValidationUnit,
|
||||
} from '@extollo/lib'
|
||||
|
||||
export const Units = [
|
||||
ValidationUnit,
|
||||
CommandLine,
|
||||
] as (typeof Unit)[]
|
43
src/bootstrap.ts
Normal file
43
src/bootstrap.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import {Application, CommandLineApplication} 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]
|
||||
|
||||
units.reverse()
|
||||
CommandLineApplication.setReplacement(units[0])
|
||||
units[0] = CommandLineApplication
|
||||
units.reverse()
|
||||
|
||||
app.scaffold(__dirname, units)
|
||||
return app
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the application as it should be run normally.
|
||||
*/
|
||||
export function app(): Application {
|
||||
const app = Application.getApplication()
|
||||
app.scaffold(__dirname, Units)
|
||||
return app
|
||||
}
|
15
src/cli.ts
Normal file
15
src/cli.ts
Normal file
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env -S node --experimental-repl-await
|
||||
import {globalRegistry} from '@extollo/lib'
|
||||
import {cli} from './bootstrap'
|
||||
|
||||
globalRegistry.run(async () => {
|
||||
/*
|
||||
* The Application
|
||||
* -----------------------------------------------------
|
||||
* The application instance is a global inversion of control container that
|
||||
* ties your entire application together. The app container manages services
|
||||
* and lifecycle.
|
||||
*/
|
||||
const app = cli()
|
||||
await app.run()
|
||||
})
|
Loading…
Reference in New Issue
Block a user