@@ -5,6 +5,7 @@ open System.IO
55
66open Argu
77open System.Text .RegularExpressions
8+ open ShaderMinifier
89
910type CliArguments =
1011 | Update_ Golden
@@ -135,8 +136,10 @@ let canBeCompiled lang stage content =
135136 canBeCompiledByGlslang lang stage fullsrc && (( lang = " hlsl" ) || canBeCompiledByDriver stage fullsrc)
136137
137138let doMinify options file content =
138- let arr = ShaderMinifier.minify options [| file, content|] |> fst |> Array.map ( fun s -> s.code)
139- ShaderMinifier.print arr.[ 0 ]
139+ let minifier = Minifier( options, [| file, content|])
140+ use tw = new System.IO.StringWriter()
141+ minifier.Format( tw)
142+ tw.ToString()
140143
141144let testMinifyAndCompile options lang ( file : string ) =
142145 try
@@ -164,7 +167,7 @@ let testPerformance files =
164167 let contents = files |> Array.map File.ReadAllText
165168 let stopwatch = Stopwatch.StartNew()
166169 for str in contents do
167- let options = Options.init([| " --format" ; " text" ; " --no-remove-unused" ; " fake.frag " |])
170+ let options = Options.init([| " --format" ; " text" ; " --no-remove-unused" |])
168171 doMinify options " perf test" str |> ignore< string>
169172 let time = stopwatch.Elapsed
170173 printfn " %i files minified in %f seconds." files.Length time.TotalSeconds
@@ -177,29 +180,32 @@ let runCommand argv =
177180 let cleanString ( s : string ) =
178181 let s = s.Replace( " \r\n " , " \n " ) .Trim()
179182 versionRegex.Replace( s, " " )
180- let options , filenames = Options.initFiles argv
183+ let options , filenames = Minifier.ParseOptionsWithFiles ( argv)
181184 let expected =
182185 try File.ReadAllText options.outputName |> cleanString
183186 with _ when cliArgs.Contains( Update_ Golden) -> " "
184187 | _ -> reraise ()
185188 let files = [| for f in filenames -> f, File.ReadAllText( f)|]
186- let shaders , exportedNames = ShaderMinifier.minify options files
189+ let minifier = Minifier ( options, files)
187190 let result =
188191 use out = new StringWriter()
189- ShaderMinifier.format options out shaders exportedNames
192+ minifier.Format ( out)
190193 out.ToString() |> cleanString
194+
191195 let options = { options with outputFormat = Options.OutputFormat.IndentedText; exportKkpSymbolMaps = false }
192- for shader in shaders do
196+ if filenames.Length = 1 then
197+ let shader = minifier.GetShaders[ 0 ]
193198 let resultindented =
194199 use out = new StringWriter()
195- ShaderMinifier.format options out [| shader |] exportedNames
200+ minifier.Format ( out, options )
196201 out.ToString() |> cleanString
197202 let outdir = " tests/out/" + Regex.Replace( options.outputName, @" ^tests/(.*)/[^/]*$" , @" $1" ) + " /"
198203 let split = Regex.Match( shader.mangledFilename, @" (^.*)_([^_]+)$" ) .Groups
199204 let name = split[ 1 ]. Value
200205 let ext = split[ 2 ]. Value
201206 Directory.CreateDirectory outdir |> ignore
202207 File.WriteAllText( outdir + name + " .minind." + ext, resultindented + " \n " )
208+
203209 if result = expected then
204210 printfn " Success: %s " options.outputName
205211 0
@@ -265,7 +271,7 @@ let main argv =
265271 let realTests = Directory.GetFiles( " tests/real" , " *.frag" )
266272 for f in unitTests do
267273 // tests with no #version default to 110
268- let options = Options.init([| " --format" ; " text" ; " --no-remove-unused" ; " fake.frag " |])
274+ let options = Options.init([| " --format" ; " text" ; " --no-remove-unused" |])
269275 if not ( testMinifyAndCompile options " 110" f) then
270276 failures <- failures + 1
271277 testPerformance ( Seq.concat [ realTests; unitTests] |> Seq.toArray)
0 commit comments