Skip to content

Commit bf955ff

Browse files
committed
Add tsgo options to parser
1 parent 5ef1141 commit bf955ff

File tree

7 files changed

+79
-20
lines changed

7 files changed

+79
-20
lines changed

cmd/tsgo/main.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,10 @@ func parseArgs() *cliOptions {
107107
flag.Var(&opts.tsc.showConfig, "showConfig", diagnostics.Print_the_final_configuration_instead_of_building.Format())
108108
flag.BoolVar(&opts.tsc.version, "version", false, diagnostics.Print_the_compiler_s_version.Format())
109109

110-
flag.BoolVar(&opts.devel.quiet, "q", false, "Do not print diagnostics.")
111-
flag.BoolVar(&opts.devel.quiet, "quiet", false, "Do not print diagnostics.")
112-
flag.BoolVar(&opts.devel.singleThreaded, "singleThreaded", false, "Run in single threaded mode.")
113-
flag.StringVar(&opts.devel.pprofDir, "pprofDir", "", "Generate pprof CPU/memory profiles to the given directory.")
110+
flag.BoolVar(&opts.devel.quiet, "q", false, diagnostics.Do_not_print_diagnostics.Format())
111+
flag.BoolVar(&opts.devel.quiet, "quiet", false, diagnostics.Do_not_print_diagnostics.Format())
112+
flag.BoolVar(&opts.devel.singleThreaded, "singleThreaded", false, diagnostics.Run_in_single_threaded_mode.Format())
113+
flag.StringVar(&opts.devel.pprofDir, "pprofDir", "", diagnostics.Generate_pprof_CPU_Slashmemory_profiles_to_the_given_directory.Format())
114114
flag.Parse()
115115

116116
if len(flag.Args()) > 0 {

internal/core/compileroptions.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ type CompilerOptions struct {
136136
TscBuild Tristate `json:"tscBuild,omitzero"`
137137
Help Tristate `json:"help,omitzero"`
138138
All Tristate `json:"all,omitzero"`
139+
140+
PprofDir string `json:"pprofDir,omitzero"`
141+
SingleThreaded Tristate `json:"singleThreaded,omitzero"`
142+
Quiet Tristate `json:"quiet,omitzero"`
139143
}
140144

141145
func (options *CompilerOptions) GetEmitScriptTarget() ScriptTarget {

internal/diagnostics/diagnostics_generated.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"Do not print diagnostics.": {
3+
"category": "Message",
4+
"code": 100000
5+
},
6+
"Run in single threaded mode.": {
7+
"category": "Message",
8+
"code": 100001
9+
},
10+
"Generate pprof CPU/memory profiles to the given directory.": {
11+
"category": "Message",
12+
"code": 100002
13+
}
14+
}

internal/diagnostics/generate.go

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ import (
1111
"go/format"
1212
"go/token"
1313
"log"
14+
"maps"
1415
"os"
1516
"path/filepath"
1617
"regexp"
18+
"runtime"
1719
"slices"
1820
"strconv"
1921
"strings"
@@ -36,12 +38,6 @@ type diagnosticMessage struct {
3638
func main() {
3739
log.SetFlags(log.LstdFlags | log.Lshortfile)
3840

39-
input := filepath.Join(repo.TypeScriptSubmodulePath, "src", "compiler", "diagnosticMessages.json")
40-
if _, err := os.Stat(input); err != nil {
41-
log.Fatalf("failed to find input file: %v", err)
42-
return
43-
}
44-
4541
output := flag.String("output", "", "path to the output diagnostics_generated.go file")
4642
flag.Parse()
4743

@@ -50,18 +46,16 @@ func main() {
5046
return
5147
}
5248

53-
inputFile, err := os.Open(input)
54-
if err != nil {
55-
log.Fatalf("failed to open input file: %v", err)
56-
return
57-
}
58-
defer inputFile.Close()
49+
rawDiagnosticMessages := readRawMessages(filepath.Join(repo.TypeScriptSubmodulePath, "src", "compiler", "diagnosticMessages.json"))
5950

60-
var rawDiagnosticMessages map[string]*diagnosticMessage
61-
if err := json.NewDecoder(inputFile).Decode(&rawDiagnosticMessages); err != nil {
62-
log.Fatalf("failed to decode input file: %v", err)
63-
return
51+
_, filename, _, ok := runtime.Caller(0)
52+
if !ok {
53+
panic("could not get current filename")
6454
}
55+
filename = filepath.FromSlash(filename) // runtime.Caller always returns forward slashes; https://go.dev/issues/3335, https://go.dev/cl/603275
56+
57+
rawExtraMessages := readRawMessages(filepath.Join(filepath.Dir(filename), "extraDiagnosticMessages.json"))
58+
maps.Copy(rawDiagnosticMessages, rawExtraMessages)
6559

6660
diagnosticMessages := make([]*diagnosticMessage, 0, len(rawDiagnosticMessages))
6761
for k, v := range rawDiagnosticMessages {
@@ -109,6 +103,23 @@ func main() {
109103
}
110104
}
111105

106+
func readRawMessages(p string) map[string]*diagnosticMessage {
107+
file, err := os.Open(p)
108+
if err != nil {
109+
log.Fatalf("failed to open file: %v", err)
110+
return nil
111+
}
112+
defer file.Close()
113+
114+
var rawMessages map[string]*diagnosticMessage
115+
if err := json.NewDecoder(file).Decode(&rawMessages); err != nil {
116+
log.Fatalf("failed to decode file: %v", err)
117+
return nil
118+
}
119+
120+
return rawMessages
121+
}
122+
112123
var (
113124
multipleUnderscoreRegexp = regexp.MustCompile(`_+`)
114125
leadingUnderscoreUnlessDigitRegexp = regexp.MustCompile(`^_+(\D)`)

internal/tsoptions/declscompiler.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ var optionsForCompiler = []*CommandLineOption{
105105
Description: diagnostics.Emit_a_v8_CPU_profile_of_the_compiler_run_for_debugging,
106106
DefaultValueDescription: "profile.cpuprofile",
107107
},
108+
108109
{
109110
Name: "generateTrace",
110111
Kind: CommandLineOptionTypeString,
@@ -210,6 +211,26 @@ var optionsForCompiler = []*CommandLineOption{
210211
Description: diagnostics.Set_the_language_of_the_messaging_from_TypeScript_This_does_not_affect_emit,
211212
DefaultValueDescription: diagnostics.Platform_specific,
212213
},
214+
215+
{
216+
Name: "quiet",
217+
Kind: CommandLineOptionTypeBoolean,
218+
Category: diagnostics.Command_line_Options,
219+
Description: diagnostics.Do_not_print_diagnostics,
220+
},
221+
{
222+
Name: "singleThreaded",
223+
Kind: CommandLineOptionTypeBoolean,
224+
Category: diagnostics.Command_line_Options,
225+
Description: diagnostics.Run_in_single_threaded_mode,
226+
},
227+
{
228+
Name: "pprofDir",
229+
Kind: CommandLineOptionTypeString,
230+
isFilePath: true,
231+
Category: diagnostics.Command_line_Options,
232+
Description: diagnostics.Generate_pprof_CPU_Slashmemory_profiles_to_the_given_directory,
233+
},
213234
}
214235

215236
var commonOptionsWithBuild = []*CommandLineOption{

internal/tsoptions/parsinghelpers.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,12 @@ func parseCompilerOptions(key string, value any, allOptions *core.CompilerOption
411411
allOptions.NewLine = value.(core.NewLineKind)
412412
case "watch":
413413
allOptions.Watch = parseTristate(value)
414+
case "pprofDir":
415+
allOptions.PprofDir = parseString(value)
416+
case "singleThreaded":
417+
allOptions.SingleThreaded = parseTristate(value)
418+
case "quiet":
419+
allOptions.Quiet = parseTristate(value)
414420
default:
415421
// different than any key above
416422
return false

0 commit comments

Comments
 (0)