0
|
1 /****************************************************************************/
|
1
|
2 /* Entai_app.go ( ver 0.2 ) */
|
|
3 /* Last Change: 2016-10-06 Thu 00:49:10. */
|
0
|
4 /****************************************************************************/
|
|
5
|
|
6 package main
|
|
7
|
|
8 import (
|
1
|
9 "bufio"
|
0
|
10 "flag"
|
|
11 "fmt"
|
|
12 "os"
|
|
13 "strconv"
|
1
|
14 "strings"
|
0
|
15 "time"
|
|
16
|
|
17 "entai"
|
|
18 )
|
|
19
|
|
20 func main() {
|
|
21
|
|
22 var entai entai.Entai
|
|
23
|
|
24 // arguments
|
|
25 h := flag.Bool( "h", false, "help" )
|
|
26 r := flag.Bool( "r", false, "print rate" )
|
|
27 l := flag.Bool( "l", false, "1-liner mode" )
|
1
|
28 b := flag.Bool( "b", false, "batch mode" )
|
0
|
29 v := flag.Bool( "v", false, "print verbose in 1-liner mode")
|
1
|
30 i := flag.Bool( "i", false, "print input value in 1-liner mode")
|
|
31 d := flag.Bool( "d", false, "intaracitve mode")
|
0
|
32 s := flag.Bool( "s", false, "server mode" )
|
1
|
33 p := flag.Int( "p", 8080, "listen port in server mode" )
|
0
|
34
|
|
35 flag.Parse()
|
|
36
|
|
37 if flag.NFlag() == 0 {
|
|
38 PrintTile()
|
|
39 flag.PrintDefaults()
|
|
40 fmt.Fprint( os.Stderr, "\n" )
|
|
41 os.Exit( 1 )
|
|
42 }
|
|
43
|
|
44 if *h {
|
|
45 PrintTile()
|
|
46 fmt.Fprint( os.Stderr, "1-liner mode:\n" )
|
|
47 fmt.Fprint( os.Stderr, "> entai_app -l 20160731 20161224 30000\n\n" )
|
|
48 fmt.Fprint( os.Stderr, "> entai_app -i -l 20160731 20161224 30000\n\n" )
|
|
49 fmt.Fprint( os.Stderr, "> entai_app -i -v -l 20160731 20161224 30000\n\n" )
|
|
50 fmt.Fprint( os.Stderr, "server mode:\n" )
|
1
|
51 fmt.Fprint( os.Stderr, "> entai_app -s -p 3000\n" )
|
0
|
52 os.Exit( 0 )
|
|
53 }
|
|
54
|
|
55 if *r {
|
|
56 PrintTile()
|
|
57 fmt.Fprint( os.Stderr, entai.GetRate() )
|
|
58 os.Exit( 0 )
|
|
59 }
|
|
60
|
|
61 if *s {
|
|
62 *p = 8080
|
|
63 fmt.Fprint( os.Stderr, "server mode is not implemented.\n" )
|
|
64 os.Exit( 0 )
|
|
65 }
|
|
66
|
1
|
67 if *d {
|
|
68 PrintTile()
|
|
69 //layout := "20060102"
|
|
70 //for {
|
|
71 //}
|
|
72 os.Exit( 0 )
|
|
73 }
|
|
74
|
0
|
75 if *l {
|
|
76 layout := "20060102"
|
|
77
|
|
78 d, err := time.Parse( layout, flag.Arg(0) ); if err != nil {
|
|
79 fmt.Fprint( os.Stderr, "bad date format.\n" )
|
|
80 os.Exit( 1 )
|
|
81 }
|
|
82 p, err := time.Parse( layout, flag.Arg(1) ); if err != nil {
|
|
83 fmt.Fprint( os.Stderr, "bad date format.\n" )
|
|
84 os.Exit( 1 )
|
|
85 }
|
|
86
|
|
87 t, err := strconv.Atoi( flag.Arg(2) )
|
|
88 if err != nil || t < 0 {
|
|
89 fmt.Fprint( os.Stderr, "bad money format.\n" )
|
|
90 os.Exit( 1 )
|
|
91 }
|
|
92
|
|
93 if *i {
|
1
|
94 fmt.Printf( "%v,%v,%d,", d.Format( layout ), p.Format( layout ), t )
|
0
|
95 }
|
|
96
|
|
97 // MAIN
|
|
98 entai.Set( d, p, t )
|
|
99 result, detail := entai.Result()
|
|
100 //
|
|
101
|
|
102 fmt.Print( result )
|
|
103
|
|
104 if *v {
|
|
105 fmt.Print( ",", detail )
|
|
106 }
|
|
107 fmt.Print( "\n" )
|
1
|
108 os.Exit( 0 )
|
|
109 }
|
|
110
|
|
111 if *b {
|
|
112 files := flag.Args()
|
|
113 if len( files ) == 0 {
|
|
114 fmt.Fprint( os.Stderr, "no input file.\n" )
|
|
115 os.Exit( 1 )
|
|
116 } else {
|
|
117 for _, file := range files {
|
|
118 f, err := os.Open( file ); if err != nil {
|
|
119 fmt.Fprintf( os.Stderr, "cannot open file.[%v]\n", err )
|
|
120 os.Exit( 1 )
|
|
121 }
|
|
122 input := bufio.NewScanner( f )
|
|
123 b := bufio.NewWriter( os.Stdout )
|
|
124 for input.Scan() {
|
|
125 s := strings.Split( input.Text(), "," )
|
|
126 fmt.Fprint( b, s[0] )
|
|
127 }
|
|
128 b.Flush()
|
|
129 f.Close()
|
|
130 }
|
|
131 os.Exit( 0 )
|
|
132 }
|
0
|
133 }
|
|
134 }
|
|
135
|
|
136 func PrintTile() {
|
|
137 fmt.Fprint( os.Stderr, "\n==================================================\n" )
|
1
|
138 fmt.Fprint( os.Stderr, " Entai_app ver 0.2 ( 2016.10.09 ) - since 2016\n" )
|
0
|
139 fmt.Fprint( os.Stderr, "==================================================\n\n" )
|
|
140 }
|
|
141
|