From 02e4929873c7fdd08fd6357b3a3e3c5a31aaca90 Mon Sep 17 00:00:00 2001 From: Albert Wolszon Date: Fri, 8 Dec 2023 12:39:16 +0100 Subject: [PATCH 1/5] Replace deprecated pkg/errors with errors package --- cmd/convert.go | 3 +-- cmd/poe.go | 11 +++++------ cmd/poe_options_selector.go | 5 +++-- convert/arb2poe/arb_message_to_poe_term.go | 2 +- convert/arb2poe/arb_parser.go | 14 ++++++-------- convert/arb2poe/converter.go | 9 +++++---- convert/poe2arb/converter.go | 9 +++++---- convert/poe2arb/parser_test.go | 2 +- flutter/flutter_config.go | 9 +++++---- flutter/locale.go | 7 +++---- go.mod | 1 - go.sum | 2 -- poeditor/client.go | 20 +++++++++----------- 13 files changed, 44 insertions(+), 50 deletions(-) diff --git a/cmd/convert.go b/cmd/convert.go index 4a937ab..2bd5497 100644 --- a/cmd/convert.go +++ b/cmd/convert.go @@ -6,7 +6,6 @@ import ( "github.com/leancodepl/poe2arb/convert/poe2arb" "github.com/leancodepl/poe2arb/flutter" - "github.com/pkg/errors" "github.com/spf13/cobra" ) @@ -45,7 +44,7 @@ func runConvertIo(cmd *cobra.Command, args []string) error { flutterLocale, err := flutter.ParseLocale(lang) if err != nil { - return errors.Wrap(err, fmt.Sprintf("failed to parse locale %s", lang)) + return fmt.Errorf("failed to parse locale %s: %w", lang, err) } conv := poe2arb.NewConverter(os.Stdin, &poe2arb.ConverterOptions{ diff --git a/cmd/poe.go b/cmd/poe.go index b421333..0c5637c 100644 --- a/cmd/poe.go +++ b/cmd/poe.go @@ -1,6 +1,7 @@ package cmd import ( + "errors" "fmt" "net/http" "os" @@ -12,7 +13,6 @@ import ( "github.com/leancodepl/poe2arb/flutter" "github.com/leancodepl/poe2arb/log" "github.com/leancodepl/poe2arb/poeditor" - "github.com/pkg/errors" "github.com/spf13/cobra" ) @@ -81,15 +81,14 @@ func runPoe(cmd *cobra.Command, args []string) error { for _, lang := range langs { flutterLocale, err := flutter.ParseLocale(lang.Code) if err != nil { - return errors.Wrap(err, fmt.Sprintf("parsing %s language code", lang.Code)) + return fmt.Errorf("parsing %s language code: %w", lang.Code, err) } template := options.TemplateLocale == flutterLocale err = poeCmd.ExportLanguage(lang, flutterLocale, template) if err != nil { - msg := fmt.Sprintf("exporting %s (%s) language", lang.Name, lang.Code) - return errors.Wrap(err, msg) + return fmt.Errorf("exporting %s (%s) language: %w", lang.Name, lang.Code, err) } } @@ -234,14 +233,14 @@ func (c *poeCommand) ExportLanguage(lang poeditor.Language, flutterLocale flutte resp, err := http.Get(url) if err != nil { logSub.Error("making HTTP request failed: " + err.Error()) - return errors.Wrap(err, "making HTTP request for export") + return fmt.Errorf("making HTTP request for export: %w", err) } filePath := path.Join(c.options.OutputDir, fmt.Sprintf("%s%s.arb", c.options.ARBPrefix, flutterLocale)) file, err := os.Create(filePath) if err != nil { logSub.Error("creating file failed: " + err.Error()) - return errors.Wrap(err, "creating ARB file") + return fmt.Errorf("creating ARB file: %w", err) } defer file.Close() diff --git a/cmd/poe_options_selector.go b/cmd/poe_options_selector.go index e1a51bd..dc0b699 100644 --- a/cmd/poe_options_selector.go +++ b/cmd/poe_options_selector.go @@ -1,11 +1,12 @@ package cmd import ( + "errors" + "fmt" "path/filepath" "strings" "github.com/leancodepl/poe2arb/flutter" - "github.com/pkg/errors" "github.com/spf13/pflag" "golang.org/x/text/language" ) @@ -126,7 +127,7 @@ func (s *poeOptionsSelector) SelectARBPrefixAndTemplate() (prefix string, templa templateLocaleString := strings.TrimSuffix(strings.TrimPrefix(s.l10n.TemplateArbFile, prefix), ".arb") templateLocale, err = flutter.ParseLocale(templateLocaleString) if err != nil { - return "", flutter.Locale{}, errors.Wrap(err, "could not parse template locale") + return "", flutter.Locale{}, fmt.Errorf("could not parse template locale: %w", err) } return prefix, templateLocale, nil diff --git a/convert/arb2poe/arb_message_to_poe_term.go b/convert/arb2poe/arb_message_to_poe_term.go index 3ce6d28..0dcd2f9 100644 --- a/convert/arb2poe/arb_message_to_poe_term.go +++ b/convert/arb2poe/arb_message_to_poe_term.go @@ -1,11 +1,11 @@ package arb2poe import ( + "errors" "regexp" "strings" "github.com/leancodepl/poe2arb/convert" - "github.com/pkg/errors" ) func arbMessageToPOETerm( diff --git a/convert/arb2poe/arb_parser.go b/convert/arb2poe/arb_parser.go index 36948a8..09a7caf 100644 --- a/convert/arb2poe/arb_parser.go +++ b/convert/arb2poe/arb_parser.go @@ -2,13 +2,13 @@ package arb2poe import ( "encoding/json" + "errors" "fmt" "io" "strings" "github.com/leancodepl/poe2arb/convert" "github.com/leancodepl/poe2arb/flutter" - "github.com/pkg/errors" orderedmap "github.com/wk8/go-ordered-map/v2" ) @@ -16,7 +16,7 @@ func parseARB(r io.Reader) (locale flutter.Locale, messages []*convert.ARBMessag var arb map[string]any err = json.NewDecoder(r).Decode(&arb) if err != nil { - err = errors.Wrap(err, "failed to decode ARB") + err = fmt.Errorf("failed to decode ARB: %w", err) return flutter.Locale{}, nil, err } @@ -28,7 +28,7 @@ func parseARB(r io.Reader) (locale flutter.Locale, messages []*convert.ARBMessag locale, err = flutter.ParseLocale(lang) if err != nil { - err = errors.Wrap(err, fmt.Sprintf("parsing locale %s", lang)) + err = fmt.Errorf("parsing locale %s: %w", lang, err) return flutter.Locale{}, nil, err } @@ -39,7 +39,7 @@ func parseARB(r io.Reader) (locale flutter.Locale, messages []*convert.ARBMessag var translation string if translation, ok = value.(string); !ok { - err = errors.Errorf("invalid translation value for %s", key) + err = fmt.Errorf("invalid translation value for %s", key) return flutter.Locale{}, nil, err } @@ -51,8 +51,7 @@ func parseARB(r io.Reader) (locale flutter.Locale, messages []*convert.ARBMessag if attrs, ok := arb["@"+key].(map[string]any); ok { encoded, err := json.Marshal(attrs) if err != nil { - return flutter.Locale{}, nil, - errors.Wrap(err, fmt.Sprintf("failed to encode attributes for %s", key)) + return flutter.Locale{}, nil, fmt.Errorf("failed to encode attributes for %s: %w", key, err) } var attributes struct { @@ -63,8 +62,7 @@ func parseARB(r io.Reader) (locale flutter.Locale, messages []*convert.ARBMessag } err = json.Unmarshal(encoded, &attributes) if err != nil { - return flutter.Locale{}, nil, - errors.Wrap(err, fmt.Sprintf("failed to decode attributes for %s", key)) + return flutter.Locale{}, nil, fmt.Errorf("failed to decode attributes for %s: %w", key, err) } attrsOm := orderedmap.New[string, *convert.ARBPlaceholder]() diff --git a/convert/arb2poe/converter.go b/convert/arb2poe/converter.go index 27e38a4..1c9b03d 100644 --- a/convert/arb2poe/converter.go +++ b/convert/arb2poe/converter.go @@ -3,11 +3,12 @@ package arb2poe import ( "encoding/json" + "errors" + "fmt" "io" "github.com/leancodepl/poe2arb/convert" "github.com/leancodepl/poe2arb/flutter" - "github.com/pkg/errors" ) type Converter struct { @@ -30,7 +31,7 @@ var NoTermsError = errors.New("no terms to convert") func (c *Converter) Convert(output io.Writer) (lang flutter.Locale, err error) { lang, messages, err := parseARB(c.input) if err != nil { - return flutter.Locale{}, errors.Wrap(err, "failed to parse ARB") + return flutter.Locale{}, fmt.Errorf("failed to parse ARB: %w", err) } template := c.templateLocale == lang @@ -39,7 +40,7 @@ func (c *Converter) Convert(output io.Writer) (lang flutter.Locale, err error) { for _, message := range messages { poeTerm, err := arbMessageToPOETerm(message, !template, c.termPrefix) if err != nil { - return flutter.Locale{}, errors.Wrapf(err, "decoding term %q failed", message.Name) + return flutter.Locale{}, fmt.Errorf("decoding term %q failed: %w", message.Name, err) } poeTerms = append(poeTerms, poeTerm) @@ -51,7 +52,7 @@ func (c *Converter) Convert(output io.Writer) (lang flutter.Locale, err error) { err = json.NewEncoder(output).Encode(poeTerms) if err != nil { - return flutter.Locale{}, errors.Wrap(err, "failed to encode POEditor JSON") + return flutter.Locale{}, fmt.Errorf("failed to encode POEditor JSON: %w", err) } return lang, nil diff --git a/convert/poe2arb/converter.go b/convert/poe2arb/converter.go index e09c8c2..08aab36 100644 --- a/convert/poe2arb/converter.go +++ b/convert/poe2arb/converter.go @@ -3,13 +3,14 @@ package poe2arb import ( "encoding/json" + "errors" + "fmt" "io" "regexp" "strings" "github.com/leancodepl/poe2arb/convert" "github.com/leancodepl/poe2arb/flutter" - "github.com/pkg/errors" orderedmap "github.com/wk8/go-ordered-map/v2" ) @@ -47,7 +48,7 @@ func (c *Converter) Convert(output io.Writer) error { var jsonContents []*convert.POETerm err := json.NewDecoder(c.input).Decode(&jsonContents) if err != nil { - return errors.Wrap(err, "decoding json failed") + return fmt.Errorf("decoding json failed: %w", err) } arb := orderedmap.New[string, any]() @@ -67,7 +68,7 @@ func (c *Converter) Convert(output io.Writer) error { message, err := c.parseTerm(term) if err != nil { - err = errors.Wrapf(err, `decoding term "%s" failed`, term.Term) + err = fmt.Errorf(`decoding term "%s" failed: %w`, term.Term, err) errs = append(errs, err) continue } @@ -100,7 +101,7 @@ func (c *Converter) Convert(output io.Writer) error { encoder.SetIndent("", " ") // 4 spaces err = encoder.Encode(arb) - return errors.Wrap(err, "encoding arb failed") + return fmt.Errorf("encoding arb failed: %w", err) } func errorsToError(errs []error) error { diff --git a/convert/poe2arb/parser_test.go b/convert/poe2arb/parser_test.go index ed390ac..dca3323 100644 --- a/convert/poe2arb/parser_test.go +++ b/convert/poe2arb/parser_test.go @@ -1,9 +1,9 @@ package poe2arb import ( + "errors" "testing" - "github.com/pkg/errors" "github.com/stretchr/testify/assert" ) diff --git a/flutter/flutter_config.go b/flutter/flutter_config.go index 876da53..4ec3921 100644 --- a/flutter/flutter_config.go +++ b/flutter/flutter_config.go @@ -3,11 +3,12 @@ package flutter import ( + "errors" + "fmt" "os" "path" "path/filepath" - "github.com/pkg/errors" "gopkg.in/yaml.v3" ) @@ -63,7 +64,7 @@ func NewFromDirectory(dir string) (*FlutterConfig, error) { // l10n.yaml file found err = yaml.NewDecoder(l10nFile).Decode(&l10n) if err != nil { - return nil, errors.Wrap(err, "failure decoding l10n.yaml") + return nil, fmt.Errorf("failure decoding l10n.yaml: %w", err) } } @@ -80,7 +81,7 @@ func walkUpForPubspec(dir string) (file *os.File, err error) { } if !errors.Is(err, os.ErrNotExist) { - return nil, errors.Wrap(err, "failure searching for pubspec.yaml") + return nil, fmt.Errorf("failure searching for pubspec.yaml: %w", err) } parent := filepath.Dir(dir) @@ -98,7 +99,7 @@ func getL10nFile(pubspecDir string) (*os.File, error) { file, err := os.Open(path.Join(pubspecDir, "l10n.yaml")) if err != nil { if !errors.Is(err, os.ErrNotExist) { - return nil, errors.Wrap(err, "failure reading l10n.yaml") + return nil, fmt.Errorf("failure reading l10n.yaml: %w", err) } return nil, nil diff --git a/flutter/locale.go b/flutter/locale.go index 05623fb..0bce291 100644 --- a/flutter/locale.go +++ b/flutter/locale.go @@ -1,10 +1,9 @@ package flutter import ( + "fmt" "slices" "strings" - - "github.com/pkg/errors" ) type Locale struct { @@ -48,7 +47,7 @@ func ParseLocale(locale string) (Locale, error) { }, nil case 3: if !slices.Contains(knownScripts, strings.ToLower(parts[1])) { - return Locale{}, errors.Errorf("invalid script: %s", parts[1]) + return Locale{}, fmt.Errorf(`invalid script "%s"`, parts[1]) } return Locale{ @@ -57,7 +56,7 @@ func ParseLocale(locale string) (Locale, error) { Country: strings.ToUpper(parts[2]), }, nil default: - return Locale{}, errors.Errorf("invalid locale: %s", locale) + return Locale{}, fmt.Errorf(`invalid locale "%s"`, locale) } } diff --git a/go.mod b/go.mod index 9d88b84..bce6a7b 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,6 @@ go 1.21 require ( github.com/TwiN/go-color v1.4.0 github.com/caarlos0/env/v6 v6.10.1 - github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.6.1 github.com/wk8/go-ordered-map/v2 v2.1.1 gopkg.in/yaml.v3 v3.0.1 diff --git a/go.sum b/go.sum index 8316137..298564a 100644 --- a/go.sum +++ b/go.sum @@ -24,8 +24,6 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= diff --git a/poeditor/client.go b/poeditor/client.go index 181fe92..fd85f08 100644 --- a/poeditor/client.go +++ b/poeditor/client.go @@ -12,8 +12,6 @@ import ( "net/http" "net/url" "strings" - - "github.com/pkg/errors" ) const apiURL = "https://api.poeditor.com/v2" @@ -50,19 +48,19 @@ func (c *Client) request(path string, params map[string]string, respBody interfa req, err := http.NewRequest("POST", url, body) if err != nil { - return errors.Wrap(err, "creating HTTP request") + return fmt.Errorf("creating HTTP request: %w", err) } req.Header.Add("Content-Type", "application/x-www-form-urlencoded") resp, err := c.client.Do(req) if err != nil { - return errors.Wrap(err, "making HTTP request") + return fmt.Errorf("making HTTP request: %w", err) } err = json.NewDecoder(resp.Body).Decode(&respBody) if err != nil { - return errors.Wrap(err, "decoding response") + return fmt.Errorf("decoding response: %w", err) } return nil @@ -137,10 +135,10 @@ func (c *Client) Upload(projectID, languageCode string, file io.Reader) error { fileWriter, err := w.CreateFormFile("file", "file.json") if err != nil { - return errors.Wrap(err, "creating form field") + return fmt.Errorf("creating form field: %w", err) } if _, err = io.Copy(fileWriter, file); err != nil { - return errors.Wrap(err, "copying file to form field") + return fmt.Errorf("copying file to form field: %w", err) } w.WriteField("language", languageCode) @@ -148,25 +146,25 @@ func (c *Client) Upload(projectID, languageCode string, file io.Reader) error { err = w.Close() if err != nil { - return errors.Wrap(err, "closing multipart writer") + return fmt.Errorf("closing multipart writer: %w", err) } req, err := http.NewRequest("POST", url, &b) if err != nil { - return errors.Wrap(err, "creating HTTP request") + return fmt.Errorf("creating HTTP request: %w", err) } req.Header.Set("Content-Type", w.FormDataContentType()) resp, err := c.client.Do(req) if err != nil { - return errors.Wrap(err, "making HTTP request") + return fmt.Errorf("making HTTP request: %w", err) } var respBody baseResponse err = json.NewDecoder(resp.Body).Decode(&respBody) if err != nil { - return errors.Wrap(err, "decoding response") + return fmt.Errorf("decoding response: %w", err) } if err := handleRequestErr(err, respBody); err != nil { From 3b82a7374235e9239318324f136194ae6ed731b0 Mon Sep 17 00:00:00 2001 From: Albert Wolszon Date: Fri, 8 Dec 2023 12:46:22 +0100 Subject: [PATCH 2/5] Fix fmt.Errorf return for no error --- convert/poe2arb/converter.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/convert/poe2arb/converter.go b/convert/poe2arb/converter.go index 08aab36..8accdda 100644 --- a/convert/poe2arb/converter.go +++ b/convert/poe2arb/converter.go @@ -101,7 +101,11 @@ func (c *Converter) Convert(output io.Writer) error { encoder.SetIndent("", " ") // 4 spaces err = encoder.Encode(arb) - return fmt.Errorf("encoding arb failed: %w", err) + if err != nil { + return fmt.Errorf("encoding arb failed: %w", err) + } else { + return nil + } } func errorsToError(errs []error) error { From 441b8ce9584c9037f95033107b1cfa43f9dc4d62 Mon Sep 17 00:00:00 2001 From: Albert Wolszon Date: Fri, 8 Dec 2023 12:47:35 +0100 Subject: [PATCH 3/5] Output files with lowercase locales --- cmd/poe.go | 2 +- flutter/locale.go | 4 ++++ flutter/locale_test.go | 22 ++++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/cmd/poe.go b/cmd/poe.go index 0c5637c..a7d7de8 100644 --- a/cmd/poe.go +++ b/cmd/poe.go @@ -236,7 +236,7 @@ func (c *poeCommand) ExportLanguage(lang poeditor.Language, flutterLocale flutte return fmt.Errorf("making HTTP request for export: %w", err) } - filePath := path.Join(c.options.OutputDir, fmt.Sprintf("%s%s.arb", c.options.ARBPrefix, flutterLocale)) + filePath := path.Join(c.options.OutputDir, fmt.Sprintf("%s%s.arb", c.options.ARBPrefix, flutterLocale.StringFilename())) file, err := os.Create(filePath) if err != nil { logSub.Error("creating file failed: " + err.Error()) diff --git a/flutter/locale.go b/flutter/locale.go index 0bce291..4cb8d3f 100644 --- a/flutter/locale.go +++ b/flutter/locale.go @@ -71,6 +71,10 @@ func (l Locale) String() string { return locale } +func (l Locale) StringFilename() string { + return strings.ToLower(l.String()) +} + func (l Locale) StringHyphen() string { locale := l.Language if l.Script != "" { diff --git a/flutter/locale_test.go b/flutter/locale_test.go index a310620..ca4308f 100644 --- a/flutter/locale_test.go +++ b/flutter/locale_test.go @@ -67,6 +67,28 @@ func TestLocaleString(t *testing.T) { } } +func TestLocaleStringFilename(t *testing.T) { + testCases := []struct { + Input flutter.Locale + Expected string + }{ + {flutter.Locale{Language: "en"}, "en"}, + {flutter.Locale{Language: "en", Country: "US"}, "en_us"}, + {flutter.Locale{Language: "es", Country: "419"}, "es_419"}, + {flutter.Locale{Language: "zh", Script: "Hans"}, "zh_hans"}, + {flutter.Locale{Language: "zh", Script: "Hant", Country: "CN"}, "zh_hant_cn"}, + {flutter.Locale{Language: "sr", Script: "Cyrl"}, "sr_cyrl"}, + } + + for _, testCase := range testCases { + t.Run(testCase.Expected, func(t *testing.T) { + actual := testCase.Input.StringFilename() + + assert.Equal(t, testCase.Expected, actual) + }) + } +} + func TestLocaleStringHyphen(t *testing.T) { testCases := []struct { Input flutter.Locale From 4178d14b6502ef3fc5a1becb6dbd265284da1966 Mon Sep 17 00:00:00 2001 From: Albert Wolszon Date: Fri, 8 Dec 2023 12:51:29 +0100 Subject: [PATCH 4/5] Update integration test loop with new filenamesS --- .github/workflows/go-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index 759dfab..d26b537 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -78,7 +78,7 @@ jobs: working-directory: integration_test run: | for dir in l10n l10n_prefixed; do - for locale in en pl en_HK sr sr_Cyrl es es_419; do + for locale in en pl en_hk sr sr_cyrl es es_419; do echo "=== lib/$dir/app_$locale.arb ===" cat lib/$dir/app_$locale.arb done From 2f51a24af692dc335c3f9bd401a1ab5e19e99859 Mon Sep 17 00:00:00 2001 From: Albert Wolszon Date: Fri, 8 Dec 2023 12:54:35 +0100 Subject: [PATCH 5/5] Fix static check issues --- cmd/poe_options_selector.go | 2 +- cmd/seed.go | 2 +- cmd/version.go | 7 ++++--- convert/arb2poe/converter.go | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/cmd/poe_options_selector.go b/cmd/poe_options_selector.go index dc0b699..92acc74 100644 --- a/cmd/poe_options_selector.go +++ b/cmd/poe_options_selector.go @@ -153,7 +153,7 @@ func prefixFromTemplateFileName(templateFile string) (string, error) { return "", errors.New( "invalid template-arb-file. Should be a filename with prefix ending " + - "with an underscore followed by a valid BCP-47 locale.", + "with an underscore followed by a valid BCP-47 locale", ) } diff --git a/cmd/seed.go b/cmd/seed.go index 3691571..9cc46d7 100644 --- a/cmd/seed.go +++ b/cmd/seed.go @@ -98,7 +98,7 @@ func runSeed(cmd *cobra.Command, args []string) error { var b bytes.Buffer flutterLocale, err := converter.Convert(&b) if err != nil { - if errors.Is(err, arb2poe.NoTermsError) { + if errors.Is(err, arb2poe.ErrNoTerms) { fileLog.Info("no terms to convert") continue } diff --git a/cmd/version.go b/cmd/version.go index 9624ff7..b685f9d 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -52,11 +52,12 @@ func getVcsInfo() (revision, time string, modified bool, err error) { } for _, setting := range info.Settings { - if setting.Key == "vcs.revision" { + switch setting.Key { + case "vcs.revision": revision = setting.Value - } else if setting.Key == "vcs.time" { + case "vcs.time": time = setting.Value - } else if setting.Key == "vcs.modified" { + case "vcs.modified": modified = setting.Value == "true" } } diff --git a/convert/arb2poe/converter.go b/convert/arb2poe/converter.go index 1c9b03d..e4e9714 100644 --- a/convert/arb2poe/converter.go +++ b/convert/arb2poe/converter.go @@ -26,7 +26,7 @@ func NewConverter(input io.Reader, templateLocale flutter.Locale, termPrefix str } } -var NoTermsError = errors.New("no terms to convert") +var ErrNoTerms = errors.New("no terms to convert") func (c *Converter) Convert(output io.Writer) (lang flutter.Locale, err error) { lang, messages, err := parseARB(c.input) @@ -47,7 +47,7 @@ func (c *Converter) Convert(output io.Writer) (lang flutter.Locale, err error) { } if len(poeTerms) == 0 { - return flutter.Locale{}, NoTermsError + return flutter.Locale{}, ErrNoTerms } err = json.NewEncoder(output).Encode(poeTerms)