-
Notifications
You must be signed in to change notification settings - Fork 3
/
main.go
83 lines (71 loc) · 1.32 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
80
81
82
83
package main
import (
"flag"
"fmt"
"io"
"log"
"os"
"time"
"github.com/naaman/hbuild"
)
var (
workDir, _ = os.Getwd()
fDir = flag.String("source", workDir, "-source=/path/to/src")
fAppName = flag.String("app", "", "-app=exampleapp")
fApiKey = flag.String("key", "", "-key=123ABC")
)
func init() {
flag.Parse()
for _, f := range []string{*fAppName, *fApiKey} {
if f == "" {
flag.Usage()
os.Exit(1)
}
}
}
func main() {
var err error
var source hbuild.Source
var build hbuild.Build
fmt.Print("Creating source...")
source, err = hbuild.NewSource(*fApiKey, *fAppName, *fDir)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("done.")
fmt.Print("Compressing source...")
err = source.Compress()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("done.")
fmt.Print("Uploading source...")
err = source.Upload()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("done.")
fmt.Println("Building...")
build, err = hbuild.NewBuild(*fApiKey, *fAppName, source, *new(hbuild.BuildOptions))
if err != nil {
fmt.Println(err)
return
}
io.Copy(os.Stdout, build.Stream.Body)
for {
s, err := build.Status()
if err != nil {
log.Println(err)
}
if s == "pending" {
fmt.Print(".")
time.Sleep(time.Second)
} else {
fmt.Println("..done.")
return
}
}
}