50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package tsoptions
|
|
|
|
import (
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/ast"
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/collections"
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/vfs"
|
|
)
|
|
|
|
func getTestParseCommandLineWorkerDiagnostics(decls []*CommandLineOption) *ParseCommandLineWorkerDiagnostics {
|
|
if len(decls) == 0 {
|
|
return CompilerOptionsDidYouMeanDiagnostics
|
|
}
|
|
return getParseCommandLineWorkerDiagnostics(decls)
|
|
}
|
|
|
|
func ParseCommandLineTestWorker(
|
|
decls []*CommandLineOption,
|
|
commandLine []string,
|
|
fs vfs.FS,
|
|
) *TestCommandLineParser {
|
|
parser := &commandLineParser{
|
|
fs: fs,
|
|
workerDiagnostics: CompilerOptionsDidYouMeanDiagnostics,
|
|
fileNames: []string{},
|
|
options: &collections.OrderedMap[string, any]{},
|
|
errors: []*ast.Diagnostic{},
|
|
}
|
|
if len(decls) != 0 {
|
|
parser.workerDiagnostics = getTestParseCommandLineWorkerDiagnostics(decls)
|
|
}
|
|
|
|
parser.optionsMap = GetNameMapFromList(parser.OptionsDeclarations())
|
|
parser.parseStrings(commandLine)
|
|
return &TestCommandLineParser{
|
|
Fs: fs,
|
|
WorkerDiagnostics: parser.workerDiagnostics,
|
|
FileNames: parser.fileNames,
|
|
Options: parser.options,
|
|
Errors: parser.errors,
|
|
}
|
|
}
|
|
|
|
type TestCommandLineParser struct {
|
|
Fs vfs.FS
|
|
WorkerDiagnostics *ParseCommandLineWorkerDiagnostics
|
|
FileNames []string
|
|
Options *collections.OrderedMap[string, any]
|
|
Errors []*ast.Diagnostic
|
|
}
|