Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_get_package_data_fails_on_uppercase():
user('git init .')
with AssertRaisesContext(SystemExit, "Invalid package names, aborting."):
with redirected_stdio():
get_package_data(directory=test_data_dir)
def match_branches_with_prefix(prefix, get_branches, prune=False):
debug("match_branches_with_prefix(" + str(prefix) + ", " +
str(get_branches()) + ")")
branches = []
# Match branches
existing_branches = get_branches()
for branch in existing_branches:
if branch.startswith('remotes/origin/'):
branch = branch.split('/', 2)[-1]
if branch.startswith(prefix):
branches.append(branch)
branches = list(set(branches))
if prune:
# Prune listed branches by packages in latest upstream
with inbranch('upstream'):
pkg_names, version, pkgs_dict = get_package_data('upstream')
for branch in branches:
if branch.split(prefix)[-1].strip('/') not in pkg_names:
branches.remove(branch)
return branches
def get_package_from_branch(branch):
with inbranch(branch):
try:
package_data = get_package_data(branch)
except SystemExit:
return None
if type(package_data) not in [list, tuple]:
# It is a ret code
RpmGenerator.exit(package_data)
names, version, packages = package_data
if type(names) is list and len(names) > 1:
RpmGenerator.exit(
"RPM generator does not support generating "
"from branches with multiple packages in them, use "
"the release generator first to split packages into "
"individual branches.")
if type(packages) is dict:
return list(packages.values())[0]
def get_package_from_branch(branch):
with inbranch(branch):
try:
package_data = get_package_data(branch)
except SystemExit:
return None
if type(package_data) not in [list, tuple]:
# It is a ret code
DebianGenerator.exit(package_data)
names, version, packages = package_data
if type(names) is list and len(names) > 1:
DebianGenerator.exit(
"Debian generator does not support generating "
"from branches with multiple packages in them, use "
"the release generator first to split packages into "
"individual branches.")
if type(packages) is dict:
return list(packages.values())[0]
def detect_branches(self):
self.packages = None
with inbranch(self.src):
if self.name is not None:
self.packages = [self.name]
return [self.name]
name, version, packages = get_package_data(self.src)
self.packages = packages
# Check meta packages for valid CMakeLists.txt
if isinstance(self.packages, dict):
for path, pkg in self.packages.items():
# Check for valid CMakeLists.txt if a metapackage
self.metapackage_check(path, pkg)
return name if type(name) is list else [name]
def get_upstream_meta(upstream_dir, ros_distro):
meta = None
directory = os.getcwd()
with change_directory(upstream_dir):
if get_root() is not None: # If in a git repo
current_branch = get_current_branch()
else:
current_branch = None
name, version, packages = get_package_data(current_branch, quiet=False, release_directory=directory)
meta = {
'name': name,
'version': version,
'type': 'package.xml'
}
return meta
def post_patch(self, destination):
# Figure out the version of the given package
if self.name is not None:
warning("""\
Cannot automatically tag the release because this is not a catkin project.""")
warning("""\
Please checkout the release branch and then create a tag manually with:""")
warning(" git checkout release/" + str(self.name))
warning(" git tag -f release/" + str(self.name) + "/")
return
with inbranch(destination):
name, version, packages = get_package_data(destination)
# Execute git tag
release_tag = destination + '/' + version + '-' + self.release_inc
execute_command('git tag ' + release_tag)
create_branch('upstream', orphaned=True)
else:
track_branches(['upstream'])
# Import the given tarball
info("Importing archive into upstream branch...")
import_tarball(tarball_path, 'upstream', version, name)
# Handle patches_path
if patches_path:
import_patches(patches_path, patches_path_dict, 'upstream', version)
# Create tags
with inbranch('upstream'):
# Assert packages in upstream are the correct version
_, actual_version, _ = get_package_data('upstream')
if actual_version != version:
error("The package(s) in upstream are version '{0}', but the version to be released is '{1}', aborting."
.format(actual_version, version), exit=True)
# Create the tag
info("Creating tag: '{0}'".format(upstream_tag))
create_tag(upstream_tag)
if name_tag != upstream_tag:
info("Creating tag: '{0}'".format(name_tag))
create_tag(name_tag)