...

Source file src/edge-infra.dev/hack/tools/apk-repository/main.go

Documentation: edge-infra.dev/hack/tools/apk-repository

     1  // An HTTPS server that serves a GCP bucket and makes it available to apko or any
     2  // Alpine apk add call.
     3  //
     4  // APK_REPO_BUCKET is a required environment variable
     5  package main
     6  
     7  import (
     8  	"context"
     9  	"os"
    10  
    11  	"cloud.google.com/go/storage"
    12  	"google.golang.org/api/option"
    13  
    14  	"edge-infra.dev/hack/tools/apk-repository/internal"
    15  	"edge-infra.dev/pkg/lib/fog"
    16  )
    17  
    18  var (
    19  	bind        = ":8080"
    20  	credentials string
    21  	bucket      string
    22  	client      *storage.Client
    23  )
    24  
    25  func main() {
    26  	ctx := context.Background()
    27  	bucket = os.Getenv("APK_REPO_BUCKET")
    28  
    29  	if bucket == "" {
    30  		panic("must set bucket name in order to run")
    31  	}
    32  
    33  	if envBind := os.Getenv("APK_REPO_BIND_ADDRESS"); envBind != "" {
    34  		bind = envBind
    35  	}
    36  
    37  	logger := fog.New()
    38  
    39  	var err error
    40  	if credentials != "" {
    41  		client, err = storage.NewClient(ctx, option.WithCredentialsFile(credentials))
    42  	} else {
    43  		client, err = storage.NewClient(ctx)
    44  	}
    45  
    46  	if err != nil {
    47  		logger.Error(err, "Failed to create client")
    48  		panic(err)
    49  	}
    50  
    51  	bs, err := internal.NewBucketServer(ctx, client, bucket, logger)
    52  	if err != nil {
    53  		logger.Error(err, "Failed to create server")
    54  		panic(err)
    55  	}
    56  
    57  	if err = bs.Run(bind); err != nil {
    58  		panic(err)
    59  	}
    60  }
    61  

View as plain text