Files
cli/ts/classes.gitzoneconfig.ts
2025-12-14 01:42:59 +00:00

60 lines
1.5 KiB
TypeScript

import * as plugins from './plugins.js';
import * as paths from './paths.js';
export type TGitzoneProjectType = 'npm' | 'service' | 'wcc' | 'website';
/**
* type of the actual gitzone data
*/
export interface IGitzoneConfigData {
projectType: TGitzoneProjectType;
module: {
githost: string;
gitscope: string;
gitrepo: string;
description: string;
npmPackageName: string;
license: string;
projectDomain: string;
assetbrokerUrl: string;
legalUrl: string;
};
copy: { [key: string]: string };
npmciOptions: {
npmAccessLevel: 'public' | 'private';
};
}
/**
* gitzone config
*/
export class GitzoneConfig {
public static async fromCwd() {
const gitzoneConfig = new GitzoneConfig();
await gitzoneConfig.readConfigFromCwd();
return gitzoneConfig;
}
public data: IGitzoneConfigData;
public async readConfigFromCwd() {
const npmextraInstance = new plugins.npmextra.Npmextra(paths.cwd);
this.data = npmextraInstance.dataFor<IGitzoneConfigData>('@git.zone/cli', {});
// Read szci config for backward compatibility
const szciConfig = npmextraInstance.dataFor<any>('@ship.zone/szci', {});
// Prefer accessLevel from @git.zone/cli.release, fallback to @ship.zone/szci.npmAccessLevel
const accessLevel =
(this.data as any)?.release?.accessLevel ||
szciConfig?.npmAccessLevel ||
'public';
this.data.npmciOptions = {
npmAccessLevel: accessLevel,
};
}
constructor() {}
}