diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3bb64e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +go-s3up diff --git a/go.mod b/go.mod index 8a2974c..e214216 100644 --- a/go.mod +++ b/go.mod @@ -4,4 +4,7 @@ go 1.17 require github.com/aws/aws-sdk-go v1.42.32 -require github.com/jmespath/go-jmespath v0.4.0 // indirect +require ( + github.com/apsdehal/go-logger v0.0.0-20190515211354-1abdf898e024 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect +) diff --git a/go.sum b/go.sum index 52b7357..1530499 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/apsdehal/go-logger v0.0.0-20190515211354-1abdf898e024 h1:dfZ6RF0UxHqt7xPz0r7h00apsaa6rIrFhT6Xly55Exk= +github.com/apsdehal/go-logger v0.0.0-20190515211354-1abdf898e024/go.mod h1:U3/8D6R9+bVpX0ORZjV+3mU9pQ86m7h1lESgJbXNvXA= github.com/aws/aws-sdk-go v1.42.32 h1:YRe7du5KeSa2jHKEccOSL6/1fNM1Qaj0JqSGTdmtaws= github.com/aws/aws-sdk-go v1.42.32/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/main.go b/main.go index 184e4af..f6dcf9e 100644 --- a/main.go +++ b/main.go @@ -3,18 +3,16 @@ package main import ( "flag" "fmt" - "log" "os" "strings" + "github.com/apsdehal/go-logger" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3/s3manager" ) -var l *log.Logger - var ( target string acl string @@ -24,6 +22,7 @@ var ( keyid string secret string threads int + debug bool ) const helpMessage string = ` @@ -52,21 +51,33 @@ func flagsInit() { flag.StringVar(&endpoint, "endpoint", envVar("AWS_DEFAULT_ENDPOINT", "ams3.digitaloceanspaces.com"), "S3 API endpoint.") flag.StringVar(&keyid, "keyid", envVar("AWS_ACCESS_KEY_ID", ""), "API key ID.") flag.StringVar(&secret, "secret", envVar("AWS_SECRET_ACCESS_KEY", ""), "API secret key.") - flag.IntVar(&threads, "threads", 5, "Number of concurrent threads used for upload.") + flag.IntVar(&threads, "threads", 20, "Number of concurrent threads used for upload.") + flag.BoolVar(&debug, "debug", false, "Show debug log messages.") flag.Parse() } -func main() { - l = log.New(os.Stderr, "", log.Lshortfile) +func logInit() *logger.Logger { + log, err := logger.New("go-s3up", 1, os.Stderr) + if err != nil { + panic(err) // Check for error + } + if debug { + log.SetLogLevel(logger.DebugLevel) + } + log.SetFormat("[%{module}] %{level}: %{message}") + return log +} +func main() { flagsInit() + log := logInit() if len(keyid) == 0 { - l.Println("Provide -keyid flag or AWS_ACCESS_KEY_ID env var") + log.Warning("Provide -keyid flag or AWS_ACCESS_KEY_ID env var") os.Exit(1) } if len(secret) == 0 { - l.Println("Provide -secret flag or AWS_SECRET_ACCESS_KEY env var") + log.Warning("Provide -secret flag or AWS_SECRET_ACCESS_KEY env var") os.Exit(1) } @@ -76,12 +87,14 @@ func main() { Region: aws.String(region), } + log.DebugF("Connecting to: %s (region: %s)", endpoint, region) + newSession := session.New(s3Config) uploader := s3manager.NewUploader(newSession) file, err := os.Open(target) if err != nil { - l.Println("Failed to open file: ", err) + log.ErrorF("Failed to open file: %v", err) os.Exit(1) } @@ -94,9 +107,10 @@ func main() { u.Concurrency = threads }) if err != nil { - l.Println("Failed to upload file: ", err) + log.ErrorF("Failed to upload file: %v", err) os.Exit(1) } - l.Println("Uploaded: ", aws.StringValue(&result.Location)) + log.DebugF("ETag: %s", aws.StringValue(result.ETag)) + log.InfoF("Uploaded: %s", aws.StringValue(&result.Location)) }