44 * SPDX-License-Identifier: Apache-2.0
55 */
66
7+ import type { ParsedArguments } from '../cli.js' ;
8+
79import * as consoleTools from './console.js' ;
810import * as emulationTools from './emulation.js' ;
911import * as extensionTools from './extensions.js' ;
@@ -18,23 +20,36 @@ import * as scriptTools from './script.js';
1820import * as snapshotTools from './snapshot.js' ;
1921import type { ToolDefinition } from './ToolDefinition.js' ;
2022
21- const tools = [
22- ...Object . values ( consoleTools ) ,
23- ...Object . values ( emulationTools ) ,
24- ...Object . values ( extensionTools ) ,
25- ...Object . values ( inputTools ) ,
26- ...Object . values ( memoryTools ) ,
27- ...Object . values ( networkTools ) ,
28- ...Object . values ( pagesTools ) ,
29- ...Object . values ( performanceTools ) ,
30- ...Object . values ( screencastTools ) ,
31- ...Object . values ( screenshotTools ) ,
32- ...Object . values ( scriptTools ) ,
33- ...Object . values ( snapshotTools ) ,
34- ] as ToolDefinition [ ] ;
23+ export const createTools = ( args : ParsedArguments ) => {
24+
25+ const rawTools = [
26+ ...Object . values ( consoleTools ) ,
27+ ...Object . values ( emulationTools ) ,
28+ ...Object . values ( extensionTools ) ,
29+ ...Object . values ( inputTools ) ,
30+ ...Object . values ( memoryTools ) ,
31+ ...Object . values ( networkTools ) ,
32+ ...Object . values ( pagesTools ) ,
33+ ...Object . values ( performanceTools ) ,
34+ ...Object . values ( screencastTools ) ,
35+ ...Object . values ( screenshotTools ) ,
36+ ...Object . values ( scriptTools ) ,
37+ ...Object . values ( snapshotTools ) ,
38+ ] ;
39+
40+ const tools : ToolDefinition [ ] = [ ] ;
41+ for ( const tool of rawTools ) {
42+ if ( typeof tool === 'function' ) {
43+ // @ts -expect-error none of the tools for now implement the function type tool has type "never"
44+ tools . push ( tool ( args ) as ToolDefinition ) ;
45+ } else {
46+ tools . push ( tool as ToolDefinition ) ;
47+ }
48+ }
3549
36- tools . sort ( ( a , b ) => {
37- return a . name . localeCompare ( b . name ) ;
38- } ) ;
50+ tools . sort ( ( a , b ) => {
51+ return a . name . localeCompare ( b . name ) ;
52+ } ) ;
3953
40- export { tools } ;
54+ return tools ;
55+ } ;
0 commit comments