33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as plugins from './mod.plugins.js';
 | 
						|
import * as paths from '../paths.js';
 | 
						|
import { Project } from '../classes.project.js';
 | 
						|
 | 
						|
import { logger } from '../gitzone.logging.js';
 | 
						|
 | 
						|
const incompatibleLicenses: string[] = ['AGPL', 'GPL', 'SSPL'];
 | 
						|
 | 
						|
export const run = async (projectArg: Project) => {
 | 
						|
  const nodeModulesInstalled = await plugins.smartfile.fs.isDirectory(
 | 
						|
    plugins.path.join(paths.cwd, 'node_modules'),
 | 
						|
  );
 | 
						|
  if (!nodeModulesInstalled) {
 | 
						|
    logger.log('warn', 'No node_modules found. Skipping license check');
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  const licenseChecker = await plugins.smartlegal.createLicenseChecker();
 | 
						|
  const licenseCheckResult = await licenseChecker.excludeLicenseWithinPath(
 | 
						|
    paths.cwd,
 | 
						|
    incompatibleLicenses,
 | 
						|
  );
 | 
						|
  if (licenseCheckResult.failingModules.length === 0) {
 | 
						|
    logger.log('info', 'Success -> licenses passed!');
 | 
						|
  } else {
 | 
						|
    logger.log('error', 'Error -> licenses failed. Here is why:');
 | 
						|
    for (const failedModule of licenseCheckResult.failingModules) {
 | 
						|
      console.log(
 | 
						|
        `${failedModule.name} fails with license ${failedModule.license}`,
 | 
						|
      );
 | 
						|
    }
 | 
						|
  }
 | 
						|
};
 |