ci: generate plugin readme map
This commit is contained in:
		
							parent
							
								
									452bf72e56
								
							
						
					
					
						commit
						5e3a485edc
					
				
					 2 changed files with 19 additions and 9 deletions
				
			
		
							
								
								
									
										2
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -38,7 +38,7 @@ jobs:
 | 
			
		|||
              run: pnpm build --standalone
 | 
			
		||||
 | 
			
		||||
            - name: Generate plugin list
 | 
			
		||||
              run: pnpm generatePluginJson dist/plugins.json
 | 
			
		||||
              run: pnpm generatePluginJson dist/plugins.json dist/plugin-readmes.json
 | 
			
		||||
 | 
			
		||||
            - name: Clean up obsolete files
 | 
			
		||||
              run: |
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -165,7 +165,11 @@ async function parseFile(fileName: string) {
 | 
			
		|||
            data.target = target as any;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return data;
 | 
			
		||||
        let readme = "";
 | 
			
		||||
        try {
 | 
			
		||||
            readme = readFileSync(join(fileName, "..", "README.md"), "utf-8");
 | 
			
		||||
        } catch { }
 | 
			
		||||
        return [data, readme] as const;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    throw fail("no default export called 'definePlugin' found");
 | 
			
		||||
| 
						 | 
				
			
			@ -194,18 +198,24 @@ function isPluginFile({ name }: { name: string; }) {
 | 
			
		|||
(async () => {
 | 
			
		||||
    parseDevs();
 | 
			
		||||
 | 
			
		||||
    const plugins = ["src/plugins", "src/plugins/_core"].flatMap(dir =>
 | 
			
		||||
    const plugins = [] as PluginData[];
 | 
			
		||||
    const readmes = {} as Record<string, string>;
 | 
			
		||||
 | 
			
		||||
    await Promise.all(["src/plugins", "src/plugins/_core"].flatMap(dir =>
 | 
			
		||||
        readdirSync(dir, { withFileTypes: true })
 | 
			
		||||
            .filter(isPluginFile)
 | 
			
		||||
            .map(async dirent =>
 | 
			
		||||
                parseFile(await getEntryPoint(dir, dirent))
 | 
			
		||||
            )
 | 
			
		||||
    );
 | 
			
		||||
            .map(async dirent => {
 | 
			
		||||
                const [data, readme] = await parseFile(await getEntryPoint(dir, dirent));
 | 
			
		||||
                plugins.push(data);
 | 
			
		||||
                if (readme) readmes[data.name] = readme;
 | 
			
		||||
            })
 | 
			
		||||
    ));
 | 
			
		||||
 | 
			
		||||
    const data = JSON.stringify(await Promise.all(plugins));
 | 
			
		||||
    const data = JSON.stringify(plugins);
 | 
			
		||||
 | 
			
		||||
    if (process.argv.length > 2) {
 | 
			
		||||
    if (process.argv.length > 3) {
 | 
			
		||||
        writeFileSync(process.argv[2], data);
 | 
			
		||||
        writeFileSync(process.argv[3], JSON.stringify(readmes));
 | 
			
		||||
    } else {
 | 
			
		||||
        console.log(data);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue