package main import ( "log" "os" "strings" "./trans" "github.com/deanishe/awgo" "regexp" ) var wf *aw.Workflow func init() { wf = aw.New() } func main() { wf.Run(run) } func run() { word, fromLang, toLang := parseProgramArgs(os.Args) if fromLang == "" && toLang == "" { fromLang, toLang = decideWhatLanguagesToUse(word) } t := trans.New(word) t.Language = fromLang translations := t.Translate(toLang) for _, translation := range translations { wf.NewItem(translation).Arg(translation).Valid(true) } wf.WarnEmpty("No results", "Try a different query?") wf.SendFeedback() } func parseProgramArgs(args []string) (string, string, string) { if len(args) < 2 { log.Fatal("Not enough arguments!") } word := strings.Join(args[1:], " ") fromLang, toLang := "", "" if len(args) > 2 { if isTransLanguageSpecifier(args[1]) { languages := strings.Split(os.Args[1], ":") fromLang, toLang = languages[0], languages[1] word = strings.Join(os.Args[2:], " ") } } return word, fromLang, toLang } func isTransLanguageSpecifier(arg string) bool { ok, _ := regexp.MatchString("(\\w{2})?:(\\w{2})?", os.Args[1]) return ok } func decideWhatLanguagesToUse(word string) (string, string) { fromLang := trans.New(word).Identify() toLang := map[string]string{ "en": "hu", "hu": "en", }[fromLang] if toLang == "" { toLang = "en" } return fromLang, toLang }