/
ltsv_pipe.go
67 lines (53 loc) · 1.06 KB
/
ltsv_pipe.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import (
"bufio"
"fmt"
"os"
"strings"
"github.com/reiki4040/ltsv_pipe/goltsv"
flag "github.com/dotcloud/docker/pkg/mflag"
)
var (
tsv_mode bool
show_version bool
show_usage bool
)
func parseflg() {
flag.BoolVar(&show_version, []string{"v", "-version"}, false, "show version.")
flag.BoolVar(&show_usage, []string{"h", "-help"}, false, "show this usage.")
flag.BoolVar(&tsv_mode, []string{"t", "-tsv"}, false, "Output with TSV format")
flag.Parse()
}
func version() {
fmt.Printf("%s\n", Version)
}
func usage() {
fmt.Printf("%s\n", Usage)
}
func main() {
parseflg()
if show_usage {
usage()
os.Exit(0)
}
if show_version {
version()
os.Exit(0)
}
ltsv_pipe()
}
func ltsv_pipe() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
line := strings.TrimRight(scanner.Text(), "\n")
if line == "" {
continue
}
items := goltsv.ParseLtsv(line)
if tsv_mode {
fmt.Printf("%s\n", goltsv.Map2OrderedTsv(items, flag.Args()...))
} else {
fmt.Printf("%s\n", goltsv.Map2OrderedLtsv(items, flag.Args()...))
}
}
}