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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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