// An HTTPS server that serves a GCP bucket and makes it available to apko or any // Alpine apk add call. // // APK_REPO_BUCKET is a required environment variable package main import ( "context" "os" "cloud.google.com/go/storage" "google.golang.org/api/option" "edge-infra.dev/hack/tools/apk-repository/internal" "edge-infra.dev/pkg/lib/fog" ) var ( bind = ":8080" credentials string bucket string client *storage.Client ) func main() { ctx := context.Background() bucket = os.Getenv("APK_REPO_BUCKET") if bucket == "" { panic("must set bucket name in order to run") } if envBind := os.Getenv("APK_REPO_BIND_ADDRESS"); envBind != "" { bind = envBind } logger := fog.New() var err error if credentials != "" { client, err = storage.NewClient(ctx, option.WithCredentialsFile(credentials)) } else { client, err = storage.NewClient(ctx) } if err != nil { logger.Error(err, "Failed to create client") panic(err) } bs, err := internal.NewBucketServer(ctx, client, bucket, logger) if err != nil { logger.Error(err, "Failed to create server") panic(err) } if err = bs.Run(bind); err != nil { panic(err) } }