52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 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>('gitzone', {});
 | 
						|
    this.data.npmciOptions = npmextraInstance.dataFor<
 | 
						|
      IGitzoneConfigData['npmciOptions']
 | 
						|
    >('npmci', {
 | 
						|
      npmAccessLevel: 'public',
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  constructor() {}
 | 
						|
}
 |