alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
52 lines (46 loc) • 1.64 kB
text/typescript
import { $context, $module } from "alepha";
import { type VendorOptions, vendorOptions } from "./atoms/vendorOptions.ts";
import { VendorCommand } from "./commands/VendorCommand.ts";
import { VendorService } from "./services/VendorService.ts";
// ---------------------------------------------------------------------------
/**
* CLI plugin for vendoring Alepha packages into external projects.
*
* Copies package source code from a git remote into the current project's
* `packages/` directory. Useful for corporate projects that need a local
* copy of Alepha for AI tooling, audits, documentation, or quick fixes.
*
* Commands:
* - `alepha vendor sync` — replace local packages with remote source
* - `alepha vendor diff` — compare local packages against remote HEAD
*
* Configuration in `alepha.config.ts`:
*
* ```typescript
* import { vendor } from "alepha/cli/vendor";
*
* export default defineConfig({
* plugins: [
* vendor({
* branch: "main",
* packages: ["alepha", "@alepha/payments-stripe"],
* }),
* ],
* });
* ```
*/
export const AlephaCliVendorPlugin = $module({
name: "alepha.cli.plugins.vendor",
atoms: [vendorOptions],
services: [VendorCommand, VendorService],
});
export const vendor = (options: VendorOptions) => {
return () => {
const { alepha } = $context();
alepha.with(AlephaCliVendorPlugin).set(vendorOptions, options);
};
};
// ---------------------------------------------------------------------------
export * from "./atoms/vendorOptions.ts";
export * from "./commands/VendorCommand.ts";
export * from "./services/VendorService.ts";