@@ -13,6 +13,15 @@ import { PHP } from '@php-wasm/universal';
13
13
import { loadNodeRuntime , useHostFilesystem } from '@php-wasm/node' ;
14
14
import { startBridge } from '@php-wasm/xdebug-bridge' ;
15
15
import path from 'path' ;
16
+ import { logger , LogSeverity } from '@php-wasm/logger' ;
17
+
18
+ const LogVerbosity = {
19
+ Quiet : { name : 'quiet' , severity : LogSeverity . Fatal } ,
20
+ Normal : { name : 'normal' , severity : LogSeverity . Info } ,
21
+ Debug : { name : 'debug' , severity : LogSeverity . Debug } ,
22
+ } as const ;
23
+
24
+ type LogVerbosity = ( typeof LogVerbosity ) [ keyof typeof LogVerbosity ] [ 'name' ] ;
16
25
17
26
interface CLIDefaults {
18
27
directive : string [ ] ;
@@ -25,6 +34,8 @@ interface CLIArgs {
25
34
directive : string [ ] ;
26
35
xdebug ?: boolean ;
27
36
experimentalDevtools ?: boolean ;
37
+ verbosity ?: LogVerbosity ;
38
+ help ?: boolean ;
28
39
}
29
40
30
41
function parseCliArgs ( defaults : CLIDefaults ) {
@@ -58,6 +69,14 @@ Usage: php-wasm-cli <command> [options]
58
69
describe : 'Enable experimental browser development tools.' ,
59
70
default : false ,
60
71
} )
72
+ . option ( 'verbosity' , {
73
+ type : 'string' ,
74
+ describe : 'Output logs' ,
75
+ choices : Object . values ( LogVerbosity ) . map (
76
+ ( verbosity ) => verbosity . name
77
+ ) ,
78
+ default : 'normal' ,
79
+ } )
61
80
. strictCommands ( )
62
81
. help ( )
63
82
. epilog (
@@ -112,6 +131,17 @@ export async function parseOptionsAndRunCLI(): Promise<void> {
112
131
config : defaultPhpIniPath ,
113
132
} ) ;
114
133
134
+ if ( args . help ) {
135
+ return ;
136
+ }
137
+
138
+ if ( args . verbosity ) {
139
+ const severity = Object . values ( LogVerbosity ) . find (
140
+ ( v ) => v . name === args . verbosity
141
+ ) ! . severity ;
142
+ logger . setSeverityFilterLevel ( severity ) ;
143
+ }
144
+
115
145
// npm scripts set the TMPDIR env variable
116
146
// PHP accepts a TMPDIR env variable and expects it to
117
147
// be a writable directory within the PHP filesystem.
0 commit comments