水蛙神
git-svn-id: file:///srv/svn/repo/suwako/trunk@32 0b558ee1-521d-8b46-a41b-40029c97c055
This commit is contained in:
35
Makefile
35
Makefile
@@ -1,22 +1,25 @@
|
|||||||
|
GO ?= go
|
||||||
|
GOFLAGS ?= -v
|
||||||
|
|
||||||
PREFIX ?= /usr/local
|
PREFIX ?= /usr/local
|
||||||
|
BINDIR ?= ${PREFIX}/bin
|
||||||
|
MANDIR ?= ${PREFIX}/man
|
||||||
|
|
||||||
GOFLAGS ?= -v -ldflags "-w -X `go list`.Version=${VERSION} -X `go list`.Commit=${COMMIT} -X `go list`.Build=${BUILD}" -tags "static_build"
|
all: build
|
||||||
|
|
||||||
BRANCH = `git rev-parse --abbrev-ref HEAD`
|
build:
|
||||||
BUILD = `git show -s --pretty=format:%cI`
|
${GO} build ${GOFLAGS}
|
||||||
COMMIT = `git rev-parse --short HEAD || echo "$COMMIT"`
|
|
||||||
VERSION = `git describe --abbrev=0 --tags 2>/dev/null || echo "$VERSION"`
|
|
||||||
|
|
||||||
all: suwako
|
|
||||||
|
|
||||||
suwako:
|
|
||||||
go build ${GOFLAGS} ./cmd/suwako
|
|
||||||
clean:
|
clean:
|
||||||
rm -f suwako
|
rm -f suwako
|
||||||
install:
|
pre-install:
|
||||||
install -Dm0755 suwako ${PREFIX}/bin/suwako
|
mkdir -p ${DESTDIR}${BINDIR}
|
||||||
install -Dm0644 suwako.1 ${PREFIX}/share/man/man1/suwako.1
|
mkdir -p ${DESTDIR}${MANDIR}/man1
|
||||||
install -Dm0644 suwako.conf.5 ${PREFIX}/share/man/man5/suwako.conf.5
|
mkdir -p ${DESTDIR}${MANDIR}/man5
|
||||||
|
install: pre-install
|
||||||
|
install -m0755 suwako ${DESTDIR}${BINDIR}/suwako
|
||||||
|
install -m0644 suwako.1 ${DESTDIR}${MANDIR}/man1/suwako.1
|
||||||
|
install -m0644 suwako.conf.5 ${DESTDIR}${MANDIR}/man5/suwako.conf.5
|
||||||
uninstall:
|
uninstall:
|
||||||
rm -f ${PREFIX}/bin/suwako
|
rm -f ${DESTDIR}${BINDIR}/suwako
|
||||||
rm -f ${PREFIX}/share/man/man1/suwako.1
|
rm -f ${DESTDIR}${MANDIR}/man1/suwako.1
|
||||||
|
rm -f ${DESTDIR}${MANDIR}/man5/suwako.conf.5
|
||||||
|
|||||||
33
cmd/root.go
33
cmd/root.go
@@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright © 2025 Izuru Yakumo <eternal-servant@yakumo.dev>
|
Copyright © 2025 Izuru Yakumo <eternal-servant@yakumo.dev>
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
@@ -37,32 +36,24 @@ var rootCmd = &cobra.Command{
|
|||||||
Short: "A client for SimplyTranslate with illusionary origins",
|
Short: "A client for SimplyTranslate with illusionary origins",
|
||||||
Args: cobra.MinimumNArgs(1),
|
Args: cobra.MinimumNArgs(1),
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
_split := fmt.Sprint(args)
|
text_to_split := fmt.Sprint(args)
|
||||||
text := fmt.Sprint(strings.Trim(_split, "[]"))
|
text := fmt.Sprint(strings.Trim(text_to_split, "[]"))
|
||||||
if len(output) == 0 {
|
|
||||||
log.Fatalf("\033[1;31m%s\033[0m\n", "No target language")
|
|
||||||
}
|
|
||||||
var translate Translate
|
var translate Translate
|
||||||
encInput := url.PathEscape(text)
|
encInput := url.PathEscape(text)
|
||||||
queryURL := conf.endpoint + "/api/translate" + "?engine=" + conf.engine + "&from=" + input + "&to=" + output + "&text=" + encInput
|
queryURL := conf.endpoint + "/api/translate" + "?engine=" + conf.engine + "&from=" + input + "&to=" + output + "&text=" + encInput
|
||||||
resp, err := http.Get(queryURL)
|
resp, err := http.Get(queryURL)
|
||||||
CheckErr(err)
|
cobra.CheckErr(err)
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
_ = json.NewDecoder(resp.Body).Decode(&translate)
|
_ = json.NewDecoder(resp.Body).Decode(&translate)
|
||||||
CheckErr(err)
|
cobra.CheckErr(err)
|
||||||
if len(translate.Output) == 0 {
|
if len(translate.Output) == 0 {
|
||||||
log.Fatalf("\033[1;31m%s\033[0m\n", "There was no output, maybe the endpoint is down?")
|
log.Fatalf("\033[1;31m%s\033[0m\n", "There was no output, maybe the endpoint is down?")
|
||||||
} else {
|
} else {
|
||||||
fmt.Printf("%v\n", translate.Output)
|
fmt.Printf("%v\n", translate.Output)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Version: "3.0.0",
|
Version: "3.0.1",
|
||||||
}
|
|
||||||
func CheckErr(err error) {
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
func Execute() {
|
func Execute() {
|
||||||
err := rootCmd.Execute()
|
err := rootCmd.Execute()
|
||||||
@@ -70,16 +61,15 @@ func Execute() {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cobra.OnInitialize(initConfig)
|
cobra.OnInitialize(initConfig)
|
||||||
rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $XDG_CONFIG_HOME/suwako.ini)")
|
rootCmd.PersistentFlags().StringVarP(&cfgFile, "config", "c", "", "config file (default is $XDG_CONFIG_HOME/suwako.ini)")
|
||||||
rootCmd.PersistentFlags().StringVarP(&input, "from", "f", "auto", "language to translate from (default is auto)")
|
rootCmd.PersistentFlags().StringVarP(&input, "from", "f", "auto", "language to translate from")
|
||||||
rootCmd.PersistentFlags().StringVarP(&output, "to", "t", "", "target language")
|
rootCmd.PersistentFlags().StringVarP(&output, "to", "t", "", "target language")
|
||||||
}
|
}
|
||||||
func parseConfig(file string) error {
|
func parseConfig(file string) error {
|
||||||
cfg, err := ini.Load(file)
|
cfg, err := ini.Load(file)
|
||||||
CheckErr(err)
|
cobra.CheckErr(err)
|
||||||
|
|
||||||
conf.endpoint = cfg.Section("suwako").Key("endpoint").String()
|
conf.endpoint = cfg.Section("suwako").Key("endpoint").String()
|
||||||
conf.engine = cfg.Section("suwako").Key("engine").String()
|
conf.engine = cfg.Section("suwako").Key("engine").String()
|
||||||
@@ -91,10 +81,9 @@ func initConfig() {
|
|||||||
parseConfig(cfgFile)
|
parseConfig(cfgFile)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Find home directory.
|
xdg_config_home, err := os.UserConfigDir()
|
||||||
xdg, err := os.UserConfigDir()
|
cobra.CheckErr(err)
|
||||||
CheckErr(err)
|
defaultCfgPath := xdg_config_home + "/suwako.ini"
|
||||||
defaultCfgPath := xdg + "/suwako.ini"
|
|
||||||
parseConfig(defaultCfgPath)
|
parseConfig(defaultCfgPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -1,4 +1,4 @@
|
|||||||
module marisa.chaotic.ninja/suwako
|
module mahou-no-mori.yakumo.dev/suwako
|
||||||
|
|
||||||
go 1.21.0
|
go 1.21.0
|
||||||
|
|
||||||
|
|||||||
3
main.go
3
main.go
@@ -1,10 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
Copyright © 2025 Izuru Yakumo <eternal-servant@yakumo.dev>
|
Copyright © 2025 Izuru Yakumo <eternal-servant@yakumo.dev>
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import "marisa.chaotic.ninja/suwako/cmd"
|
import "mahou-no-mori.yakumo.dev/suwako/cmd"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cmd.Execute()
|
cmd.Execute()
|
||||||
|
|||||||
7
suwako.1
7
suwako.1
@@ -11,8 +11,11 @@
|
|||||||
.Ar input
|
.Ar input
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
Self-explanatory, besides, this was made as
|
Self-explanatory, besides, this was made as
|
||||||
a rewrite from a shell script that had curl
|
a rewrite from a shell script that had
|
||||||
and awk for dependencies.
|
.Xr curl 1
|
||||||
|
and
|
||||||
|
.Xr awk 1
|
||||||
|
for dependencies.
|
||||||
It fully serves as a drop-in replacement.
|
It fully serves as a drop-in replacement.
|
||||||
.Sh USAGE
|
.Sh USAGE
|
||||||
.Bl -tag -width 11n -compact
|
.Bl -tag -width 11n -compact
|
||||||
|
|||||||
Reference in New Issue
Block a user