pip compatible server to serve Python packages out of GitHub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

40 lines
1.2 KiB

package pypihub
import (
"fmt"
"os"
"strings"
arg "github.com/alexflint/go-arg"
)
type Config struct {
Username string `arg:"-u,--username,env:PYPIHUB_USERNAME,required,help:Username of GitHub user to login as (env: PYPIHUB_USERNAME)"`
AccessToken string `arg:"-a,--access-token,env:PYPIHUB_ACCESS_TOKEN,required,help:GitHub personal access token to use for authenticating (env: PYPIHUB_ACCESS_TOKEN)"`
RepoNames []string `arg:"positional,help:list of '<username>/<repo>' repos to proxy for (env: PYPIHUB_REPOS)"`
Bind string `arg:"-b,--bind,env:PYPIHUB_BIND,help:[<address>]:<port> to bind the server to (default: ':8287') (env: PYPIHUB_BIND)"`
}
func (c Config) Version() string {
return fmt.Sprintf("pypihub %s", VERSION)
}
func ParseConfig() Config {
var config = Config{
Bind: ":8287",
RepoNames: make([]string, 0),
}
arg.MustParse(&config)
if val, ok := os.LookupEnv("PYPIHUB_REPOS"); ok {
config.RepoNames = append(config.RepoNames, strings.Split(val, " ")...)
}
for i := range config.RepoNames {
config.RepoNames[i] = strings.TrimSpace(config.RepoNames[i])
}
config.RepoNames = uniqueSlice(config.RepoNames)
return config
}