~kyrofa/unity-scope-libertine/add_debian_packaging

« back to all changes in this revision

Viewing changes to internal/github.com/axw/gocov/gocov/main.go

  • Committer: Kyle Fazzari
  • Date: 2015-07-27 18:38:30 UTC
  • Revision ID: kyle@canonical.com-20150727183830-390on30ba491p1aq
Vendor dependencies.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (c) 2012 The Gocov Authors.
 
2
//
 
3
// Permission is hereby granted, free of charge, to any person obtaining a copy
 
4
// of this software and associated documentation files (the "Software"), to
 
5
// deal in the Software without restriction, including without limitation the
 
6
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 
7
// sell copies of the Software, and to permit persons to whom the Software is
 
8
// furnished to do so, subject to the following conditions:
 
9
//
 
10
// The above copyright notice and this permission notice shall be included in
 
11
// all copies or substantial portions of the Software.
 
12
//
 
13
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
14
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
15
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 
16
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
17
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
18
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 
19
// IN THE SOFTWARE.
 
20
 
 
21
package main
 
22
 
 
23
import (
 
24
        "encoding/json"
 
25
        "flag"
 
26
        "fmt"
 
27
        "os"
 
28
 
 
29
        "launchpad.net/unity-scope-libertine/internal/github.com/axw/gocov"
 
30
)
 
31
 
 
32
func usage() {
 
33
        fmt.Fprintf(os.Stderr, "Usage:\n\n\tgocov command [arguments]\n\n")
 
34
        fmt.Fprintf(os.Stderr, "The commands are:\n\n")
 
35
        fmt.Fprintf(os.Stderr, "\tannotate\n")
 
36
        fmt.Fprintf(os.Stderr, "\tconvert\n")
 
37
        fmt.Fprintf(os.Stderr, "\treport\n")
 
38
        fmt.Fprintf(os.Stderr, "\ttest\n")
 
39
        fmt.Fprintf(os.Stderr, "\n")
 
40
        flag.PrintDefaults()
 
41
        os.Exit(2)
 
42
}
 
43
 
 
44
func marshalJson(packages []*gocov.Package) ([]byte, error) {
 
45
        return json.Marshal(struct{ Packages []*gocov.Package }{packages})
 
46
}
 
47
 
 
48
func unmarshalJson(data []byte) (packages []*gocov.Package, err error) {
 
49
        result := &struct{ Packages []*gocov.Package }{}
 
50
        err = json.Unmarshal(data, result)
 
51
        if err == nil {
 
52
                packages = result.Packages
 
53
        }
 
54
        return
 
55
}
 
56
 
 
57
func main() {
 
58
        flag.Usage = usage
 
59
        flag.Parse()
 
60
 
 
61
        command := ""
 
62
        if flag.NArg() > 0 {
 
63
                command = flag.Arg(0)
 
64
                switch command {
 
65
                case "convert":
 
66
                        if flag.NArg() <= 1 {
 
67
                                fmt.Fprintln(os.Stderr, "missing cover profile")
 
68
                                os.Exit(1)
 
69
                        }
 
70
                        if err := convertProfiles(flag.Args()[1:]...); err != nil {
 
71
                                fmt.Fprintln(os.Stderr, "error:", err)
 
72
                                os.Exit(1)
 
73
                        }
 
74
                case "annotate":
 
75
                        os.Exit(annotateSource())
 
76
                case "report":
 
77
                        os.Exit(reportCoverage())
 
78
                case "test":
 
79
                        if err := runTests(flag.Args()[1:]); err != nil {
 
80
                                fmt.Fprintln(os.Stderr, "error:", err)
 
81
                                os.Exit(1)
 
82
                        }
 
83
                default:
 
84
                        fmt.Fprintf(os.Stderr, "Unknown command: %#q\n\n", command)
 
85
                        usage()
 
86
                }
 
87
        } else {
 
88
                usage()
 
89
        }
 
90
}