 abda3b6c8c
			
		
	
	abda3b6c8c
	
	
	
		
			
			* ci(#10336): use TurboSnap * build: fix version * ci(#10336): update build dir * chore(#10336): fire changes * chore: stabilize icon width on `PageHeader` * chore: fire changes * ci: invalid ignore * ci: trace logs * chore: debug * revert: debug This reverts commit2329165e25. * chore: do not reuse build dir * build: scripts * ci: tweak * revert: re-revert debug This reverts commit596ef05d9e. * chore: detect changes manually * fix: syntax * ci: do not use only-changed * ci: fix command * revert: re-re-revert debug This reverts commitb027170d75. * ci: use build dir * revert: re-re-re-revert debug This reverts commit529ab126ed. * ci: fix path * revert: re-re-re-re-revert debug This reverts commit0b0c0b9ea4. * ci: fix typo * ci: only show story files * revert: re-re-re-re-re-revert debug This reverts commit9f5b88df32. * ci: skip when no stories found * ci: use skip * revert: re-re-re-re-re-re-revert debug This reverts commit0df4bdc30b. * ci: fix micromatch version * revert: re-re-re-re-re-re-re-revert debug This reverts commit63063b02bb. * revert: re-re-re-re-re-re-re-re-revert debug This reverts commit01d9669e2a. * chore: pin tabler icon width globally * ci: notify when Chromatic skips * ci: fix endpoint --------- Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
		
			
				
	
	
		
			81 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import fs from 'node:fs/promises';
 | |
| import path from 'node:path';
 | |
| import micromatch from 'micromatch';
 | |
| import main from './main';
 | |
| 
 | |
| interface Stats {
 | |
| 	readonly modules: readonly {
 | |
| 		readonly id: string;
 | |
| 		readonly name: string;
 | |
| 		readonly reasons: readonly {
 | |
| 			readonly moduleName: string;
 | |
| 		}[];
 | |
| 	}[];
 | |
| }
 | |
| 
 | |
| fs.readFile(
 | |
| 	path.resolve(__dirname, '../storybook-static/preview-stats.json')
 | |
| ).then((buffer) => {
 | |
| 	const stats: Stats = JSON.parse(buffer.toString());
 | |
| 	const keys = new Set(stats.modules.map((stat) => stat.id));
 | |
| 	const map = new Map(
 | |
| 		Array.from(keys, (key) => [
 | |
| 			key,
 | |
| 			new Set(
 | |
| 				stats.modules
 | |
| 					.filter((stat) => stat.id === key)
 | |
| 					.flatMap((stat) => stat.reasons)
 | |
| 					.map((reason) => reason.moduleName)
 | |
| 			),
 | |
| 		])
 | |
| 	);
 | |
| 	const modules = new Set(
 | |
| 		process.argv
 | |
| 			.slice(2)
 | |
| 			.map((arg) =>
 | |
| 				path.relative(
 | |
| 					path.resolve(__dirname, '..'),
 | |
| 					path.resolve(__dirname, '../../..', arg)
 | |
| 				)
 | |
| 			)
 | |
| 			.map((path) => (path.startsWith('.') ? path : `./${path}`))
 | |
| 	);
 | |
| 	if (
 | |
| 		micromatch(Array.from(modules), [
 | |
| 			'../../assets/**',
 | |
| 			'../../fluent-emojis/**',
 | |
| 			'../../locales/**',
 | |
| 			'../../misskey-assets/**',
 | |
| 			'assets/**',
 | |
| 			'public/**',
 | |
| 			'../../pnpm-lock.yaml',
 | |
| 		]).length
 | |
| 	) {
 | |
| 		return;
 | |
| 	}
 | |
| 	for (;;) {
 | |
| 		const oldSize = modules.size;
 | |
| 		for (const module of Array.from(modules)) {
 | |
| 			if (map.has(module)) {
 | |
| 				for (const dependency of Array.from(map.get(module)!)) {
 | |
| 					modules.add(dependency);
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		if (modules.size === oldSize) {
 | |
| 			break;
 | |
| 		}
 | |
| 	}
 | |
| 	const stories = micromatch(
 | |
| 		Array.from(modules),
 | |
| 		main.stories.map((story) => `./${path.relative('..', story)}`)
 | |
| 	);
 | |
| 	if (stories.length) {
 | |
| 		for (const story of stories) {
 | |
| 			process.stdout.write(` --only-story-files ${story}`);
 | |
| 		}
 | |
| 	} else {
 | |
| 		process.stdout.write(` --skip`);
 | |
| 	}
 | |
| });
 |