/
main.go
79 lines (74 loc) · 1.74 KB
/
main.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
68
69
70
71
72
73
74
75
76
77
78
79
package main
import (
"encoding/json"
"flag"
"fmt"
"log"
"net/url"
"os"
"github.com/lair-framework/api-server/client"
)
const (
version = "1.0.0"
tool = "drone-export"
usage = `
Downloads a lair project.
Usage:
drone-export [options] <id>
Options:
-v show version and exit
-h show usage and exit
-k allow insecure SSL connections
`
)
func main() {
showVersion := flag.Bool("v", false, "")
insecureSSL := flag.Bool("k", false, "")
flag.Usage = func() {
fmt.Println(usage)
}
flag.Parse()
if *showVersion {
log.Println(version)
os.Exit(0)
}
lairURL := os.Getenv("LAIR_API_SERVER")
if lairURL == "" {
log.Fatal("Fatal: Missing LAIR_API_SERVER environment variable")
}
if len(flag.Args()) < 1 {
log.Fatal("Fatal: Missing required argument")
}
lairPID := flag.Arg(0)
u, err := url.Parse(lairURL)
if err != nil {
log.Fatalf("Fatal: Error parsing LAIR_API_SERVER URL. Error %s", err.Error())
}
if u.User == nil {
log.Fatal("Fatal: Missing username and/or password")
}
user := u.User.Username()
pass, _ := u.User.Password()
if user == "" || pass == "" {
log.Fatal("Fatal: Missing username and/or password")
}
c, err := client.New(&client.COptions{
User: user,
Password: pass,
Host: u.Host,
Scheme: u.Scheme,
InsecureSkipVerify: *insecureSSL,
})
if err != nil {
log.Fatalf("Fatal: Error setting up client: Error %s", err.Error())
}
project, err := c.ExportProject(lairPID)
if err != nil {
log.Fatalf("Fatal: Unable to import project. Error %s", err.Error())
}
data, err := json.Marshal(project)
if err != nil {
log.Fatalf("Fatal: Unable to parse JSON. Error %s", err.Error())
}
fmt.Println(string(data))
}