@@ -13,6 +13,7 @@ import (
1313 "path/filepath"
1414 "fmt"
1515 "github.com/aemengo/snb/parser"
16+ "strings"
1617)
1718
1819var (
@@ -28,38 +29,45 @@ var (
2829func main () {
2930 startTime := time .Now ()
3031
31- if len (os .Args ) == 2 {
32+ switch len (os .Args ) {
33+ case 1 :
34+ workingDir , _ = filepath .Abs (workingDir )
35+ case 2 :
36+ if strings .HasPrefix (os .Args [1 ], "-" ) {
37+ showUsage ()
38+ }
39+
3240 var err error
3341 workingDir , err = filepath .Abs (os .Args [1 ])
3442 if err != nil {
35- logFatal (err )
43+ fatal (err )
3644 }
37- } else {
38- workingDir , _ = filepath . Abs ( workingDir )
45+ default :
46+ showUsage ( )
3947 }
4048
4149 fsClient , err := fs .New (workingDir )
4250 if err != nil {
43- logFatal (err )
51+ fatal (err )
4452 }
4553
4654 if ! fsClient .Exists ("ShakeAndBakeFile" ) {
47- logFatal ("ShakeAndBakeFile not found. please execute in directory containing spec, or pass the working directory in as the only argument" )
55+ fatal ("ShakeAndBakeFile not found. please execute in directory containing spec, or pass the working directory in as the only argument" )
4856 }
4957
5058 contents , err := fsClient .Get ("ShakeAndBakeFile" )
5159 if err != nil {
52- logFatal (err )
60+ fatal (err )
5361 }
5462
5563 spec , err := parser .Parse (contents )
5664 if err != nil {
57- logFatal (err )
65+ fatal (err )
5866 }
5967
6068 dbClient , err := db .New (filepath .Join (workingDir , ".snb" ))
6169 if err != nil {
62- logFatal (err )
70+ fatal (err )
6371 }
6472 defer dbClient .Close ()
6573
@@ -68,12 +76,12 @@ func main() {
6876
6977 srcFiles , err := fsClient .GetSrcFiles (step )
7078 if err != nil {
71- logFatal (err )
79+ fatal (err )
7280 }
7381
7482 ok , err := dbClient .IsCached (step , index , srcFiles )
7583 if err != nil {
76- logFatal (err )
84+ fatal (err )
7785 }
7886
7987 if ok {
@@ -94,12 +102,12 @@ func main() {
94102
95103 srcFiles , err = fsClient .GetSrcFiles (step )
96104 if err != nil {
97- logFatal (err )
105+ fatal (err )
98106 }
99107
100108 err = dbClient .Save (step , index , srcFiles )
101109 if err != nil {
102- logFatal (err )
110+ fatal (err )
103111 }
104112 }
105113
@@ -149,7 +157,16 @@ func exitCode(err error) (int, bool) {
149157 return status .ExitStatus (), true
150158}
151159
152- func logFatal (message interface {}) {
160+ func fatal (message interface {}) {
153161 fmt .Printf (color .RedString ("Error" ) + ": %s.\n " , message )
154162 os .Exit (1 )
163+ }
164+
165+ func showUsage () {
166+ fmt .Println (`
167+ USAGE: snb [PATH]
168+
169+ Build an image from a ShakeAndBakeFile
170+ ` )
171+ os .Exit (1 )
155172}
0 commit comments