hivecast-sdk/packages/cli/tests/helpers/package-fixtures.ts

74 lines
1.7 KiB
TypeScript

import * as fs from 'node:fs';
import * as path from 'node:path';
export interface ICreatePackageOptions {
readonly packageName: string;
readonly version?: string;
readonly mount?: string;
readonly componentType?: string;
readonly runtimeEntry?: string;
}
export function createMatrixPackage(rootDir: string, options: ICreatePackageOptions): {
readonly packageDir: string;
readonly packageName: string;
readonly version: string;
} {
const version = options.version ?? '1.0.0';
const componentType = options.componentType ?? 'SampleActor';
const mount = options.mount ?? 'sample.actor';
const runtimeEntry = options.runtimeEntry ?? 'src/index.ts';
const packageDir = path.join(rootDir, options.packageName.replace(/^@/, '').replace('/', '-'));
fs.mkdirSync(path.join(packageDir, 'src'), { recursive: true });
fs.writeFileSync(
path.join(packageDir, 'matrix.json'),
JSON.stringify(
{
name: options.packageName,
version,
runtime: { language: 'typescript', entry: runtimeEntry },
components: [
{
type: componentType,
export: componentType,
mount,
autoStart: true,
},
],
permissions: { fsPolicy: 'none' },
},
null,
2
),
'utf8'
);
fs.writeFileSync(
path.join(packageDir, 'package.json'),
JSON.stringify(
{
name: options.packageName,
version,
type: 'module',
main: 'src/index.ts',
},
null,
2
),
'utf8'
);
fs.writeFileSync(
path.join(packageDir, 'src', 'index.ts'),
`export class ${componentType} {}\n`,
'utf8'
);
return {
packageDir,
packageName: options.packageName,
version,
};
}