Beispiel #1
0
    def create_ini(self, board, project_dir='', sayyes=False):
        """Creates a new apio project file"""

        if project_dir is None:
            project_dir = ''

        ini_path = join(project_dir, PROJECT_FILENAME)

        # Check board
        boards = Resources().boards
        if board not in boards.keys():
            click.secho('Error: No such board \'{}\''.format(board), fg='red')
            sys.exit(1)

        if isfile(ini_path):
            # -- If sayyes, skip the question
            if sayyes:
                self._create_ini_file(board, ini_path, PROJECT_FILENAME)
            else:
                click.secho(
                    'Warning: {} file already exists'.format(PROJECT_FILENAME),
                    fg='yellow')
                if click.confirm('Do you want to replace it?'):
                    self._create_ini_file(board, ini_path, PROJECT_FILENAME)
                else:
                    click.secho('Abort!', fg='red')
        else:
            self._create_ini_file(board, ini_path, PROJECT_FILENAME)
Beispiel #2
0
def cli(ctx, packages, all, list, force, platform):
    """Install packages.
       Input parameters:
         - packages: List with the names of the packages to install
         - all: Flag: Install all the packages available for that platform
         - list: Flag. List all the packages (installed or not)
         - force: Flag. Force installation
         - platform: Flag. Select platform (advaced. For developers)
    """

    # -- Install the given packages
    if packages:
        for package in packages:
            
            #-- The installion is performed by the Installer object
            Installer(package, platform, force).install()

    # -- Install all the available packages
    elif all:  # pragma: no cover
        packages = Resources(platform).packages
        for package in packages:
            Installer(package, platform, force).install()

    # -- List all the packages (installed or not)
    elif list:
        Resources(platform).list_packages(installed=True, notinstalled=True)

    # -- Invalid option. Just show the help
    else:
        click.secho(ctx.get_help())
Beispiel #3
0
    def create_ini(self, board, project_dir='', sayyes=False):
        """Creates a new apio project file"""

        if project_dir is None:
            project_dir = ''

        ini_path = join(project_dir, PROJECT_FILENAME)

        # Check board
        boards = Resources().boards
        if board not in boards.keys():
            click.secho(
                'Error: No such board \'{}\''.format(board),
                fg='red')
            sys.exit(1)

        if isfile(ini_path):
            # -- If sayyes, skip the question
            if sayyes:
                self._create_ini_file(board, ini_path, PROJECT_FILENAME)
            else:
                click.secho(
                    'Warning: {} file already exists'.format(PROJECT_FILENAME),
                    fg='yellow')
                if click.confirm('Do you want to replace it?'):
                    self._create_ini_file(board, ini_path, PROJECT_FILENAME)
                else:
                    click.secho('Abort!', fg='red')
        else:
            self._create_ini_file(board, ini_path, PROJECT_FILENAME)
Beispiel #4
0
def cli(ctx, list, fpga):
    """Manage FPGA boards."""

    if list:
        Resources().list_boards()
    elif fpga:
        Resources().list_fpgas()
    else:
        click.secho(ctx.get_help())
Beispiel #5
0
def cli(ctx, packages, all, list, platform):
    """Uninstall packages."""

    if packages:
        _uninstall(packages, platform)
    elif all:  # pragma: no cover
        packages = Resources(platform).packages
        _uninstall(packages, platform)
    elif list:
        Resources(platform).list_packages(installed=True, notinstalled=False)
    else:
        click.secho(ctx.get_help())
Beispiel #6
0
def cli(ctx, packages, all, list, force, platform):
    """Install packages."""

    if packages:
        for package in packages:
            Installer(package, platform, force).install()
    elif all:  # pragma: no cover
        packages = Resources(platform).packages
        for package in packages:
            Installer(package, platform, force).install()
    elif list:
        Resources(platform).list_packages(installed=True, notinstalled=True)
    else:
        click.secho(ctx.get_help())
Beispiel #7
0
    def _setup_windows(self):
        profile = Profile()
        resources = Resources()

        self.name = 'drivers'
        self.version = util.get_package_version(self.name, profile)
        self.spec_version = util.get_package_spec_version(self.name, resources)
Beispiel #8
0
def cli(ctx, packages, all, list):
    """Install packages."""

    if packages:
        for package in packages:
            Installer(package).install()
    elif all:  # pragma: no cover
        packages = Resources().packages
        for package in packages:
            if package == 'pio-fpga':  # skip pio-fpga
                continue
            Installer(package).install()
    elif list:
        Resources().list_packages(installed=True, notinstalled=True)
    else:
        click.secho(ctx.get_help())
Beispiel #9
0
    def __init__(self):
        profile = Profile()
        resources = Resources()

        self.name = 'examples'
        self.examples_dir = util.get_package_dir(self.name)
        self.version = util.get_package_version(self.name, profile)
        self.spec_version = util.get_package_spec_version(self.name, resources)
Beispiel #10
0
    def __init__(self, project_dir=''):
        self.profile = Profile()
        self.resources = Resources()

        if project_dir is not None:
            # Move to project dir
            project_dir = util.check_dir(project_dir)
            os.chdir(project_dir)
Beispiel #11
0
    def __init__(self):
        profile = Profile()
        resources = Resources()

        self.name = 'system'
        self.version = util.get_package_version(self.name, profile)
        self.spec_version = util.get_package_spec_version(self.name, resources)

        self.ext = ''
        if 'Windows' == platform.system():
            self.ext = '.exe'
Beispiel #12
0
 def __init__(self):
     self.resources = Resources()
Beispiel #13
0
    def __init__(self, package, platform='', force=False, checkversion=True):

        # Parse version
        if '@' in package:
            split = package.split('@')
            self.package = split[0]
            self.version = split[1]
        else:
            self.package = package
            self.version = None

        self.force_install = force
        self.packages_dir = ''

        self.resources = Resources(platform)

        if self.package in self.resources.packages:

            self.profile = Profile()

            dirname = 'packages'
            self.packages_dir = util.safe_join(util.get_home_dir(), dirname)

            # Get data
            data = self.resources.packages.get(self.package)
            distribution = self.resources.distribution

            self.specversion = distribution.get('packages').get(self.package)
            self.package_name = data.get('release').get('package_name')
            self.extension = data.get('release').get('extension')
            platform = platform or self._get_platform()

            if checkversion:
                # Check version
                valid_version = self._get_valid_version(
                    data.get('repository').get('name'),
                    data.get('repository').get('organization'),
                    data.get('release').get('tag_name'),
                    self.version,
                    self.specversion,
                    force
                )
                # Valid version
                if not valid_version:
                    # Error
                    click.secho(
                        'Error: No version {} found'.format(self.version),
                        fg='red')
                    exit(1)

                self.version = valid_version

                # e.g., [linux_x86_64, linux]
                platform_os = platform.split('_')[0]
                self.download_urls = [
                    {
                        'url': self.get_download_url(data, platform),
                        'platform': platform
                    },
                    {
                        'url': self.get_download_url(data, platform_os),
                        'platform': platform_os
                    }
                ]

        if self.packages_dir == '':
            click.secho(
                'Error: No such package \'{0}\''.format(self.package),
                fg='red')
            exit(1)
Beispiel #14
0
    def __init__(self, package, platform='', force=False):

        # Parse version
        if '@' in package:
            split = package.split('@')
            self.package = split[0]
            self.version = split[1]
        else:
            self.package = package
            self.version = None

        self.forced_install = force
        self.packages_dir = ''

        self.resources = Resources(platform)

        if self.package in self.resources.packages:

            self.profile = Profile()

            dirname = 'packages'
            self.packages_dir = join(get_home_dir(), dirname)

            # Check version
            data = self.resources.packages[self.package]
            distribution = self.resources.distribution
            self.specversion = distribution['packages'][self.package]

            version = self._get_valid_version(
                data['repository']['name'], data['repository']['organization'],
                data['release']['tag_name'], self.version, self.specversion)

            # Valid version added with @
            if version and self.version:
                self.forced_install = True
            self.version = version if version else ''

            # Valid version
            if version:
                self.platform = platform or self._get_platform()

                release = data['release']
                self.compressed_name = release['compressed_name'].replace(
                    '%V', self.version).replace('%P', self.platform)
                self.uncompressed_name = release['uncompressed_name'].replace(
                    '%V', self.version).replace('%P', self.platform)
                self.package_name = data['release']['package_name']

                if isinstance(data['release']['extension'], dict):
                    for os in ['linux', 'darwin', 'windows']:
                        if os in self.platform:
                            self.extension = data['release']['extension'][os]
                else:
                    self.extension = data['release']['extension']

                self.tarball = self._get_tarball_name(self.compressed_name,
                                                      self.extension)

                self.download_url = self._get_download_url(
                    data['repository']['name'],
                    data['repository']['organization'],
                    data['release']['tag_name'].replace('%V', self.version),
                    self.tarball)
Beispiel #15
0
    def __init__(self, package):

        # Parse version
        if '@' in package:
            split = package.split('@')
            self.package = split[0]
            self.version = split[1]
        else:
            self.package = package
            self.version = None

        self.forced_install = False
        self.valid_version = True

        self.resources = Resources()
        self.profile = Profile()

        if self.package in self.resources.packages:

            data = self.resources.packages[self.package]

            if self.version:
                # Validate version
                valid = self._validate_version(
                    data['repository']['name'],
                    data['repository']['organization'],
                    data['release']['tag_name'],
                    self.version
                )
                if valid:
                    self.forced_install = True
                else:
                    self.valid_version = False
            else:
                # Get latest version
                self.version = self._get_latest_version(
                    data['repository']['name'],
                    data['repository']['organization'],
                    data['release']['tag_name']
                )

            self.arch = self._get_architecture()

            release = data['release']
            self.compressed_name = release['compressed_name'].replace(
                '%V', self.version).replace('%A', self.arch)
            self.uncompressed_name = release['uncompressed_name'].replace(
                '%V', self.version).replace('%A', self.arch)
            self.package_name = data['release']['package_name']

            if isinstance(data['release']['extension'], dict):
                for os in ['linux', 'darwin', 'windows']:
                    if os in self.arch:
                        self.extension = data['release']['extension'][os]
            else:
                self.extension = data['release']['extension']

            self.tarball = self._get_tarball_name(
                self.compressed_name,
                self.extension
            )

            self.download_url = self._get_download_url(
                data['repository']['name'],
                data['repository']['organization'],
                data['release']['tag_name'].replace('%V', self.version),
                self.tarball
            )

            if 'main_dir' in data.keys():
                self.packages_dir = join(expanduser('~'), data['main_dir'])
            else:
                self.packages_dir = join(util.get_home_dir(), 'packages')
Beispiel #16
0
 def __init__(self):
     self.resources = Resources()
     self.profile = Profile()