Exemple #1
0
def update_symstore():
    if not Common.is_dir_exists(project_symstoredir):
        print('')
        if not Inputer().requireBool({
            'tips' : '本机尚未克隆最新的符号仓库, 是否立刻进行克隆?',
            'default' : False
        }):
            Message.ShowStatus('您主动放弃了继续操作')
            Common.exit_with_pause(-1)

        git.Repo.clone_from(symbols_giturl, project_symstoredir)
    else:
        repo = git.Repo(project_symstoredir)
        if not repo.is_dirty() and not repo.untracked_files:
            Message.ShowStatus('正在尝试拉取最新的符号数据...')
            try:
                repo.remotes.origin.pull()
            except git.GitError as _err:
                Message.ShowWarning('符号数据更新失败: %s' % _err)
            else:
                Message.ShowStatus('符号数据更新成功.')
        else:
            print('')
            if Inputer().requireBool({
                'tips' : '本地符号仓库的工作区不干净, 是否重置工作区?',
                'default' : False
            }):
                repo.git.reset('--hard')
                repo.git.clean('-xdf')
                Message.ShowStatus('已成功重置本地符号仓库到干净状态.')
            else:
                Message.ShowWarning('本地符号仓库工作区不干净, 放弃更新符号数据..')
            print('')
Exemple #2
0
def ensure_store():
    if not Common.is_dir_exists(project_symstoredir):
        if not Inputer().requireBool({
            'tips' : '本机尚未克隆最新的符号仓库, 是否立刻进行克隆?',
            'default' : False
        }):
            return False

        git.Repo.clone_from(symbols_giturl, project_symstoredir)
    return True
Exemple #3
0
def get_vcvarsall_path():
    '''
    读取第一个有效 Visual Studio 的 vcvarsall.bat 所在路径
    如果检测不到则返回 None
    '''
    for vs in vs_configure:
        path = get_reg_value(vs)
        vcvarsall_path = None
        if Common.is_dir_exists(path):
            vcvarsall_path = os.path.join(path, vs['vcvarsall'])
        if Common.is_file_exists(vcvarsall_path):
            return vcvarsall_path
    return None
Exemple #4
0
def ensure_store_clean():
    if not Common.is_dir_exists(project_symstoredir):
        return False

    repo = git.Repo(project_symstoredir)
    if not repo.is_dirty() and not repo.untracked_files:
        return True

    if Inputer().requireBool({
        'tips' : '本地符号仓库的工作区不干净, 是否重置工作区?',
        'default' : False
    }):
        repo.git.reset('--hard')
        repo.git.clean('-xdf')
        Message.ShowStatus('已成功重置本地符号仓库到干净状态.')
        return True
    return False
Exemple #5
0
def ensure_store():
    if not Common.is_dir_exists(project_symstoredir):
        if not Inputer().requireBool({
                'tips': '本机尚未克隆最新的符号仓库, 是否立刻进行克隆?',
                'default': False
        }):
            return False

        # 若环境变量为空则设置个默认值
        if not os.getenv('DEFINE_REMOTE_SYMBOLS_URL'):
            os.environ[
                "DEFINE_REMOTE_SYMBOLS_URL"] = "https://github.com/PandasWS/Symbols.git"

        Message.ShowWarning('可能会抛出 UnicodeDecodeError 错误, 请无视即可.')

        try:
            git.Repo.clone_from(os.getenv('DEFINE_REMOTE_SYMBOLS_URL'),
                                project_symstoredir)
        except IndexError as _err:
            pass
    return True