Fix clink installation in python
This commit is contained in:
parent
8373b127eb
commit
3c304cf91a
@ -639,9 +639,7 @@ def get_manifest():
|
||||
"checksum": "331266334f59f2c978ff8e13bbcadb218051e790b61d9cc69e85617276c51298",
|
||||
}
|
||||
],
|
||||
"add_to_devenv_script": [
|
||||
"set CLINK_PATH=%~dp0clink-completions"
|
||||
],
|
||||
"add_to_devenv_script": [],
|
||||
}
|
||||
],
|
||||
})
|
||||
|
83
win_setup.py
83
win_setup.py
@ -23,7 +23,7 @@ def git_clone(install_dir, git_exe, url, commit_hash):
|
||||
curr_commit_hash = result.stdout.decode("utf-8").strip()
|
||||
|
||||
# Checkout correct target of Odin
|
||||
if curr_commit_hash != commit_hash:
|
||||
if not curr_commit_hash.startswith(commit_hash):
|
||||
subprocess.run(f"{git_exe} checkout master", cwd=install_dir)
|
||||
subprocess.run(f"{git_exe} pull origin master", cwd=install_dir)
|
||||
subprocess.run(f"{git_exe} checkout {commit_hash}", cwd=install_dir)
|
||||
@ -114,14 +114,26 @@ if msvc_installed == False or win10_sdk_installed == False:
|
||||
devenver.print_header("Install apps that rely on Git")
|
||||
git_exe = installed_apps["Git"][0]['exe_path']
|
||||
|
||||
# Clink Completions
|
||||
# Clink
|
||||
# ------------------------------------------------------------------------------
|
||||
clink_git_hash = "fa18736"
|
||||
clink_install_dir = pathlib.Path(devenver.base_install_dir, "clink-completions")
|
||||
git_clone(install_dir=clink_install_dir,
|
||||
clink_install_dir = installed_apps["clink"][0]['install_dir']
|
||||
clink_base_dir = clink_install_dir.parent
|
||||
|
||||
# Gizmos
|
||||
clink_gizmo_git_hash = "fb2edd9"
|
||||
clink_gizmo_install_dir = clink_base_dir / "clink-gizmos"
|
||||
git_clone(install_dir=clink_gizmo_install_dir,
|
||||
git_exe=git_exe,
|
||||
url="https://github.com/chrisant996/clink-gizmos",
|
||||
commit_hash=clink_gizmo_git_hash)
|
||||
|
||||
# Completions
|
||||
clink_completions_git_hash = "86b6f07"
|
||||
clink_completions_install_dir = clink_base_dir / "clink-completions"
|
||||
git_clone(install_dir=clink_completions_install_dir,
|
||||
git_exe=git_exe,
|
||||
url="https://github.com/vladimir-kotikov/clink-completions",
|
||||
commit_hash=clink_git_hash)
|
||||
commit_hash=clink_completions_git_hash)
|
||||
|
||||
# Odin
|
||||
# ------------------------------------------------------------------------------
|
||||
@ -162,16 +174,65 @@ if not os.path.exists(nvim_plug_vim_path):
|
||||
urllib.request.urlretrieve("https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim",
|
||||
nvim_plug_vim_path)
|
||||
|
||||
# Install clink configuration
|
||||
# ------------------------------------------------------------------------------
|
||||
clink_profile_dir = clink_base_dir / "profile"
|
||||
|
||||
clink_settings_path = clink_profile_dir / "clink_settings"
|
||||
clink_settings = f"""
|
||||
# When this file is named "default_settings" and is in the binaries
|
||||
# directory or profile directory, it provides enhanced default settings.
|
||||
|
||||
# Override built-in default settings with ones that provide a more
|
||||
# enhanced Clink experience.
|
||||
|
||||
autosuggest.enable = True
|
||||
clink.default_bindings = windows
|
||||
cmd.ctrld_exits = False
|
||||
color.arginfo = sgr 38;5;172
|
||||
color.argmatcher = sgr 1;38;5;40
|
||||
color.cmd = sgr 1;38;5;231
|
||||
color.cmdredir = sgr 38;5;172
|
||||
color.cmdsep = sgr 38;5;214
|
||||
color.comment_row = sgr 38;5;87;48;5;18
|
||||
color.description = sgr 38;5;39
|
||||
color.doskey = sgr 1;38;5;75
|
||||
color.executable = sgr 1;38;5;33
|
||||
color.filtered = sgr 38;5;231
|
||||
color.flag = sgr 38;5;117
|
||||
color.hidden = sgr 38;5;160
|
||||
color.histexpand = sgr 97;48;5;55
|
||||
color.horizscroll = sgr 38;5;16;48;5;30
|
||||
color.input = sgr 38;5;222
|
||||
color.readonly = sgr 38;5;28
|
||||
color.selected_completion = sgr 38;5;16;48;5;254
|
||||
color.selection = sgr 38;5;16;48;5;179
|
||||
color.suggestion = sgr 38;5;239
|
||||
color.unrecognized = sgr 38;5;203
|
||||
history.max_lines = 25000
|
||||
history.time_stamp = show
|
||||
match.expand_envvars = True
|
||||
match.substring = True
|
||||
|
||||
clink.path = {clink_completions_install_dir};{clink_gizmo_install_dir}
|
||||
fzf.default_bindings = True
|
||||
"""
|
||||
|
||||
devenver.lprint("Installing clink_settings to: {clink_settings_path}")
|
||||
with open(clink_settings_path, "w+") as file:
|
||||
file.write(clink_settings)
|
||||
|
||||
# Install wezterm configuration
|
||||
# ------------------------------------------------------------------------------
|
||||
wezterm_install_dir = installed_apps["WezTerm"][0]["install_dir"]
|
||||
wezterm_exe_path = installed_apps["WezTerm"][0]["exe_path"]
|
||||
wezterm_config_dest_path = wezterm_install_dir / "wezterm.lua"
|
||||
|
||||
devenver.lprint(f"Installing WezTerm config to {wezterm_config_dest_path}")
|
||||
|
||||
clink_install_dir = installed_apps["clink"][0]["install_dir"]
|
||||
clink_exe_path = clink_install_dir.relative_to(devenver.base_install_dir) / "clink_x64.exe"
|
||||
clink_exe_path_for_wezterm = str(clink_exe_path).replace("\\", "\\\\")
|
||||
clink_profile_path_for_wezterm = str(clink_profile_dir.relative_to(devenver.base_install_dir)).replace("\\", "\\\\")
|
||||
|
||||
wezterm_lua_buffer = f"""local wezterm = require 'wezterm';
|
||||
|
||||
@ -183,17 +244,15 @@ if wezterm.target_triple == "x86_64-pc-windows-msvc" then
|
||||
clink_exe = string.format("%s\\\\..\\\\..\\\\{clink_exe_path_for_wezterm}", wezterm.executable_dir)
|
||||
devenv_bat = string.format("%s\\\\..\\\\..\\\\devenv.bat", wezterm.executable_dir)
|
||||
msvc_bat = string.format("%s\\\\..\\\\..\\\\msvc\\\\setup.bat", wezterm.executable_dir)
|
||||
clink_profile = string.format("%s\\\\..\\\\..\\\\{clink_profile_path_for_wezterm}", wezterm.executable_dir)
|
||||
|
||||
-- Taken from: https://wezfurlong.org/wezterm/shell-integration.html
|
||||
-- Use OSC 7 as per the above example
|
||||
set_environment_variables['prompt'] =
|
||||
'$E]7;file://localhost/$P$E\\\\$E[32m$T$E[0m $E[35m$P$E[36m$_$G$E[0m '
|
||||
|
||||
-- use a more ls-like output format for dir
|
||||
set_environment_variables['DIRCMD'] = '/d'
|
||||
|
||||
default_prog = {{"cmd.exe", "/s", "/k",
|
||||
clink_exe, "inject", "-q",
|
||||
clink_exe, "inject", "--profile", clink_profile, "-q",
|
||||
"&&", "call", devenv_bat,
|
||||
"&&", "call", msvc_bat}}
|
||||
end
|
||||
@ -230,6 +289,7 @@ with open(wezterm_terminal_script_path, "w") as file:
|
||||
file.write(wezterm_terminal_script)
|
||||
|
||||
# Create Odin work-around scripts
|
||||
# ------------------------------------------------------------------------------
|
||||
# Odin uses J. Blow's Microsoft craziness SDK locator which relies on the
|
||||
# registry. Here we inject the registry entry that the SDK locator checks for
|
||||
# finding our portable MSVC installation.
|
||||
@ -260,6 +320,7 @@ with open(odin_msvc_uninstall_script_path, "w") as file:
|
||||
file.write(odin_msvc_uninstall_script)
|
||||
|
||||
# Add python-update bootstrap script
|
||||
# ------------------------------------------------------------------------------
|
||||
# TODO: If I'm using the terminal that this script generates it will lock the
|
||||
# executable and Python cannot open the file for verifying the SHA256.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user