From ba24061ff5b781b78912fe93e5e814543d30f3b9 Mon Sep 17 00:00:00 2001 From: "yakumo.izuru" Date: Thu, 26 Oct 2023 02:13:55 +0000 Subject: [PATCH] =?UTF-8?q?=E5=A5=B3=E7=A5=9E=E3=81=8C=E3=81=93=E3=82=93?= =?UTF-8?q?=E3=81=AA=E3=81=AB=E5=8F=AF=E6=84=9B=E3=81=84=E3=82=8F=E3=81=91?= =?UTF-8?q?=E3=81=8C=E3=81=AA=E3=81=84=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Izuru Yakumo git-svn-id: file:///srv/svn/repo/suwako/trunk@26 0b558ee1-521d-8b46-a41b-40029c97c055 --- cmd/suwako/main.go | 41 ++++++++++++++++++++++++++--------------- go.mod | 4 +++- go.sum | 9 +++++++-- suwako.1 | 9 ++++++--- 4 files changed, 42 insertions(+), 21 deletions(-) diff --git a/cmd/suwako/main.go b/cmd/suwako/main.go index ef0acc6..fe5db02 100644 --- a/cmd/suwako/main.go +++ b/cmd/suwako/main.go @@ -11,13 +11,16 @@ import ( "os" "github.com/integrii/flaggy" - "github.com/joho/godotenv" + "gopkg.in/ini.v1" "marisa.chaotic.ninja/suwako" ) -var ( +var conf struct { engine string instance string +} + +var ( input string source string = "auto" target string @@ -33,7 +36,18 @@ func errCheck(err error) { } } -func loadCfg() { +func iniLoad(file string) error { + cfg, err := ini.Load(file) + if err != nil { + return err + } + conf.engine = cfg.Section("").Key("engine").String() + conf.instance = cfg.Section("").Key("instance").String() + + return nil +} + +func flagParse() { flaggy.SetName("suwako") flaggy.SetDescription("Command line client for SimplyTranslate") flaggy.SetVersion(suwako.FullVersion()) @@ -42,21 +56,18 @@ func loadCfg() { flaggy.String(&target, "t", "to", "Target language") flaggy.AddPositionalValue(&input, "input", 1, true, "Text to translate") - home, err := os.UserHomeDir() - errCheck(err) - conf := home + "/.suwako/suwako.conf" - err = godotenv.Load(conf) - errCheck(err) - - engine = os.Getenv("SUWAKO_ENGINE") - instance = os.Getenv("SUWAKO_INSTANCE") - flaggy.Parse() } func main() { - // Load configuration and parse flags - loadCfg() + // Flag parsing + flagParse() + + // Load configuration file + home, err := os.UserHomeDir() + errCheck(err) + cfgfile := home + "/.suwako/suwako.conf" + iniLoad(cfgfile) // Verify command-line inputs if len(target) == 0 { @@ -70,7 +81,7 @@ func main() { var encInput = url.PathEscape(input) // Construct the final path to query - var queryURL = instance + "?engine=" + engine + "&from=" + source + "&to=" + target + "&text=" + encInput + var queryURL = conf.instance + "?engine=" + conf.engine + "&from=" + source + "&to=" + target + "&text=" + encInput // Shoot danmaku to path resp, err := http.Get(queryURL) diff --git a/go.mod b/go.mod index 4941dca..f7ceef2 100644 --- a/go.mod +++ b/go.mod @@ -4,5 +4,7 @@ go 1.18 require ( github.com/integrii/flaggy v1.5.2 - github.com/joho/godotenv v1.5.1 + gopkg.in/ini.v1 v1.67.0 ) + +require github.com/stretchr/testify v1.8.4 // indirect diff --git a/go.sum b/go.sum index d7a6d17..684fb31 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,12 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/integrii/flaggy v1.5.2 h1:bWV20MQEngo4hWhno3i5Z9ISPxLPKj9NOGNwTWb/8IQ= github.com/integrii/flaggy v1.5.2/go.mod h1:dO13u7SYuhk910nayCJ+s1DeAAGC1THCMj1uSFmwtQ8= -github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= -github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/suwako.1 b/suwako.1 index eb4af8f..12cb6b0 100644 --- a/suwako.1 +++ b/suwako.1 @@ -17,10 +17,10 @@ It fully serves as a drop-in replacement. .Sh CONFIGURATION .Nm -takes two variables, those being -.Ev SUWAKO_INSTANCE +takes two keys, those being +.Ev instance and -.Ev SUWAKO_ENGINE +.Ev engine .Pp Both must be filled and placed on ~/.suwako/suwako.conf @@ -36,3 +36,6 @@ Text to be translated .El .Sh AUTHORS .An Izuru Yakumo Aq Mt yakumo.izuru@chaotic.ninja +.Sh BUGS +You cannot translate the string "version", this is +a direct consequence of using flaggy.