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
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
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.')
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
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
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
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
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