diff --git a/cmd/s3share.go b/cmd/s3share.go index 1477582..5c7c0ef 100644 --- a/cmd/s3share.go +++ b/cmd/s3share.go @@ -1,7 +1,34 @@ package main -import s3share "git.kapelle.org/niklas/s3share/internal" +import ( + s3share "git.kapelle.org/niklas/s3share/internal" + "git.kapelle.org/niklas/s3share/internal/types" + "github.com/alexflint/go-arg" +) + +type args struct { + S3Endpoint string `arg:"--s3-endpoint,required,env:S3_ENDPOINT" help:"host[:port]" placeholder:"ENDPOINT"` + S3Bucket string `arg:"--s3-bucket,required,env:S3_BUCKET" help:"bucket to use" placeholder:"BUCKET"` + S3AccessKey string `arg:"--s3-access-key,required,env:S3_ACCESS_KEY" placeholder:"ACCESS_KEY"` + S3SecretKey string `arg:"--s3-secret-key,required,env:S3_SECRET_KEY" placeholder:"SECRET_KEY"` + S3DisableSSL bool `arg:"--s3-disable-ssl,env:S3_DISABLE_SSL" default:"false"` + Address string `arg:"--address,env:ADDRESS" default:":3000" help:"what address to listen on" placeholder:"ADDRESS"` +} + +func (args) Version() string { + // TODO + return "s3share 0.1" +} func main() { - s3share.Start() + var args args + arg.MustParse(&args) + + s3share.Start(&types.AppConfig{ + S3Endpoint: args.S3Endpoint, + S3AccessKey: args.S3AccessKey, + S3SecretKey: args.S3SecretKey, + S3SSL: !args.S3DisableSSL, + Address: args.Address, + }) } diff --git a/go.mod b/go.mod index 7a284e2..9a0a562 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,8 @@ require ( ) require ( + github.com/alexflint/go-arg v1.4.3 // indirect + github.com/alexflint/go-scalar v1.1.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect github.com/google/uuid v1.1.1 // indirect github.com/json-iterator/go v1.1.12 // indirect diff --git a/go.sum b/go.sum index 4d8d544..52739fb 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,7 @@ +github.com/alexflint/go-arg v1.4.3 h1:9rwwEBpMXfKQKceuZfYcwuc/7YY7tWJbFsgG5cAU/uo= +github.com/alexflint/go-arg v1.4.3/go.mod h1:3PZ/wp/8HuqRZMUUgu7I+e1qcpUbvmS258mRXkFH4IA= +github.com/alexflint/go-scalar v1.1.0 h1:aaAouLLzI9TChcPXotr6gUhq+Scr8rl0P9P4PnltbhM= +github.com/alexflint/go-scalar v1.1.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oyLEBUZVhhS2o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= @@ -37,6 +41,7 @@ github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f h1:aZp0e2vLN4MToVqnjNEYEtrEA8RH8U8FN1CU7JgqsPU= @@ -55,5 +60,7 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/s3Share.go b/internal/s3Share.go index 00997d7..fe98a62 100644 --- a/internal/s3Share.go +++ b/internal/s3Share.go @@ -4,16 +4,17 @@ import ( "git.kapelle.org/niklas/s3share/internal/client" "git.kapelle.org/niklas/s3share/internal/db" "git.kapelle.org/niklas/s3share/internal/s3" + "git.kapelle.org/niklas/s3share/internal/types" "git.kapelle.org/niklas/s3share/internal/web" ) -func Start() { +func Start(config *types.AppConfig) { db, err := db.NewSqlLiteDB("foo.db") if err != nil { panic(err) } - s3Client, err := s3.NewMinio("localhost:9000", "testo", "testo", "hunter22", false) + s3Client, err := s3.NewMinio(config.S3Endpoint, config.S3Bucket, config.S3AccessKey, config.S3SecretKey, config.S3SSL) if err != nil { panic(err) @@ -21,13 +22,7 @@ func Start() { client := client.NewClient(db, s3Client) - // share, err := client.CreateShare(context.Background(), "/go.mod") - // if err != nil { - // panic(err) - // } - // logrus.Info(share.Slug) - - err = web.StartWebserver("localhost:8080", *client) + err = web.StartWebserver(config.Address, *client) if err != nil { panic(err) } diff --git a/internal/types/share.go b/internal/types/share.go index 2f8f8f9..9284306 100644 --- a/internal/types/share.go +++ b/internal/types/share.go @@ -4,3 +4,12 @@ type Share struct { Slug string `json:"slug"` Key string `json:"key"` } + +type AppConfig struct { + S3Endpoint string + S3AccessKey string + S3SecretKey string + S3SSL bool + S3Bucket string + Address string +}