コード例 #1
0
def get_all_extension_repos():
    logger.debug('Finding all extension repos.')
    repo_info_list = [get_pyrevit_repo()]  # pyrevit main repo
    repo_info_list.extend(
        get_thirdparty_ext_repos())  # add all thirdparty extension repos
    logger.debug('Repos are: {}'.format(repo_info_list))
    return repo_info_list
コード例 #2
0
    def __init__(self, xaml_file_name):
        forms.WPFWindow.__init__(self, xaml_file_name)

        pyrvtabout = about.get_pyrevit_about()

        try:
            pyrvt_repo = versionmgr.get_pyrevit_repo()
            pyrvt_ver = versionmgr.get_pyrevit_version()
            nice_version = 'v{}'.format(pyrvt_ver.get_formatted())
            short_version = \
                ' v{}'.format(pyrvt_ver.get_formatted(nopatch=True))
            self.branch_name = pyrvt_repo.branch
        except Exception:
            nice_version = short_version = ''
            self.branch_name = None

        self.short_version_info.Text = short_version
        self.pyrevit_subtitle.Text = pyrvtabout.subtitle
        self.pyrevit_version.Text = nice_version
        self.pyrevit_branch.Text = self.branch_name
        self.pyrevit_engine.Text = 'Running on IronPython {}.{}.{}'\
                                   .format(sys.version_info.major,
                                           sys.version_info.minor,
                                           sys.version_info.micro)

        rocketmodetext = \
            'Rocket-mode {}' \
            .format('enabled' if __cachedengine__ else 'disabled')
        self.pyrevit_rmode.Text = rocketmodetext
        if not __cachedengine__:
            self.hide_element(self.rmode_icon)

        self.madein_tb.Text = 'in {}'.format(pyrvtabout.madein)
        self.copyright_tb.Text = pyrvtabout.copyright
コード例 #3
0
def update_pyrevit():
    """Update pyrevit and its extension repositories."""
    if _check_connection():
        third_party_updated = False
        pyrevit_updated = False
        pyrevit_has_coreupdates = has_core_updates()
        thirdparty_repos = get_thirdparty_ext_repos()

        logger.debug('List of thirdparty repos to be updated: %s',
                     thirdparty_repos)

        # update third-party extensions first, one by one
        for repo_info in thirdparty_repos:
            logger.debug('Updating repo: %s', repo_info.directory)
            try:
                upped_repo_info = update_repo(repo_info)
                logger.info(':inbox_tray: Successfully updated: %s to %s',
                            upped_repo_info.name,
                            upped_repo_info.last_commit_hash[:7])
                third_party_updated = True
            except Exception:
                logger.info(
                    'Can not update repo: %s (Run in debug to see why)',
                    repo_info.name)

        # now update pyrevit repo and reload
        pyrevit_repo = versionmgr.get_pyrevit_repo()
        if pyrevit_repo:
            if not pyrevit_has_coreupdates:
                logger.debug('Updating pyrevit repo: %s',
                             pyrevit_repo.directory)
                try:
                    upped_pyrevit_repo_info = update_repo(pyrevit_repo)
                    logger.info(':inbox_tray: Successfully updated: %s to %s',
                                upped_pyrevit_repo_info.name,
                                upped_pyrevit_repo_info.last_commit_hash[:7])
                    pyrevit_updated = True
                except Exception as err:
                    logger.info(
                        'Can not update pyrevit repo '
                        '(Run in debug to see why) | %s', err)
                # perform upgrade tasks
                logger.info('Upgrading settings...')
                upgrade.upgrade_existing_pyrevit()
        if not pyrevit_has_coreupdates:
            if third_party_updated or pyrevit_updated:
                # now reload pyrevit
                from pyrevit.loader import sessionmgr
                sessionmgr.reload_pyrevit()
            else:
                logger.info('pyRevit and extensions seem to be up-to-date.')
        else:
            from pyrevit import script
            output = script.get_output()
            output.print_html(COREUPDATE_MESSAGE.format(home=HOME_DIR))
            logger.debug('Core updates. Skippin update and reload.')
    else:
        logger.warning('No internet access detected. Skipping update.')
コード例 #4
0
ファイル: aboutscript.py プロジェクト: xulian070608/pyRevit
    def __init__(self, xaml_file_name):
        forms.WPFWindow.__init__(self, xaml_file_name)

        pyrvtabout = about.get_pyrevit_about()

        pyrvt_ver = versionmgr.get_pyrevit_version()
        nice_version = 'v{}'.format(pyrvt_ver.get_formatted())
        short_version = \
            ' v{}'.format(pyrvt_ver.get_formatted(nopatch=True))

        self.branch_name = self.deployname = None
        # check to see if git repo is valid
        try:
            pyrvt_repo = versionmgr.get_pyrevit_repo()
            self.branch_name = pyrvt_repo.branch
            self.show_element(self.git_commit)
            self.show_element(self.git_branch)
        except Exception as getbranch_ex:
            logger.debug('Error getting branch: %s', getbranch_ex)
            # other wise try to get deployment name
            attachment = Revit.PyRevit.GetAttached(int(HOST_APP.version))
            if attachment:
                try:
                    self.deployname = attachment.Clone.Deployment.Name
                    self.show_element(self.repo_deploy)
                except Exception as getdepl_ex:
                    logger.debug('Error getting depoyment: %s', getdepl_ex)

        # get cli version
        pyrvt_cli_version = 'v' + versionmgr.get_pyrevit_cli_version()
        self.show_element(self.cli_info)
        self.cliversion.Text = pyrvt_cli_version

        # get cpython engine version
        self.cpyengine = user_config.get_active_cpython_engine()

        self.short_version_info.Text = short_version
        self.pyrevit_subtitle.Text = pyrvtabout.subtitle
        self.version.Text = nice_version
        self.pyrevit_branch.Text = self.branch_name
        self.pyrevit_deploy.Text = '{} deployment'.format(self.deployname)
        self.pyrevit_engine.Text = \
            'Running on IronPython {} (cpython {})'\
                .format(sys.version.split('(')[0].strip(),
                        '.'.join(list(str(self.cpyengine.Version))))

        rocketmodetext = \
            'Rocket-mode {}' \
            .format('enabled' if __cachedengine__ else 'disabled')
        self.pyrevit_rmode.Text = rocketmodetext
        if not __cachedengine__:
            self.hide_element(self.rmode_icon)

        self.madein_tb.Text = 'in {}'.format(pyrvtabout.madein)
        self.copyright_tb.Text = pyrvtabout.copyright
コード例 #5
0
def get_all_extension_repos():
    """Return a list of repos for all installed extensions."""
    logger.debug('Finding all extension repos.')
    # pyrevit main repo
    repo_info_list = []
    pyrevit_repo = versionmgr.get_pyrevit_repo()
    if pyrevit_repo:
        repo_info_list.append(pyrevit_repo)
    # add all thirdparty extension repos
    repo_info_list.extend(get_thirdparty_ext_repos())
    logger.debug('Repos are: %s', repo_info_list)
    return repo_info_list
コード例 #6
0
def has_core_updates():
    pyrevit_repo = get_pyrevit_repo()
    if get_updates(pyrevit_repo):
        new_commits = git.get_all_new_commits(pyrevit_repo)

        logger.debug('Checking new commits on pyrevit repo.')
        for cmt_sha, cmt_msg in new_commits.items():
            logger.debug('{}: {}'.format(cmt_sha, cmt_msg))
            if CORE_UPDATE_TRIGGER in cmt_msg:
                logger.debug('pyrevit repo has core update at {}: {}'.format(
                    cmt_sha, cmt_msg))
                return True

    return False
コード例 #7
0
def has_core_updates():
    """Check whether pyRevit repo has core updates.

    This would require host application to be closed to release the file lock
    of core DLLs so they can be updated separately.
    """
    pyrevit_repo = versionmgr.get_pyrevit_repo()
    if pyrevit_repo and get_updates(pyrevit_repo):
        new_commits = libgit.get_all_new_commits(pyrevit_repo)

        logger.debug('Checking new commits on pyrevit repo.')
        for cmt_sha, cmt_msg in new_commits.items():
            logger.debug('%s: %s', cmt_sha, cmt_msg)
            if COREUPDATE_TRIGGER in cmt_msg:
                logger.debug('pyrevit repo has core update at %s: %s',
                             cmt_sha, cmt_msg)
                return True

    return False
コード例 #8
0
    def __init__(self, xaml_file_name):
        forms.WPFWindow.__init__(self, xaml_file_name)

        pyrvtabout = about.get_pyrevit_about()

        pyrvt_ver = versionmgr.get_pyrevit_version()
        nice_version = 'v{}'.format(pyrvt_ver.get_formatted())
        short_version = \
            ' v{}'.format(pyrvt_ver.get_formatted(nopatch=True))

        self.branch_name = self.deployname = None
        # check to see if git repo is valid
        try:
            pyrvt_repo = versionmgr.get_pyrevit_repo()
            self.branch_name = pyrvt_repo.branch
            self.show_element(self.git_branch)
        except Exception:
            # other wise try to get deployment name
            attachment = Revit.PyRevit.GetAttached(int(HOST_APP.version))
            if attachment:
                try:
                    self.deployname = attachment.Clone.GetDeployment().Name
                    self.show_element(self.repo_deploy)
                except Exception as e:
                    pass

        self.short_version_info.Text = short_version
        self.pyrevit_subtitle.Text = pyrvtabout.subtitle
        self.pyrevit_version.Text = nice_version
        self.pyrevit_branch.Text = self.branch_name
        self.pyrevit_deploy.Text = '{} deployment'.format(self.deployname)
        self.pyrevit_engine.Text = 'Running on IronPython {}'\
                                   .format(sys.version.split('(')[0].strip())

        rocketmodetext = \
            'Rocket-mode {}' \
            .format('enabled' if __cachedengine__ else 'disabled')
        self.pyrevit_rmode.Text = rocketmodetext
        if not __cachedengine__:
            self.hide_element(self.rmode_icon)

        self.madein_tb.Text = 'in {}'.format(pyrvtabout.madein)
        self.copyright_tb.Text = pyrvtabout.copyright