예제 #1
0
def _verify_executable_exists(ctx: ProjectContext, alias: Optional[str]) -> bool:
    """Return true if an alias maps to a file in a context and provide user messaging."""
    if alias is None:
        print('Cannot find an executable for a null alias.')
        return False

    if not ctx.has_registered_program(alias):
        print(f'No alias exists for {alias}')
        recommended: Optional[str] = mp.recommended_executable(mp.root_to_executable(alias))
        if recommended is not None:
            choice: str = input(f'Use recommended path for alias "{alias}": {recommended} (saves in .crank) [y/N]? ')
            if choice == 'y':
                print(f'Setting alias {alias} -> {recommended}')
                if ctx.register_program(alias, recommended):
                    ctx.save()
                    return True

        print('Use `crank register ALIAS PATH` to register a program for use.')
        print('Example: crank register cmake "C:/Program Files/CMake/bin/cmake.exe"')
        return False
    program_path = ctx.path_for_program(alias)
    if not os.path.isfile(program_path):
        print(f'Executable path for {alias} does not exist at {program_path}')
        return False
    return True
예제 #2
0
def cmd_save(ctx: ProjectContext, _args: argparse.Namespace) -> int:
    """Saves the current Crank context to file."""
    ctx.save()
    return 0