From 7bbda36a946295fa58a513792eb546ea4503248a Mon Sep 17 00:00:00 2001 From: Mithrandie Date: Tue, 9 Mar 2021 19:29:50 +0900 Subject: [PATCH] Add the following items to the configuration file. - timezone - ansi_quotes --- csvq_env.json | 2 ++ lib/cmd/default_env.go | 2 ++ lib/cmd/environment.go | 10 +++++++ lib/cmd/flags.go | 24 +++++++++++---- lib/cmd/flags_test.go | 64 ++++++++++++++++++++-------------------- lib/query/transaction.go | 7 ++++- 6 files changed, 71 insertions(+), 38 deletions(-) diff --git a/csvq_env.json b/csvq_env.json index ff16a9ed..22c8741e 100644 --- a/csvq_env.json +++ b/csvq_env.json @@ -1,5 +1,7 @@ { "datetime_format": [], + "timezone": "Local", + "ansi_quotes": false, "interactive_shell": { "history_file": ".csvq_history", "history_limit": 500, diff --git a/lib/cmd/default_env.go b/lib/cmd/default_env.go index 5b32e9be..9ad868ad 100644 --- a/lib/cmd/default_env.go +++ b/lib/cmd/default_env.go @@ -3,6 +3,8 @@ package cmd const DefaultEnvJson = ` { "datetime_format": [], + "timezone": "Local", + "ansi_quotes": false, "interactive_shell": { "history_file": ".csvq_history", "history_limit": 500, diff --git a/lib/cmd/environment.go b/lib/cmd/environment.go index 4cf156c4..b6b6dc50 100644 --- a/lib/cmd/environment.go +++ b/lib/cmd/environment.go @@ -28,6 +28,8 @@ const ( type Environment struct { DatetimeFormat []string `json:"datetime_format"` + Timezone *string `json:"timezone"` + AnsiQuotes *bool `json:"ansi_quotes"` InteractiveShell InteractiveShell `json:"interactive_shell"` EnvironmentVariables map[string]string `json:"environment_variables"` Palette color.PaletteConfig `json:"palette"` @@ -49,6 +51,14 @@ func (e *Environment) Merge(e2 *Environment) { e.DatetimeFormat = AppendStrIfNotExist(e.DatetimeFormat, f) } + if e2.Timezone != nil { + e.Timezone = e2.Timezone + } + + if e2.AnsiQuotes != nil { + e.AnsiQuotes = e2.AnsiQuotes + } + if 0 < len(e2.InteractiveShell.HistoryFile) { e.InteractiveShell.HistoryFile = e2.InteractiveShell.HistoryFile } diff --git a/lib/cmd/flags.go b/lib/cmd/flags.go index c8288176..08404c7a 100644 --- a/lib/cmd/flags.go +++ b/lib/cmd/flags.go @@ -271,24 +271,38 @@ func GetDefaultNumberOfCPU() int { return n } -func NewFlags(env *Environment) *Flags { +func NewFlags(env *Environment) (*Flags, error) { var datetimeFormat []string + var location = "Local" + var AnsiQuotes = false + if env != nil { datetimeFormat = make([]string, 0, len(env.DatetimeFormat)) for _, v := range env.DatetimeFormat { datetimeFormat = AppendStrIfNotExist(datetimeFormat, v) } + + if env.Timezone != nil { + location = *env.Timezone + } + + if env.AnsiQuotes != nil { + AnsiQuotes = *env.AnsiQuotes + } } else { datetimeFormat = make([]string, 0, 4) } - defaultTimeLocation, _ := GetLocation("Local") + defaultTimeLocation, err := GetLocation(location) + if err != nil { + return nil, err + } return &Flags{ Repository: "", - Location: "Local", + Location: location, DatetimeFormat: datetimeFormat, - AnsiQuotes: false, + AnsiQuotes: AnsiQuotes, StrictEqual: false, WaitTimeout: 10, ImportOptions: NewImportOptions(), @@ -298,7 +312,7 @@ func NewFlags(env *Environment) *Flags { CPU: GetDefaultNumberOfCPU(), Stats: false, defaultTimeLocation: defaultTimeLocation, - } + }, nil } func (f *Flags) GetTimeLocation() *time.Location { diff --git a/lib/cmd/flags_test.go b/lib/cmd/flags_test.go index b8c3b2f9..a2e79fac 100644 --- a/lib/cmd/flags_test.go +++ b/lib/cmd/flags_test.go @@ -38,7 +38,7 @@ func TestExportOptions_Copy(t *testing.T) { } func TestFlags_GetTimeLocation(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) local, _ := time.LoadLocation("Local") loc := flags.GetTimeLocation() @@ -55,7 +55,7 @@ func TestFlags_GetTimeLocation(t *testing.T) { } func TestFlags_SetRepository(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetRepository("") if flags.Repository != "" { @@ -87,7 +87,7 @@ func TestFlags_SetRepository(t *testing.T) { } func TestFlags_SetLocation(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) s := "" _ = flags.SetLocation(s) @@ -118,7 +118,7 @@ func TestFlags_SetLocation(t *testing.T) { } func TestFlags_SetDatetimeFormat(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) format := "%Y-%m-%d" flags.SetDatetimeFormat(format) @@ -150,7 +150,7 @@ func TestFlags_SetDatetimeFormat(t *testing.T) { } func TestFlags_SetAnsiQuotes(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetAnsiQuotes(true) if !flags.AnsiQuotes { @@ -159,7 +159,7 @@ func TestFlags_SetAnsiQuotes(t *testing.T) { } func TestFlags_SetStrictEqual(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetStrictEqual(true) if !flags.StrictEqual { @@ -168,7 +168,7 @@ func TestFlags_SetStrictEqual(t *testing.T) { } func TestFlags_SetWaitTimeout(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) var f float64 = -1 flags.SetWaitTimeout(f) @@ -184,7 +184,7 @@ func TestFlags_SetWaitTimeout(t *testing.T) { } func TestFlags_SetImportFormat(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetImportFormat("") if flags.ImportOptions.Format != CSV { @@ -213,7 +213,7 @@ func TestFlags_SetImportFormat(t *testing.T) { } func TestFlags_SetDelimiter(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetDelimiter("") if flags.ImportOptions.Delimiter != ',' { @@ -243,7 +243,7 @@ func TestFlags_SetDelimiter(t *testing.T) { } func TestFlags_SetDelimiterPositions(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetDelimiterPositions("") if flags.ImportOptions.DelimiterPositions != nil { @@ -291,7 +291,7 @@ func TestFlags_SetDelimiterPositions(t *testing.T) { } func TestFlags_SetJsonQuery(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetJsonQuery("{}") if flags.ImportOptions.JsonQuery != "{}" { @@ -300,7 +300,7 @@ func TestFlags_SetJsonQuery(t *testing.T) { } func TestFlags_SetEncoding(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetEncoding("sjis") if flags.ImportOptions.Encoding != text.SJIS { @@ -317,7 +317,7 @@ func TestFlags_SetEncoding(t *testing.T) { } func TestFlags_SetNoHeader(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetNoHeader(true) if !flags.ImportOptions.NoHeader { @@ -326,7 +326,7 @@ func TestFlags_SetNoHeader(t *testing.T) { } func TestFlags_SetWithoutNull(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetWithoutNull(true) if !flags.ImportOptions.WithoutNull { @@ -335,7 +335,7 @@ func TestFlags_SetWithoutNull(t *testing.T) { } func TestFlags_SetFormat(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetFormat("", "") if flags.ExportOptions.Format != TEXT { @@ -438,7 +438,7 @@ func TestFlags_SetFormat(t *testing.T) { } func TestFlags_SetWriteEncoding(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetWriteEncoding("sjis") if flags.ExportOptions.Encoding != text.SJIS { @@ -455,7 +455,7 @@ func TestFlags_SetWriteEncoding(t *testing.T) { } func TestFlags_SetWriteDelimiter(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetWriteDelimiter("") if flags.ExportOptions.Delimiter != ',' { @@ -477,7 +477,7 @@ func TestFlags_SetWriteDelimiter(t *testing.T) { } func TestFlags_SetWriteDelimiterPositions(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetWriteDelimiterPositions("s[1, 2, 3]") if flags.ExportOptions.SingleLine != true { @@ -505,7 +505,7 @@ func TestFlags_SetWriteDelimiterPositions(t *testing.T) { } func TestFlags_SetWithoutHeader(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetWithoutHeader(true) if !flags.ExportOptions.WithoutHeader { @@ -514,7 +514,7 @@ func TestFlags_SetWithoutHeader(t *testing.T) { } func TestFlags_SetLineBreak(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) _ = flags.SetLineBreak("") if flags.ExportOptions.LineBreak != text.LF { @@ -546,7 +546,7 @@ func TestFlags_SetLineBreak(t *testing.T) { } func TestFlags_SetEncloseAll(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetEncloseAll(true) if !flags.ExportOptions.EncloseAll { @@ -555,7 +555,7 @@ func TestFlags_SetEncloseAll(t *testing.T) { } func TestFlags_SetJsonEscape(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) s := "backslash" _ = flags.SetJsonEscape(s) @@ -586,7 +586,7 @@ func TestFlags_SetJsonEscape(t *testing.T) { } func TestFlags_SetPrettyPrint(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetPrettyPrint(true) if !flags.ExportOptions.PrettyPrint { @@ -595,7 +595,7 @@ func TestFlags_SetPrettyPrint(t *testing.T) { } func TestFlags_SetStripEndingLineBreak(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetStripEndingLineBreak(true) if !flags.ExportOptions.StripEndingLineBreak { @@ -605,7 +605,7 @@ func TestFlags_SetStripEndingLineBreak(t *testing.T) { } func TestFlags_SetEastAsianEncoding(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetEastAsianEncoding(true) if !flags.ExportOptions.EastAsianEncoding { @@ -614,7 +614,7 @@ func TestFlags_SetEastAsianEncoding(t *testing.T) { } func TestFlags_SetCountDiacriticalSign(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetCountDiacriticalSign(true) if !flags.ExportOptions.CountDiacriticalSign { @@ -623,7 +623,7 @@ func TestFlags_SetCountDiacriticalSign(t *testing.T) { } func TestFlags_SetCountFormatCode(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetCountFormatCode(true) if !flags.ExportOptions.CountFormatCode { @@ -632,7 +632,7 @@ func TestFlags_SetCountFormatCode(t *testing.T) { } func TestFlags_SetColor(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetColor(true) if !flags.ExportOptions.Color { @@ -642,7 +642,7 @@ func TestFlags_SetColor(t *testing.T) { } func TestFlags_SetQuiet(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetQuiet(true) if !flags.Quiet { @@ -651,7 +651,7 @@ func TestFlags_SetQuiet(t *testing.T) { } func TestFlags_SetLimitRecursion(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetLimitRecursion(int64(-100)) if flags.LimitRecursion != -1 { @@ -665,7 +665,7 @@ func TestFlags_SetLimitRecursion(t *testing.T) { } func TestFlags_SetCPU(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetCPU(0) expect := 1 @@ -680,7 +680,7 @@ func TestFlags_SetCPU(t *testing.T) { } func TestFlags_SetStats(t *testing.T) { - flags := NewFlags(nil) + flags, _ := NewFlags(nil) flags.SetStats(true) if !flags.Stats { diff --git a/lib/query/transaction.go b/lib/query/transaction.go index 803f85d7..1bd2c8e6 100644 --- a/lib/query/transaction.go +++ b/lib/query/transaction.go @@ -52,12 +52,17 @@ func NewTransaction(ctx context.Context, defaultWaitTimeout time.Duration, retry if err != nil { return nil, ConvertLoadConfigurationError(err) } - flags := cmd.NewFlags(environment) + + flags, err := cmd.NewFlags(environment) + if err != nil { + return nil, ConvertLoadConfigurationError(err) + } palette, err := cmd.NewPalette(environment) if err != nil { return nil, ConvertLoadConfigurationError(err) } + palette.Disable() return &Transaction{