56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
"github.com/stoggi/aws-oidc/cli"
|
|
"gopkg.in/alecthomas/kingpin.v2"
|
|
)
|
|
|
|
// Version is provided at compile time
|
|
var Version = "dev"
|
|
|
|
func main() {
|
|
run(os.Args[1:], os.Exit)
|
|
}
|
|
|
|
func run(args []string, exit func(int)) {
|
|
|
|
f, err := os.OpenFile(GetLogPath(), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
|
|
if err != nil {
|
|
log.Fatalf("error opening file: %v", err)
|
|
}
|
|
defer f.Close()
|
|
wrt := io.MultiWriter(os.Stderr, f)
|
|
log.SetOutput(wrt)
|
|
|
|
// Default configuration, values are overridden by command line options.
|
|
config := cli.GlobalConfig{}
|
|
if _, err := toml.DecodeFile(GetConfigFilePath(), &config); err != nil {
|
|
if !os.IsNotExist(err) {
|
|
log.Printf("Error decoding TOML: %v\n", err)
|
|
}
|
|
}
|
|
|
|
app := kingpin.New(
|
|
"aws-oidc",
|
|
"Assume roles in AWS using an OIDC identity provider",
|
|
)
|
|
|
|
app.Version(Version)
|
|
app.Terminate(exit)
|
|
app.UsageWriter(os.Stdout)
|
|
app.ErrorWriter(wrt)
|
|
|
|
cli.ConfigureGlobal(app, &config)
|
|
cli.ConfigureAuth(app, &config)
|
|
cli.ConfigureExec(app, &config)
|
|
cli.ConfigureList(app, &config)
|
|
cli.ConfigureLogin(app, &config)
|
|
|
|
kingpin.MustParse(app.Parse(args))
|
|
}
|