@ -10,6 +10,7 @@ import (
"encoding/base64"
"encoding/base64"
"encoding/binary"
"encoding/binary"
"encoding/json"
"encoding/json"
"errors"
"flag"
"flag"
"fmt"
"fmt"
"go/ast"
"go/ast"
@ -73,7 +74,6 @@ garble accepts the following flags:
For more information , see https : //github.com/burrowers/garble.
For more information , see https : //github.com/burrowers/garble.
` [ 1 : ] )
` [ 1 : ] )
os . Exit ( 2 )
}
}
func main ( ) { os . Exit ( main1 ( ) ) }
func main ( ) { os . Exit ( main1 ( ) ) }
@ -159,15 +159,25 @@ func main1() int {
log . SetPrefix ( "[garble] " )
log . SetPrefix ( "[garble] " )
args := flagSet . Args ( )
args := flagSet . Args ( )
if len ( args ) < 1 {
if len ( args ) < 1 {
flagSet . Usage ( )
usage ( )
return 2
}
}
if err := mainErr ( args ) ; err != nil {
if err := mainErr ( args ) ; err != nil {
fmt . Fprintln ( os . Stderr , err )
switch err {
case flag . ErrHelp :
usage ( )
return 2
case errJustExit :
default :
fmt . Fprintln ( os . Stderr , err )
}
return 1
return 1
}
}
return 0
return 0
}
}
var errJustExit = errors . New ( "" )
func goVersionOK ( ) bool {
func goVersionOK ( ) bool {
const (
const (
minGoVersion = "v1.15.0"
minGoVersion = "v1.15.0"
@ -231,18 +241,18 @@ func mainErr(args []string) error {
// If we recognise an argument, we're not running within -toolexec.
// If we recognise an argument, we're not running within -toolexec.
switch cmd := args [ 0 ] ; cmd {
switch cmd := args [ 0 ] ; cmd {
case "help" :
case "help" :
flagSet . Usage ( )
return flag . ErrHelp
case "build" , "test" :
case "build" , "test" :
if ! goVersionOK ( ) {
if ! goVersionOK ( ) {
os . Exit ( 1 )
return errJustExit
}
}
// Split the flags from the package arguments, since we'll need
// Split the flags from the package arguments, since we'll need
// to run 'go list' on the same set of packages.
// to run 'go list' on the same set of packages.
flags , args := splitFlagsFromArgs ( args [ 1 : ] )
flags , args := splitFlagsFromArgs ( args [ 1 : ] )
for _ , f lag := range flags {
for _ , f := range flags {
switch f lag {
switch f {
case "-h" , "-help" , "--help" :
case "-h" , "-help" , "--help" :
flagSet . Usage ( )
return flag . ErrHelp
}
}
}
}