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('@git.zone/cli', {}); // Read szci config for backward compatibility const szciConfig = npmextraInstance.dataFor('@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() {} }