func allFlags(flags *flag.FlagSet) []*flag.Flag { result := []*flag.Flag{} flags.VisitAll(func(f *flag.Flag) { result = append(result, f) }) return result }
// LookupOption checks boolean flag with default (usually config) and command-line // setting func LookupOption(defaultValue bool, flags *flag.FlagSet, name string) (result bool) { result = defaultValue if flags.IsSet(name) { result = flags.Lookup(name).Value.Get().(bool) } return }
// NewContext initializes context with default settings func NewContext(flags *flag.FlagSet) (*AptlyContext, error) { var err error context := &AptlyContext{ flags: flags, globalFlags: flags, dependencyOptions: -1, publishedStorages: map[string]aptly.PublishedStorage{}, } if aptly.EnableDebug { cpuprofile := flags.Lookup("cpuprofile").Value.String() if cpuprofile != "" { context.fileCPUProfile, err = os.Create(cpuprofile) if err != nil { return nil, err } pprof.StartCPUProfile(context.fileCPUProfile) } memprofile := flags.Lookup("memprofile").Value.String() if memprofile != "" { context.fileMemProfile, err = os.Create(memprofile) if err != nil { return nil, err } } memstats := flags.Lookup("memstats").Value.String() if memstats != "" { interval := flags.Lookup("meminterval").Value.Get().(time.Duration) context.fileMemStats, err = os.Create(memstats) if err != nil { return nil, err } context.fileMemStats.WriteString("# Time\tHeapSys\tHeapAlloc\tHeapIdle\tHeapReleased\n") go func() { var stats runtime.MemStats start := time.Now().UnixNano() for { runtime.ReadMemStats(&stats) if context.fileMemStats != nil { context.fileMemStats.WriteString(fmt.Sprintf("%d\t%d\t%d\t%d\t%d\n", (time.Now().UnixNano()-start)/1000000, stats.HeapSys, stats.HeapAlloc, stats.HeapIdle, stats.HeapReleased)) time.Sleep(interval) } else { break } } }() } } return context, nil }
func getVerifier(flags *flag.FlagSet) (utils.Verifier, error) { if LookupOption(context.Config().GpgDisableVerify, flags, "ignore-signatures") { return nil, nil } keyRings := flags.Lookup("keyring").Value.Get().([]string) verifier := &utils.GpgVerifier{} for _, keyRing := range keyRings { verifier.AddKeyring(keyRing) } err := verifier.InitKeyring() if err != nil { return nil, err } return verifier, nil }
func getSigner(flags *flag.FlagSet) (utils.Signer, error) { if flags.Lookup("skip-signing").Value.Get().(bool) || context.Config().GpgDisableSign { return nil, nil } signer := &utils.GpgSigner{} signer.SetKey(flags.Lookup("gpg-key").Value.String()) signer.SetKeyRing(flags.Lookup("keyring").Value.String(), flags.Lookup("secret-keyring").Value.String()) err := signer.Init() if err != nil { return nil, err } return signer, nil }
func getSigner(flags *flag.FlagSet) (utils.Signer, error) { if LookupOption(context.Config().GpgDisableSign, flags, "skip-signing") { return nil, nil } signer := &utils.GpgSigner{} signer.SetKey(flags.Lookup("gpg-key").Value.String()) signer.SetKeyRing(flags.Lookup("keyring").Value.String(), flags.Lookup("secret-keyring").Value.String()) signer.SetPassphrase(flags.Lookup("passphrase").Value.String(), flags.Lookup("passphrase-file").Value.String()) signer.SetBatch(flags.Lookup("batch").Value.Get().(bool)) err := signer.Init() if err != nil { return nil, err } return signer, nil }