alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
32 lines (27 loc) • 947 B
text/typescript
import { pathToFileURL } from "node:url";
import { $hook, $inject, Alepha } from "alepha";
import { FileSystemProvider } from "alepha/system";
export class AlephaCliExtensionProvider {
protected readonly alepha = $inject(Alepha);
protected readonly fs = $inject(FileSystemProvider);
protected readonly onConfigure = $hook({
on: "configure",
handler: async () => {
const root = process.cwd();
const extensionPath = this.fs.join(root, "alepha.config.ts");
const hasExtension = await this.fs.exists(extensionPath);
if (!hasExtension) {
return;
}
// import (use file:// URL for Windows compatibility)
const extensionUrl = pathToFileURL(extensionPath).href;
const { default: Extension } = await import(extensionUrl);
if (typeof Extension !== "function") {
return;
}
this.alepha.inject(Extension, {
args: [this.alepha],
});
},
});
}