mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-04-20 19:38:39 +00:00
Correctly parse boolean flags in combination with config options. #104
Config option should act as default, while flag should override it only if set.
This commit is contained in:
2
Gomfile
2
Gomfile
@@ -8,7 +8,7 @@ gom 'github.com/mattn/go-shellwords', :commit => 'c7ca6f94add751566a61cf2199e1de
|
|||||||
gom 'github.com/mitchellh/goamz/s3', :commit => '55f224c07975fddef9d2116600c664e30df3d594'
|
gom 'github.com/mitchellh/goamz/s3', :commit => '55f224c07975fddef9d2116600c664e30df3d594'
|
||||||
gom 'github.com/mkrautz/goar', :commit => '36eb5f3452b1283a211fa35bc00c646fd0db5c4b'
|
gom 'github.com/mkrautz/goar', :commit => '36eb5f3452b1283a211fa35bc00c646fd0db5c4b'
|
||||||
gom 'github.com/smira/commander', :commit => 'f408b00e68d5d6e21b9f18bd310978dafc604e47'
|
gom 'github.com/smira/commander', :commit => 'f408b00e68d5d6e21b9f18bd310978dafc604e47'
|
||||||
gom 'github.com/smira/flag', :commit => '0d0aac2addb39050f45e92c5a6252926096dc841'
|
gom 'github.com/smira/flag', :commit => '357ed3e599ffcbd4aeaa828e1d10da2df3ea5107'
|
||||||
gom 'github.com/smira/go-ftp-protocol/protocol', :commit => '066b75c2b70dca7ae10b1b88b47534a3c31ccfaa'
|
gom 'github.com/smira/go-ftp-protocol/protocol', :commit => '066b75c2b70dca7ae10b1b88b47534a3c31ccfaa'
|
||||||
gom 'github.com/syndtr/goleveldb/leveldb', :commit => '9c181777fd66817ba10ce69563197ed8a645183c'
|
gom 'github.com/syndtr/goleveldb/leveldb', :commit => '9c181777fd66817ba10ce69563197ed8a645183c'
|
||||||
gom 'github.com/ugorji/go/codec', :commit => '71c2886f5a673a35f909803f38ece5810165097b'
|
gom 'github.com/ugorji/go/codec', :commit => '71c2886f5a673a35f909803f38ece5810165097b'
|
||||||
|
|||||||
12
cmd/cmd.go
12
cmd/cmd.go
@@ -34,6 +34,18 @@ func ListPackagesRefList(reflist *deb.PackageRefList) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
||||||
|
|
||||||
// RootCommand creates root command in command tree
|
// RootCommand creates root command in command tree
|
||||||
func RootCommand() *commander.Command {
|
func RootCommand() *commander.Command {
|
||||||
cmd := &commander.Command{
|
cmd := &commander.Command{
|
||||||
|
|||||||
@@ -104,16 +104,16 @@ func (context *AptlyContext) Config() *utils.ConfigStructure {
|
|||||||
func (context *AptlyContext) DependencyOptions() int {
|
func (context *AptlyContext) DependencyOptions() int {
|
||||||
if context.dependencyOptions == -1 {
|
if context.dependencyOptions == -1 {
|
||||||
context.dependencyOptions = 0
|
context.dependencyOptions = 0
|
||||||
if context.Config().DepFollowSuggests || context.globalFlags.Lookup("dep-follow-suggests").Value.Get().(bool) {
|
if LookupOption(context.Config().DepFollowSuggests, context.globalFlags, "dep-follow-suggests") {
|
||||||
context.dependencyOptions |= deb.DepFollowSuggests
|
context.dependencyOptions |= deb.DepFollowSuggests
|
||||||
}
|
}
|
||||||
if context.Config().DepFollowRecommends || context.globalFlags.Lookup("dep-follow-recommends").Value.Get().(bool) {
|
if LookupOption(context.Config().DepFollowRecommends, context.globalFlags, "dep-follow-recommends") {
|
||||||
context.dependencyOptions |= deb.DepFollowRecommends
|
context.dependencyOptions |= deb.DepFollowRecommends
|
||||||
}
|
}
|
||||||
if context.Config().DepFollowAllVariants || context.globalFlags.Lookup("dep-follow-all-variants").Value.Get().(bool) {
|
if LookupOption(context.Config().DepFollowAllVariants, context.globalFlags, "dep-follow-all-variants") {
|
||||||
context.dependencyOptions |= deb.DepFollowAllVariants
|
context.dependencyOptions |= deb.DepFollowAllVariants
|
||||||
}
|
}
|
||||||
if context.Config().DepFollowSource || context.globalFlags.Lookup("dep-follow-source").Value.Get().(bool) {
|
if LookupOption(context.Config().DepFollowSource, context.globalFlags, "dep-follow-source") {
|
||||||
context.dependencyOptions |= deb.DepFollowSource
|
context.dependencyOptions |= deb.DepFollowSource
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func getVerifier(flags *flag.FlagSet) (utils.Verifier, error) {
|
func getVerifier(flags *flag.FlagSet) (utils.Verifier, error) {
|
||||||
if context.Config().GpgDisableVerify || flags.Lookup("ignore-signatures").Value.Get().(bool) {
|
if LookupOption(context.Config().GpgDisableVerify, flags, "ignore-signatures") {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ func aptlyMirrorCreate(cmd *commander.Command, args []string) error {
|
|||||||
return commander.ErrCommandError
|
return commander.ErrCommandError
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadSources := context.Config().DownloadSourcePackages || context.flags.Lookup("with-sources").Value.Get().(bool)
|
downloadSources := LookupOption(context.Config().DownloadSourcePackages, context.flags, "with-sources")
|
||||||
|
|
||||||
var (
|
var (
|
||||||
mirrorName, archiveURL, distribution string
|
mirrorName, archiveURL, distribution string
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func getSigner(flags *flag.FlagSet) (utils.Signer, error) {
|
func getSigner(flags *flag.FlagSet) (utils.Signer, error) {
|
||||||
if flags.Lookup("skip-signing").Value.Get().(bool) || context.Config().GpgDisableSign {
|
if LookupOption(context.Config().GpgDisableSign, flags, "skip-signing") {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
system/t04_mirror/CreateMirror24Test_gold
Normal file
6
system/t04_mirror/CreateMirror24Test_gold
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Downloading http://security.debian.org/dists/wheezy/updates/InRelease...
|
||||||
|
gpgv: RSA key ID 46925553
|
||||||
|
gpgv: Good signature from "Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>"
|
||||||
|
|
||||||
|
Mirror [mirror24]: http://security.debian.org/ wheezy/updates successfully added.
|
||||||
|
You can run 'aptly mirror update mirror24' to download repository contents.
|
||||||
@@ -273,3 +273,16 @@ class CreateMirror23Test(BaseTest):
|
|||||||
"""
|
"""
|
||||||
runCmd = "aptly mirror create -ignore-signatures -filter='nginx | ' mirror23 http://security.debian.org/ wheezy/updates main"
|
runCmd = "aptly mirror create -ignore-signatures -filter='nginx | ' mirror23 http://security.debian.org/ wheezy/updates main"
|
||||||
expectedCode = 1
|
expectedCode = 1
|
||||||
|
|
||||||
|
|
||||||
|
class CreateMirror24Test(BaseTest):
|
||||||
|
"""
|
||||||
|
create mirror: mirror with wrong filter
|
||||||
|
"""
|
||||||
|
runCmd = "aptly mirror create -ignore-signatures=false -keyring=aptlytest.gpg mirror24 http://security.debian.org/ wheezy/updates main"
|
||||||
|
fixtureGpg = True
|
||||||
|
outputMatchPrepare = lambda _, s: re.sub(r'Signature made .* using', '', s)
|
||||||
|
|
||||||
|
configOverride = {
|
||||||
|
"gpgDisableVerify": True
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user