add support for other scms to pull (#33152)
* add support for other scms to pull * show choices for scms module in help
This commit is contained in:
parent
3b941802ac
commit
be5d68f3ad
1 changed files with 24 additions and 5 deletions
|
@ -57,6 +57,7 @@ class PullCLI(CLI):
|
|||
|
||||
DEFAULT_REPO_TYPE = 'git'
|
||||
DEFAULT_PLAYBOOK = 'local.yml'
|
||||
REPO_CHOICES = ('git', 'subversion', 'hg', 'bzr')
|
||||
PLAYBOOK_ERRORS = {
|
||||
1: 'File does not exist',
|
||||
2: 'File is not readable',
|
||||
|
@ -113,7 +114,8 @@ class PullCLI(CLI):
|
|||
self.parser.add_option('--accept-host-key', default=False, dest='accept_host_key', action='store_true',
|
||||
help='adds the hostkey for the repo url if not already added')
|
||||
self.parser.add_option('-m', '--module-name', dest='module_name', default=self.DEFAULT_REPO_TYPE,
|
||||
help='Repository module name, which ansible will use to check out the repo. Default is %s.' % self.DEFAULT_REPO_TYPE)
|
||||
help='Repository module name, which ansible will use to check out the repo. Choices are %s. Default is %s.'
|
||||
% (self.REPO_CHOICES, self.DEFAULT_REPO_TYPE))
|
||||
self.parser.add_option('--verify-commit', dest='verify', default=False, action='store_true',
|
||||
help='verify GPG signature of checked out commit, if it fails abort running the playbook. '
|
||||
'This needs the corresponding VCS module to support such an operation')
|
||||
|
@ -176,7 +178,7 @@ class PullCLI(CLI):
|
|||
if not inv_opts:
|
||||
inv_opts = " -i localhost, "
|
||||
|
||||
# FIXME: enable more repo modules hg/svn?
|
||||
# SCM specific options
|
||||
if self.options.module_name == 'git':
|
||||
repo_opts = "name=%s dest=%s" % (self.options.url, self.options.dest)
|
||||
if self.options.checkout:
|
||||
|
@ -191,14 +193,31 @@ class PullCLI(CLI):
|
|||
if self.options.verify:
|
||||
repo_opts += ' verify_commit=yes'
|
||||
|
||||
if self.options.clean:
|
||||
repo_opts += ' force=yes'
|
||||
|
||||
if self.options.tracksubs:
|
||||
repo_opts += ' track_submodules=yes'
|
||||
|
||||
if not self.options.fullclone:
|
||||
repo_opts += ' depth=1'
|
||||
elif self.options.module_name == 'subversion':
|
||||
repo_opts = "repo=%s dest=%s" % (self.options.url, self.options.dest)
|
||||
if self.options.checkout:
|
||||
repo_opts += ' revision=%s' % self.options.checkout
|
||||
if not self.options.fullclone:
|
||||
repo_opts += ' export=yes'
|
||||
elif self.options.module_name == 'hg':
|
||||
repo_opts = "repo=%s dest=%s" % (self.options.url, self.options.dest)
|
||||
if self.options.checkout:
|
||||
repo_opts += ' revision=%s' % self.options.checkout
|
||||
elif self.options.module_name == 'bzr':
|
||||
repo_opts = "name=%s dest=%s" % (self.options.url, self.options.dest)
|
||||
if self.options.checkout:
|
||||
repo_opts += ' version=%s' % self.options.checkout
|
||||
else:
|
||||
raise AnsibleOptionsError('Unsupported (%s) SCM module for pull, choices are: %s' % (self.options.module_name, ','.join(self.REPO_CHOICES)))
|
||||
|
||||
# options common to all supported SCMS
|
||||
if self.options.clean:
|
||||
repo_opts += ' force=yes'
|
||||
|
||||
path = module_loader.find_plugin(self.options.module_name)
|
||||
if path is None:
|
||||
|
|
Loading…
Reference in a new issue