123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package main
- import (
- "fmt"
- "os"
- "path/filepath"
- "strings"
- )
- type Result struct {
- Server string
- Output []string
- Error error
- }
- func main() {
- opts := parseOptions()
- c := make(chan Result, 5)
- defer close(c)
- for _, d := range opts.Servers {
- go saveEmojiList(d, opts, c)
- }
- for _, _ = range opts.Servers {
- if r := <-c; r.Error != nil {
- fmt.Println(r.Error)
- } else {
- fmt.Printf("Success: %s\n", r.Server)
- for _, name := range r.Output {
- fmt.Println(name)
- }
- }
- }
- }
- func saveEmojiList(domain string, opts Options, c chan Result) {
- r := Result{
- Server: domain,
- }
- var es Emojis
- es, r.Error = NewEmojiList(domain)
- if r.Error != nil {
- c <- r
- return
- }
- out := filepath.Join(opts.OutputDir, strings.Replace(domain, ".", "_", -1))
- if !opts.KeepOld {
- os.RemoveAll(out)
- }
- if !opts.Split {
- p := NewEmojiPack()
- p.SetFiles(es)
- r.Error = p.GenerateEmojiPack(out)
- r.Output = append(r.Output, out)
- c <- r
- return
- }
- var ces = map[string]Emojis{}
- for _, e := range es {
- ces[e.Category] = append(ces[e.Category], e)
- }
- for c, es := range ces {
- p := NewEmojiPack()
- p.SetFiles(es)
- dir := filepath.Join(out, c)
- if err := p.GenerateEmojiPack(dir); err != nil {
- r.Error = err
- }
- r.Output = append(r.Output, dir)
- }
- c <- r
- }
|