11package main
22
33import (
4- "bufio"
54 "fmt"
65 "io"
76 "net"
8- "os"
9- "strings"
107
11- mp "github.com/mackerelio/go-mackerel-plugin-helper"
128 flag "github.com/docker/docker/pkg/mflag"
9+ mp "github.com/mackerelio/go-mackerel-plugin-helper"
1310)
1411
1512// Exit codes are int values that represent an exit code for a particular error.
1613const (
1714 ExitCodeOK int = 0
18- ExitCodeError int = 1 + iota
15+ ExitCodeParseFlagError int = 1 + iota
16+ ExitCodeError
1917)
2018
2119/* graphdef is Graph definition for mackerelplugin.
@@ -109,35 +107,18 @@ func (m MogilefsPlugin) FetchMetrics() (map[string]interface{}, error) {
109107 return m .parseStats (conn )
110108}
111109
112- func (m MogilefsPlugin ) parseStats (conn io.Reader ) (map [string ]interface {}, error ) {
113- scanner := bufio .NewScanner (conn )
114- stats := make (map [string ]interface {})
115-
116- for scanner .Scan () {
117- line := scanner .Text ()
118- s := string (line )
119- if s == "." {
120- return stats , nil
121- }
122-
123- res := strings .Split (s , " " )
124- stats [res [0 ]] = res [1 ]
125- }
126-
127- if err := scanner .Err (); err != nil {
128- return stats , err
129- }
130-
131- return nil , nil
132- }
133-
134110// GraphDefinition interface for mackerelplugin.
135111func (m MogilefsPlugin ) GraphDefinition () map [string ](mp.Graphs ) {
136112 return graphdef
137113}
138114
139- // Parse flags and Run helper (MackerelPlugin) with the given arguments.
140- func main () {
115+ // CLI is the object for command line interface.
116+ type CLI struct {
117+ outStream , errStream io.Writer
118+ }
119+
120+ // Run is to parse flags and Run helper (MackerelPlugin) with the given arguments.
121+ func (c * CLI ) Run (args []string ) int {
141122 // Flags
142123 var (
143124 host string
@@ -155,14 +136,14 @@ func main() {
155136 flags .BoolVar (& version , []string {"v" , "version" }, false , "Print version information and quit." )
156137
157138 // Parse commandline flag
158- if err := flags .Parse (os . Args [1 :]); err != nil {
159- os . Exit ( ExitCodeError )
139+ if err := flags .Parse (args [1 :]); err != nil {
140+ return ExitCodeError
160141 }
161142
162143 // Show version
163144 if version {
164- fmt .Fprintf (os . Stderr , "%s version %s\n " , Name , Version )
165- os . Exit ( ExitCodeOK )
145+ fmt .Fprintf (c . errStream , "%s version %s\n " , Name , Version )
146+ return ExitCodeOK
166147 }
167148
168149 // Create MackerelPlugin for MogileFS
@@ -172,4 +153,6 @@ func main() {
172153 helper .Tempfile = tempfile
173154
174155 helper .Run ()
156+
157+ return ExitCodeOK
175158}
0 commit comments