def extract_info(self, package): """Gets version number, platform & hash for package. Args: package (str): filename """ if os.path.splitext(package)[1].lower() not in \ self.supported_extensions: msg = u'Not a supported archive format: {}'.format(package) self.info['reason'] = msg log.error(msg) return try: self.version = get_version_number(package) except UtilsError: msg = u'Package version not formatted correctly' self.info[u'reason'] = msg log.error(msg) return try: self.platform = parse_platform(package) except UtilsError: msg = u'Package platform not formatted correctly' self.info[u'reason'] = msg log.error(msg) return # No need to get any more info if above failed self.name = self._get_package_name(package) self.file_hash = get_package_hashes(package) self.info[u'status'] = True
def support_files(f): try: basename = os.path.basename(f) plat = parse_platform(basename) except: plat = None if plat in ['win', 'mac', 'nix', 'nix64', 'arm']: return True return False
def main(my_opts=None): global keep if my_opts is None: opts, args = parser.parse_args(sys.argv) keep = opts.keep version = check_version(opts) name = check_name(opts) # Used for testing purposes else: version = check_version(my_opts) name = check_name(my_opts) args = my_opts.args files = [] not_found_files = [] not_supported = [] for f in args[1:]: # If I cant find the file or it isn't a supported # platform then it gets put on the naughty list if not os.path.exists(f): not_found_files.append(f) elif support_files(f) is False: not_supported.append(f) else: files.append(f) print(files) # Used for testing purposes if len(files) < 1: return False for f in files: if parse_platform(f) == u'win': make_archive(name, version, f, 'zip') else: make_archive(name, version, f, 'gztar') # Providing a little feedback if len(not_found_files) > 0: print('Files not found:') for f in not_found_files: print(f) if len(not_supported) > 0: print('Not a supported platform') for f in not_supported: print(f) # Used for testing purposes return True
def make_archive(name, version, file_, archive_format=u'zip', platform=None): if platform is None: plat = parse_platform(file_) else: plat = platform file_dir = os.path.dirname(os.path.abspath(file_)) filename = '{}-{}-{}'.format(name, plat, version) filename_path = os.path.join(file_dir, filename) print('starting archive') ext = os.path.splitext(file_)[1] temp_file = name + ext if os.path.isfile(file_): shutil.copy(file_, temp_file) else: shutil.copytree(file_, temp_file) if os.path.isfile(file_): if archive_format == u'zip': with ZipFile(filename_path + '.zip', 'w') as zf: zf.write(file_, temp_file) else: with tarfile.open(filename_path + '.tar.gz', 'w:gz') as tar: tar.add(file_, temp_file) else: shutil.make_archive(filename, archive_format, file_dir, temp_file) if os.path.isfile(temp_file): os.remove(temp_file) else: shutil.rmtree(temp_file, ignore_errors=True) if keep is False: if os.path.isfile(file_): os.remove(file_) else: shutil.rmtree(file_, ignore_errors=True) return filename + ext