68 lines
2.5 KiB
Go
68 lines
2.5 KiB
Go
package tsoptions
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/diagnostics"
|
|
)
|
|
|
|
type DidYouMeanOptionsDiagnostics struct {
|
|
alternateMode *AlternateModeDiagnostics
|
|
OptionDeclarations []*CommandLineOption
|
|
UnknownOptionDiagnostic *diagnostics.Message
|
|
UnknownDidYouMeanDiagnostic *diagnostics.Message
|
|
}
|
|
|
|
type AlternateModeDiagnostics struct {
|
|
diagnostic *diagnostics.Message
|
|
optionsNameMap *NameMap
|
|
}
|
|
|
|
type ParseCommandLineWorkerDiagnostics struct {
|
|
didYouMean DidYouMeanOptionsDiagnostics
|
|
optionsNameMap *NameMap
|
|
optionsNameMapOnce sync.Once
|
|
OptionTypeMismatchDiagnostic *diagnostics.Message
|
|
}
|
|
|
|
var CompilerOptionsDidYouMeanDiagnostics = getParseCommandLineWorkerDiagnostics(OptionsDeclarations)
|
|
|
|
func getParseCommandLineWorkerDiagnostics(decls []*CommandLineOption) *ParseCommandLineWorkerDiagnostics {
|
|
// this will only return the correct diagnostics for `compiler` mode, and is factored into a function for testing reasons.
|
|
return &ParseCommandLineWorkerDiagnostics{
|
|
didYouMean: DidYouMeanOptionsDiagnostics{
|
|
alternateMode: &AlternateModeDiagnostics{
|
|
diagnostic: diagnostics.Compiler_option_0_may_only_be_used_with_build,
|
|
optionsNameMap: BuildNameMap,
|
|
},
|
|
OptionDeclarations: decls,
|
|
UnknownOptionDiagnostic: diagnostics.Unknown_compiler_option_0,
|
|
UnknownDidYouMeanDiagnostic: diagnostics.Unknown_compiler_option_0_Did_you_mean_1,
|
|
},
|
|
OptionTypeMismatchDiagnostic: diagnostics.Compiler_option_0_expects_an_argument,
|
|
}
|
|
}
|
|
|
|
var watchOptionsDidYouMeanDiagnostics = &ParseCommandLineWorkerDiagnostics{
|
|
didYouMean: DidYouMeanOptionsDiagnostics{
|
|
// no alternateMode
|
|
OptionDeclarations: optionsForWatch,
|
|
UnknownOptionDiagnostic: diagnostics.Unknown_watch_option_0,
|
|
UnknownDidYouMeanDiagnostic: diagnostics.Unknown_watch_option_0_Did_you_mean_1,
|
|
},
|
|
OptionTypeMismatchDiagnostic: diagnostics.Watch_option_0_requires_a_value_of_type_1,
|
|
}
|
|
|
|
var buildOptionsDidYouMeanDiagnostics = &ParseCommandLineWorkerDiagnostics{
|
|
didYouMean: DidYouMeanOptionsDiagnostics{
|
|
alternateMode: &AlternateModeDiagnostics{
|
|
diagnostic: diagnostics.Compiler_option_0_may_not_be_used_with_build,
|
|
optionsNameMap: CompilerNameMap,
|
|
},
|
|
OptionDeclarations: BuildOpts,
|
|
UnknownOptionDiagnostic: diagnostics.Unknown_build_option_0,
|
|
UnknownDidYouMeanDiagnostic: diagnostics.Unknown_build_option_0_Did_you_mean_1,
|
|
},
|
|
OptionTypeMismatchDiagnostic: diagnostics.Build_option_0_requires_a_value_of_type_1,
|
|
}
|