machineconfig 2.0__py3-none-any.whl → 2.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/cluster/cloud_manager.py +0 -3
- machineconfig/cluster/data_transfer.py +0 -1
- machineconfig/cluster/file_manager.py +0 -1
- machineconfig/cluster/job_params.py +0 -3
- machineconfig/cluster/loader_runner.py +0 -3
- machineconfig/cluster/remote_machine.py +0 -1
- machineconfig/cluster/script_notify_upon_completion.py +0 -1
- machineconfig/cluster/sessions_managers/archive/create_zellij_template.py +5 -6
- machineconfig/cluster/sessions_managers/archive/session_managers.py +0 -1
- machineconfig/cluster/sessions_managers/enhanced_command_runner.py +17 -57
- machineconfig/cluster/sessions_managers/wt_local.py +36 -110
- machineconfig/cluster/sessions_managers/wt_local_manager.py +42 -112
- machineconfig/cluster/sessions_managers/wt_remote.py +23 -30
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +20 -62
- machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +10 -15
- machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +27 -127
- machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +10 -43
- machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +22 -101
- machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +11 -39
- machineconfig/cluster/sessions_managers/zellij_local.py +49 -102
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +34 -78
- machineconfig/cluster/sessions_managers/zellij_remote.py +17 -24
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +7 -13
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +4 -2
- machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +6 -6
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +18 -88
- machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +2 -6
- machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +12 -40
- machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -2
- machineconfig/cluster/templates/cli_click.py +0 -1
- machineconfig/cluster/templates/cli_gooey.py +0 -2
- machineconfig/cluster/templates/cli_trogon.py +0 -1
- machineconfig/cluster/templates/run_cloud.py +0 -1
- machineconfig/cluster/templates/run_cluster.py +0 -1
- machineconfig/cluster/templates/run_remote.py +0 -1
- machineconfig/cluster/templates/utils.py +27 -46
- machineconfig/jobs/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/jobs/linux/msc/cli_agents.sh +16 -0
- machineconfig/jobs/python/check_installations.py +2 -1
- machineconfig/jobs/python/create_bootable_media.py +0 -2
- machineconfig/jobs/python/python_ve_symlink.py +9 -11
- machineconfig/jobs/python/tasks.py +0 -1
- machineconfig/jobs/python/vscode/api.py +5 -5
- machineconfig/jobs/python/vscode/link_ve.py +13 -14
- machineconfig/jobs/python/vscode/select_interpreter.py +21 -22
- machineconfig/jobs/python/vscode/sync_code.py +9 -13
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +13 -13
- machineconfig/jobs/python_custom_installers/dev/aider.py +7 -15
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +9 -18
- machineconfig/jobs/python_custom_installers/dev/brave.py +10 -19
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +8 -15
- machineconfig/jobs/python_custom_installers/dev/code.py +12 -32
- machineconfig/jobs/python_custom_installers/dev/cursor.py +3 -14
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +8 -7
- machineconfig/jobs/python_custom_installers/dev/espanso.py +15 -19
- machineconfig/jobs/python_custom_installers/dev/goes.py +5 -12
- machineconfig/jobs/python_custom_installers/dev/lvim.py +9 -17
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +12 -19
- machineconfig/jobs/python_custom_installers/dev/redis.py +12 -20
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +12 -19
- machineconfig/jobs/python_custom_installers/dev/winget.py +5 -23
- machineconfig/jobs/python_custom_installers/docker.py +12 -21
- machineconfig/jobs/python_custom_installers/gh.py +11 -19
- machineconfig/jobs/python_custom_installers/hx.py +32 -16
- machineconfig/jobs/python_custom_installers/warp-cli.py +12 -20
- machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/jobs/python_generic_installers/config.json +1 -1
- machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +1 -1
- machineconfig/jobs/windows/msc/cli_agents.bat +0 -0
- machineconfig/jobs/windows/msc/cli_agents.ps1 +0 -0
- machineconfig/jobs/windows/start_terminal.ps1 +1 -1
- machineconfig/profile/create.py +38 -26
- machineconfig/profile/create_hardlinks.py +29 -20
- machineconfig/profile/shell.py +56 -32
- machineconfig/scripts/__init__.py +0 -2
- machineconfig/scripts/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/cloud/init.sh +2 -2
- machineconfig/scripts/linux/checkout_versions +1 -1
- machineconfig/scripts/linux/choose_wezterm_theme +1 -1
- machineconfig/scripts/linux/cloud_copy +1 -1
- machineconfig/scripts/linux/cloud_manager +1 -1
- machineconfig/scripts/linux/cloud_mount +1 -1
- machineconfig/scripts/linux/cloud_repo_sync +1 -1
- machineconfig/scripts/linux/cloud_sync +1 -1
- machineconfig/scripts/linux/croshell +1 -1
- machineconfig/scripts/linux/devops +7 -7
- machineconfig/scripts/linux/fire +1 -1
- machineconfig/scripts/linux/fire_agents +3 -2
- machineconfig/scripts/linux/ftpx +1 -1
- machineconfig/scripts/linux/gh_models +1 -1
- machineconfig/scripts/linux/kill_process +1 -1
- machineconfig/scripts/linux/mcinit +1 -1
- machineconfig/scripts/linux/repos +1 -1
- machineconfig/scripts/linux/scheduler +1 -1
- machineconfig/scripts/linux/start_slidev +1 -1
- machineconfig/scripts/linux/start_terminals +1 -1
- machineconfig/scripts/linux/url2md +1 -1
- machineconfig/scripts/linux/warp-cli.sh +122 -0
- machineconfig/scripts/linux/wifi_conn +1 -1
- machineconfig/scripts/python/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_agents.cpython-313.pyc +0 -0
- machineconfig/scripts/python/ai/__init__.py +0 -0
- machineconfig/scripts/python/ai/generate_files.py +83 -0
- machineconfig/scripts/python/ai/instructions/python/dev.instructions.md +2 -2
- machineconfig/scripts/python/ai/mcinit.py +14 -7
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +10 -5
- machineconfig/scripts/python/archive/tmate_conn.py +5 -5
- machineconfig/scripts/python/archive/tmate_start.py +7 -7
- machineconfig/scripts/python/choose_wezterm_theme.py +35 -32
- machineconfig/scripts/python/cloud_copy.py +23 -14
- machineconfig/scripts/python/cloud_mount.py +36 -24
- machineconfig/scripts/python/cloud_repo_sync.py +40 -27
- machineconfig/scripts/python/cloud_sync.py +4 -4
- machineconfig/scripts/python/croshell.py +40 -29
- machineconfig/scripts/python/devops.py +45 -27
- machineconfig/scripts/python/devops_add_identity.py +15 -25
- machineconfig/scripts/python/devops_add_ssh_key.py +8 -8
- machineconfig/scripts/python/devops_backup_retrieve.py +18 -16
- machineconfig/scripts/python/devops_devapps_install.py +25 -20
- machineconfig/scripts/python/devops_update_repos.py +232 -59
- machineconfig/scripts/python/dotfile.py +17 -15
- machineconfig/scripts/python/fire_agents.py +48 -22
- machineconfig/scripts/python/fire_jobs.py +93 -58
- machineconfig/scripts/python/ftpx.py +26 -15
- machineconfig/scripts/python/get_zellij_cmd.py +8 -7
- machineconfig/scripts/python/helpers/cloud_helpers.py +33 -28
- machineconfig/scripts/python/helpers/helpers2.py +27 -16
- machineconfig/scripts/python/helpers/helpers4.py +45 -32
- machineconfig/scripts/python/helpers/helpers5.py +1 -1
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +32 -10
- machineconfig/scripts/python/mount_nfs.py +9 -16
- machineconfig/scripts/python/mount_nw_drive.py +10 -5
- machineconfig/scripts/python/mount_ssh.py +9 -7
- machineconfig/scripts/python/repos.py +216 -58
- machineconfig/scripts/python/snapshot.py +0 -1
- machineconfig/scripts/python/start_slidev.py +11 -6
- machineconfig/scripts/python/start_terminals.py +22 -16
- machineconfig/scripts/python/viewer_template.py +0 -1
- machineconfig/scripts/python/wifi_conn.py +49 -75
- machineconfig/scripts/python/wsl_windows_transfer.py +9 -7
- machineconfig/scripts/windows/checkout_version.ps1 +1 -3
- machineconfig/scripts/windows/choose_wezterm_theme.ps1 +1 -3
- machineconfig/scripts/windows/cloud_copy.ps1 +2 -6
- machineconfig/scripts/windows/cloud_manager.ps1 +1 -1
- machineconfig/scripts/windows/cloud_repo_sync.ps1 +1 -2
- machineconfig/scripts/windows/cloud_sync.ps1 +2 -2
- machineconfig/scripts/windows/croshell.ps1 +2 -2
- machineconfig/scripts/windows/devops.ps1 +1 -4
- machineconfig/scripts/windows/dotfile.ps1 +1 -3
- machineconfig/scripts/windows/fire.ps1 +1 -1
- machineconfig/scripts/windows/ftpx.ps1 +2 -2
- machineconfig/scripts/windows/gpt.ps1 +1 -1
- machineconfig/scripts/windows/kill_process.ps1 +1 -2
- machineconfig/scripts/windows/mcinit.ps1 +1 -1
- machineconfig/scripts/windows/mount_nfs.ps1 +1 -1
- machineconfig/scripts/windows/mount_ssh.ps1 +1 -1
- machineconfig/scripts/windows/pomodoro.ps1 +1 -1
- machineconfig/scripts/windows/py2exe.ps1 +1 -3
- machineconfig/scripts/windows/repos.ps1 +1 -1
- machineconfig/scripts/windows/scheduler.ps1 +1 -1
- machineconfig/scripts/windows/snapshot.ps1 +2 -2
- machineconfig/scripts/windows/start_slidev.ps1 +1 -1
- machineconfig/scripts/windows/start_terminals.ps1 +1 -1
- machineconfig/scripts/windows/wifi_conn.ps1 +1 -1
- machineconfig/scripts/windows/wsl_windows_transfer.ps1 +1 -3
- machineconfig/settings/lf/linux/lfrc +2 -1
- machineconfig/settings/linters/.ruff_cache/.gitignore +2 -0
- machineconfig/settings/linters/.ruff_cache/CACHEDIR.TAG +1 -0
- machineconfig/settings/lvim/windows/archive/config_additional.lua +1 -1
- machineconfig/settings/svim/linux/init.toml +1 -1
- machineconfig/settings/svim/windows/init.toml +1 -1
- machineconfig/setup_linux/web_shortcuts/croshell.sh +3 -52
- machineconfig/setup_linux/web_shortcuts/interactive.sh +6 -6
- machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -4
- machineconfig/setup_windows/web_shortcuts/all.ps1 +2 -2
- machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +1 -1
- machineconfig/setup_windows/web_shortcuts/croshell.ps1 +1 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +5 -5
- machineconfig/setup_windows/wt_and_pwsh/install_fonts.ps1 +51 -15
- machineconfig/setup_windows/wt_and_pwsh/set_pwsh_theme.py +58 -13
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +45 -37
- machineconfig/utils/ai/generate_file_checklist.py +8 -10
- machineconfig/utils/ai/url2md.py +4 -2
- machineconfig/utils/cloud/onedrive/setup_oauth.py +1 -0
- machineconfig/utils/cloud/onedrive/transaction.py +63 -98
- machineconfig/utils/code.py +62 -41
- machineconfig/utils/installer.py +29 -35
- machineconfig/utils/installer_utils/installer_abc.py +11 -11
- machineconfig/utils/installer_utils/installer_class.py +155 -74
- machineconfig/utils/links.py +112 -31
- machineconfig/utils/notifications.py +211 -0
- machineconfig/utils/options.py +41 -42
- machineconfig/utils/path.py +13 -6
- machineconfig/utils/path_reduced.py +614 -311
- machineconfig/utils/procs.py +48 -42
- machineconfig/utils/scheduling.py +0 -1
- machineconfig/utils/source_of_truth.py +27 -0
- machineconfig/utils/ssh.py +146 -85
- machineconfig/utils/terminal.py +84 -37
- machineconfig/utils/upgrade_packages.py +91 -0
- machineconfig/utils/utils2.py +39 -50
- machineconfig/utils/utils5.py +195 -116
- machineconfig/utils/ve.py +13 -5
- {machineconfig-2.0.dist-info → machineconfig-2.2.dist-info}/METADATA +14 -13
- {machineconfig-2.0.dist-info → machineconfig-2.2.dist-info}/RECORD +212 -237
- machineconfig/jobs/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python/__pycache__/python_ve_symlink.cpython-311.pyc +0 -0
- machineconfig/jobs/python/archive/python_tools.txt +0 -12
- machineconfig/jobs/python/vscode/__pycache__/select_interpreter.cpython-311.pyc +0 -0
- machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_generic_installers/update.py +0 -3
- machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/profile/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/profile/__pycache__/create.cpython-311.pyc +0 -0
- machineconfig/profile/__pycache__/shell.cpython-311.pyc +0 -0
- machineconfig/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/linux/activate_ve +0 -87
- machineconfig/scripts/python/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/cloud_copy.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/cloud_mount.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/cloud_sync.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/croshell.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_backup_retrieve.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_agents.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_jobs.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_jobs.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/get_zellij_cmd.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/repos.cpython-311.pyc +0 -0
- machineconfig/scripts/python/ai/__pycache__/init.cpython-311.pyc +0 -0
- machineconfig/scripts/python/ai/__pycache__/mcinit.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/cloud_helpers.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers2.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-313.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/repo_sync_helpers.cpython-311.pyc +0 -0
- machineconfig/scripts/windows/activate_ve.ps1 +0 -54
- machineconfig/setup_linux/web_shortcuts/all.sh +0 -48
- machineconfig/setup_linux/web_shortcuts/update_system.sh +0 -48
- machineconfig/utils/utils.py +0 -95
- /machineconfig/setup_linux/web_shortcuts/{tmp.sh → android.sh} +0 -0
- {machineconfig-2.0.dist-info → machineconfig-2.2.dist-info}/WHEEL +0 -0
- {machineconfig-2.0.dist-info → machineconfig-2.2.dist-info}/top_level.txt +0 -0
|
@@ -1,60 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/bash
|
|
2
|
-
#=======================================================================
|
|
3
|
-
# 🐊 CROCODILE SHELL SETUP SCRIPT
|
|
4
|
-
#=======================================================================
|
|
5
|
-
# This script sets up the crocodile shell environment with all dependencies
|
|
6
2
|
|
|
7
|
-
echo """#=======================================================================
|
|
8
|
-
🚀 ENVIRONMENT SETUP | Quick installation via URL shorteners
|
|
9
|
-
#=======================================================================
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
echo """#=======================================================================
|
|
13
|
-
🐍 PYTHON ENVIRONMENT | Setting up Python virtual environment
|
|
14
|
-
#=======================================================================
|
|
15
|
-
|
|
16
|
-
Setting up Python virtual environment via bit.ly shortlink...
|
|
17
|
-
"""
|
|
18
|
-
# Alternative URL: curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/ve.sh | bash
|
|
19
3
|
curl bit.ly/cfgvelinux -L | bash
|
|
20
|
-
|
|
21
|
-
echo """#=======================================================================
|
|
22
|
-
📦 CODE REPOSITORIES | Cloning project repositories
|
|
23
|
-
#=======================================================================
|
|
24
|
-
|
|
25
|
-
Cloning essential repositories via bit.ly shortlink...
|
|
26
|
-
"""
|
|
27
|
-
# Alternative URL: curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/repos.sh | bash
|
|
28
4
|
curl bit.ly/cfgreposlinux -L | bash
|
|
29
5
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
6
|
+
cd $HOME/code/machineconfig
|
|
7
|
+
$HOME/.local/bin/uv sync --no-dev
|
|
8
|
+
$HOME/.local/bin/uv pip install -e ../crocodile
|
|
33
9
|
|
|
34
|
-
Setting up configuration symlinks...
|
|
35
|
-
Note: This may require sudo permissions for .ssh permissions
|
|
36
|
-
"""
|
|
37
10
|
source $HOME/code/machineconfig/src/machineconfig/setup_linux/symlinks.sh
|
|
38
|
-
|
|
39
|
-
echo """#=======================================================================
|
|
40
|
-
🔄 SHELL RELOADING | Refreshing shell configuration
|
|
41
|
-
#=======================================================================
|
|
42
|
-
|
|
43
|
-
Reloading bash configuration...
|
|
44
|
-
"""
|
|
45
11
|
. ~/.bashrc
|
|
46
|
-
|
|
47
|
-
echo """#=======================================================================
|
|
48
|
-
⚙️ DEVELOPMENT TOOLS | Developer applications
|
|
49
|
-
#=======================================================================
|
|
50
|
-
|
|
51
|
-
# To install development applications, run:
|
|
52
|
-
# source <(sudo cat ~/code/machineconfig/src/machineconfig/setup_linux/devapps.sh)
|
|
53
|
-
|
|
54
|
-
#=======================================================================
|
|
55
|
-
✅ SETUP COMPLETE | CroShell environment setup finished
|
|
56
|
-
#=======================================================================
|
|
57
|
-
|
|
58
|
-
🚀 Your CroShell development environment is ready to use!
|
|
59
|
-
"""
|
|
60
|
-
|
|
@@ -37,8 +37,8 @@ echo """#=======================================================================
|
|
|
37
37
|
🐍 PYTHON ENVIRONMENT | Virtual environment setup
|
|
38
38
|
#=======================================================================
|
|
39
39
|
"""
|
|
40
|
-
read -p "🐍 Install Python virtual environment '
|
|
41
|
-
export ve_name="
|
|
40
|
+
read -p "🐍 Install Python virtual environment '.venv' [y]/n? " choice
|
|
41
|
+
export ve_name=".venv"
|
|
42
42
|
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
43
43
|
echo """ 🔧 Setting up Python environment...
|
|
44
44
|
"""
|
|
@@ -102,7 +102,7 @@ choice=${choice:-y}
|
|
|
102
102
|
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
103
103
|
echo """ 🔧 Creating symlinks and setting permissions...
|
|
104
104
|
"""
|
|
105
|
-
source $HOME/
|
|
105
|
+
source $HOME/code/machineconfig/.venv/bin/activate
|
|
106
106
|
python -m fire machineconfig.profile.create main --choice=all
|
|
107
107
|
sudo chmod 600 $HOME/.ssh/*
|
|
108
108
|
sudo chmod 700 $HOME/.ssh
|
|
@@ -120,7 +120,7 @@ choice=${choice:-y}
|
|
|
120
120
|
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
121
121
|
echo """ 🔧 Installing CLI applications...
|
|
122
122
|
"""
|
|
123
|
-
. $HOME/
|
|
123
|
+
. $HOME/code/machineconfig/.venv/bin/activate
|
|
124
124
|
python -m fire machineconfig.scripts.python.devops_devapps_install main --which=AllEssentials
|
|
125
125
|
. $HOME/.bashrc
|
|
126
126
|
else
|
|
@@ -137,10 +137,10 @@ choice=${choice:-y}
|
|
|
137
137
|
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
138
138
|
echo """ 🔧 Installing development tools...
|
|
139
139
|
"""
|
|
140
|
-
. $HOME/venvs/ve/bin/activate
|
|
141
140
|
(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) || true
|
|
142
141
|
sudo nala install libssl-dev -y
|
|
143
142
|
sudo nala install ffmpeg -y
|
|
143
|
+
. $HOME/code/machineconfig/.venv/bin/activate
|
|
144
144
|
python -m fire machineconfig.scripts.python.devops_devapps_install main --which=wezterm,brave,code
|
|
145
145
|
else
|
|
146
146
|
echo """ ⏭️ Skipping development tools installation
|
|
@@ -171,7 +171,7 @@ choice=${choice:-y}
|
|
|
171
171
|
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
172
172
|
echo """ 🔄 Retrieving data...
|
|
173
173
|
"""
|
|
174
|
-
. $HOME/
|
|
174
|
+
. $HOME/code/machineconfig/.venv/bin/activate
|
|
175
175
|
python -m fire machineconfig.scripts.python.devops_backup_retrieve main --direction=RETRIEVE
|
|
176
176
|
else
|
|
177
177
|
echo """ ⏭️ Skipping data retrieval
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/bash
|
|
2
|
-
#=======================================================================
|
|
3
|
-
# 🔒 SSH SERVER SETUP SCRIPT
|
|
4
|
-
#=======================================================================
|
|
5
|
-
# This script sets up SSH server with public key authentication
|
|
6
2
|
|
|
7
3
|
echo """#=======================================================================
|
|
8
4
|
🔑 SSH KEY SETUP | Configuring SSH public key authentication
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
(iwr bit.ly/cfgvewindows).Content | iex
|
|
7
7
|
|
|
8
8
|
# pwsh profile
|
|
9
|
-
$machineconfig = (& "$HOME\
|
|
9
|
+
$machineconfig = (& "$HOME\code\machineconfig\.venv\Scripts\python.exe" -c "print(__import__('machineconfig').__file__[:-12])")
|
|
10
10
|
# . $machineconfig/setup_windows/wt_and_pwsh.ps1 # experimental
|
|
11
11
|
# OR: python -c "from machineconfig.setup_windows.wt_and_pwsh.setup_pwsh_theme import install_nerd_fonts; install_nerd_fonts()"
|
|
12
12
|
|
|
13
|
-
# & "$HOME\
|
|
13
|
+
# & "$HOME\code\machineconfig\.venv\Scripts\activate.ps1"
|
|
14
14
|
# python -m fire machineconfig.profile.create_hardlinks main --choice=all
|
|
15
15
|
# deactivate
|
|
16
16
|
|
|
@@ -30,7 +30,7 @@ if (Test-Path -Path "~/AppData/Roaming/npm/figlet") { # may be ensure that util
|
|
|
30
30
|
if (Test-Path -Path "~/AppData/Local/Microsoft/WindowsApps/boxes.exe") { # may be ensure that utility.cmd is available
|
|
31
31
|
Write-Output "boxes already installed ✅"
|
|
32
32
|
} else {
|
|
33
|
-
|
|
33
|
+
. "$env:USERPROFILE\code\machineconfig\.venv\Scripts\Activate.ps1"
|
|
34
34
|
python -m fire machineconfig.jobs.python_windows_installers.boxes main
|
|
35
35
|
deactivate
|
|
36
36
|
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
(iwr bit.ly/cfgreposwindows).Content | iex
|
|
11
11
|
|
|
12
12
|
# symlinks
|
|
13
|
-
.
|
|
13
|
+
. $HOME/code/machineconfig/src/machineconfig/setup_windows/symlinks.ps1
|
|
14
14
|
|
|
15
15
|
# windows terminal and powershell
|
|
16
16
|
(iwr bit.ly/cfgwt).Content | iex
|
|
@@ -8,7 +8,7 @@ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser"
|
|
|
8
8
|
Write-Host "💡 To accept all prompts automatically, run: `$yesAll = `$true`n"
|
|
9
9
|
|
|
10
10
|
# Set environment variable and execute scripts
|
|
11
|
-
$ve_name = "
|
|
11
|
+
$ve_name = ".venv"
|
|
12
12
|
|
|
13
13
|
Write-Host "🔄 Setting up Python environment..."
|
|
14
14
|
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/ve.ps1" -OutFile "ve.ps1"
|
|
@@ -92,7 +92,7 @@ if ($createLinksChoice -eq "y" -or $createLinksChoice -eq "Y") {
|
|
|
92
92
|
$linkTypeChoice = "h"
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
. ~\
|
|
95
|
+
. ~\code\machineconfig\.venv\Scripts\Activate.ps1
|
|
96
96
|
|
|
97
97
|
if ($linkTypeChoice -eq "s" -or $linkTypeChoice -eq "S") {
|
|
98
98
|
python -m fire machineconfig.profile.create main --choice=all
|
|
@@ -119,7 +119,7 @@ if (-not $yesAll) {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
} else {
|
|
122
|
-
. $HOME\
|
|
122
|
+
. $HOME\code\machineconfig\.venv\Scripts\activate.ps1
|
|
123
123
|
python -m fire machineconfig.scripts.python.devops_devapps_install main --which=AllEssentials
|
|
124
124
|
deactivate
|
|
125
125
|
}
|
|
@@ -146,7 +146,7 @@ if (-not $yesAll) {
|
|
|
146
146
|
}
|
|
147
147
|
if ([string]::IsNullOrEmpty($choice)) { $choice = "y" }
|
|
148
148
|
if ($choice -eq "y" -or $choice -eq "Y") {
|
|
149
|
-
. ~\
|
|
149
|
+
. ~\code\machineconfig\.venv\Scripts\Activate.ps1
|
|
150
150
|
python -m fire machineconfig.scripts.python.devops_backup_retrieve main --direction=RETRIEVE
|
|
151
151
|
} else {
|
|
152
152
|
Write-Host "Installation aborted."
|
|
@@ -170,7 +170,7 @@ if ($choice -eq "y" -or $choice -eq "Y") {
|
|
|
170
170
|
python -m fire machineconfig.setup_windows.wt_and_pwsh.set_wt_settings main
|
|
171
171
|
winget install --no-upgrade --name "Brave" --Id "Brave.Brave" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
172
172
|
winget install --no-upgrade --name "Microsoft Visual Studio Code" --Id "Microsoft.VisualStudioCode" --source winget --scope user --accept-package-agreements --accept-source-agreements
|
|
173
|
-
. $HOME\
|
|
173
|
+
. $HOME\code\machineconfig\.venv\Scripts\Activate.ps1
|
|
174
174
|
python -m fire machineconfig.setup_windows.wt_and_pwsh.set_pwsh_theme install_nerd_fonts
|
|
175
175
|
python -m fire machineconfig.setup_windows.wt_and_pwsh.set_wt_settings main
|
|
176
176
|
|
|
@@ -4,24 +4,60 @@ $FONTS = 0x14
|
|
|
4
4
|
$Path = ".\fonts-to-be-installed"
|
|
5
5
|
$objShell = New-Object -ComObject Shell.Application
|
|
6
6
|
$objFolder = $objShell.Namespace($FONTS)
|
|
7
|
-
$Fontdir =
|
|
7
|
+
$Fontdir = Get-ChildItem -Path $Path -File
|
|
8
|
+
|
|
9
|
+
# Normalization helper: remove spaces, underscores, hyphens, 'nerd', 'font', and collapse 'nf' for broad matching
|
|
10
|
+
function Normalize-FontName {
|
|
11
|
+
param([string]$Name)
|
|
12
|
+
$n = $Name.ToLower()
|
|
13
|
+
$n = $n -replace '[ _-]', ''
|
|
14
|
+
$n = $n -replace 'nerd', ''
|
|
15
|
+
$n = $n -replace 'font', ''
|
|
16
|
+
$n = $n -replace 'nf', ''
|
|
17
|
+
return $n
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
# Cache installed font basenames once (raw + normalized map)
|
|
21
|
+
$installedFontFiles = Get-ChildItem C:\Windows\Fonts -File
|
|
22
|
+
$installedFonts = @{}
|
|
23
|
+
foreach ($f in $installedFontFiles) { $installedFonts[(Normalize-FontName $f.BaseName)] = 1 }
|
|
24
|
+
|
|
25
|
+
Write-Host "Existing related fonts detected:" ($installedFonts.Keys | Where-Object { $_ -match 'caskaydiacove|cascadiacode' } | Sort-Object | Get-Unique) -ForegroundColor DarkGray
|
|
8
26
|
|
|
9
27
|
foreach ($File in $Fontdir) {
|
|
10
|
-
if (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
28
|
+
if ($File.Name -notmatch 'pfb$') {
|
|
29
|
+
$candidateRaw = $File.BaseName
|
|
30
|
+
$candidateNorm = Normalize-FontName $candidateRaw
|
|
31
|
+
|
|
32
|
+
# 1. Exact file existence check (handles .ttf/.otf pairs) before invoking Shell CopyHere.
|
|
33
|
+
$destFile = Join-Path -Path 'C:\Windows\Fonts' -ChildPath $File.Name
|
|
34
|
+
if (Test-Path -LiteralPath $destFile) { Write-Host "Skip (file exists) $($File.Name)" -ForegroundColor Green; continue }
|
|
35
|
+
|
|
36
|
+
# 2. Registry check: Fonts are registered under HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
|
|
37
|
+
try {
|
|
38
|
+
$fontReg = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts' -ErrorAction Stop
|
|
39
|
+
$regMatch = $false
|
|
40
|
+
foreach ($prop in $fontReg.PSObject.Properties) {
|
|
41
|
+
$val = ($prop.Value | Out-String).Trim()
|
|
42
|
+
$nm = ($prop.Name | Out-String).Trim()
|
|
43
|
+
$valNorm = Normalize-FontName ( [System.IO.Path]::GetFileNameWithoutExtension($val) )
|
|
44
|
+
$nmNorm = Normalize-FontName $nm
|
|
45
|
+
if ($valNorm -eq $candidateNorm -or $nmNorm -eq $candidateNorm -or $nmNorm -match [Regex]::Escape($candidateNorm)) { $regMatch = $true; break }
|
|
46
|
+
}
|
|
47
|
+
if ($regMatch) {
|
|
48
|
+
Write-Host "Skip (registry) $($File.Name)" -ForegroundColor Green
|
|
49
|
+
continue
|
|
20
50
|
}
|
|
51
|
+
} catch {
|
|
52
|
+
Write-Host "Registry font query failed: $($_.Exception.Message) (continuing)" -ForegroundColor DarkYellow
|
|
21
53
|
}
|
|
22
54
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
55
|
+
# 3. Original heuristic set: in-memory list
|
|
56
|
+
if ($installedFonts.ContainsKey($candidateNorm)) { Write-Host "Skip (norm map) $($File.Name)" -ForegroundColor Green; continue }
|
|
57
|
+
if ($installedFonts.Keys | Where-Object { $_ -match [Regex]::Escape($candidateNorm) }) { Write-Host "Skip (norm regex) $($File.Name)" -ForegroundColor Green; continue }
|
|
58
|
+
|
|
59
|
+
Write-Host "Installing font (no matches) $($File.Name) | norm=$candidateNorm" -ForegroundColor Yellow
|
|
60
|
+
$objFolder.CopyHere($File.FullName)
|
|
26
61
|
}
|
|
27
|
-
}
|
|
62
|
+
}
|
|
63
|
+
Write-Host "Font installation script completed." -ForegroundColor Cyan
|
|
@@ -4,11 +4,11 @@ https://glitchbone.github.io/vscode-base16-term/#/3024
|
|
|
4
4
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
from machineconfig.utils.
|
|
9
|
-
from machineconfig.utils.utils import LIBRARY_ROOT
|
|
7
|
+
from machineconfig.utils.path_reduced import PathExtended as PathExtended
|
|
8
|
+
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
10
9
|
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
11
10
|
import subprocess
|
|
11
|
+
from typing import Iterable
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
nerd_fonts = {
|
|
@@ -17,13 +17,52 @@ nerd_fonts = {
|
|
|
17
17
|
"filename_template_windows_amd_64": "CascadiaCode.zip",
|
|
18
18
|
"filename_template_linux_amd_64": "CascadiaCode.zip",
|
|
19
19
|
"strip_v": False,
|
|
20
|
-
"exe_name": "nerd_fonts"
|
|
20
|
+
"exe_name": "nerd_fonts",
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
# Patterns to match any installed variant (NF, Nerd Font, Mono, Propo, style weights) of Cascadia/Caskaydia
|
|
25
|
+
# We'll compile them at runtime for flexibility. Keep them simple to avoid false positives.
|
|
26
|
+
REQUIRED_FONT_PATTERNS: tuple[str, ...] = (r"caskaydiacove.*(nf|nerd ?font)", r"cascadiacode.*(nf|nerd ?font)")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _list_installed_fonts() -> list[str]:
|
|
30
|
+
"""Return list of installed font file base names (without extension) on Windows.
|
|
31
|
+
|
|
32
|
+
Uses PowerShell to enumerate c:\\windows\\fonts because Python on *nix host can't rely on that path.
|
|
33
|
+
If PowerShell call fails (e.g. running on non-Windows), returns empty list so install proceeds.
|
|
34
|
+
"""
|
|
35
|
+
try:
|
|
36
|
+
# Query only base names to make substring matching simpler; remove underscores like the PS script does.
|
|
37
|
+
cmd = ["powershell.exe", "-NoLogo", "-NonInteractive", "-Command", "Get-ChildItem -Path C:/Windows/Fonts -File | Select-Object -ExpandProperty BaseName"]
|
|
38
|
+
res = subprocess.run(cmd, capture_output=True, text=True, check=True) # noqa: S603 S607 (trusted command)
|
|
39
|
+
fonts = [x.strip().replace("_", "") for x in res.stdout.splitlines() if x.strip() != ""]
|
|
40
|
+
return fonts
|
|
41
|
+
except Exception as exc: # noqa: BLE001
|
|
42
|
+
print(f"⚠️ Could not enumerate installed fonts (continuing with install). Reason: {exc}")
|
|
43
|
+
return []
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _missing_required_fonts(installed_fonts: Iterable[str]) -> list[str]:
|
|
47
|
+
import re
|
|
48
|
+
|
|
49
|
+
installed_norm = [f.lower().replace(" ", "") for f in installed_fonts]
|
|
50
|
+
missing: list[str] = []
|
|
51
|
+
for pattern in REQUIRED_FONT_PATTERNS:
|
|
52
|
+
regex = re.compile(pattern)
|
|
53
|
+
if not any(regex.search(f) for f in installed_norm):
|
|
54
|
+
missing.append(pattern)
|
|
55
|
+
return missing
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def install_nerd_fonts() -> None:
|
|
59
|
+
print(f"\n{'=' * 80}\n📦 INSTALLING NERD FONTS 📦\n{'=' * 80}")
|
|
60
|
+
installed = _list_installed_fonts()
|
|
61
|
+
missing = _missing_required_fonts(installed)
|
|
62
|
+
if len(missing) == 0:
|
|
63
|
+
print("✅ Required Nerd Fonts already installed. Skipping download & install.")
|
|
64
|
+
return
|
|
65
|
+
print(f"🔍 Missing fonts detected: {', '.join(missing)}. Proceeding with installation...")
|
|
27
66
|
print("🔍 Downloading Nerd Fonts package...")
|
|
28
67
|
folder, _version_to_be_installed = Installer.from_dict(d=nerd_fonts, name="nerd_fonts").download(version=None)
|
|
29
68
|
|
|
@@ -35,20 +74,26 @@ def install_nerd_fonts():
|
|
|
35
74
|
print("⚙️ Installing fonts via PowerShell...")
|
|
36
75
|
file = PathExtended.tmpfile(suffix=".ps1")
|
|
37
76
|
file.parent.mkdir(parents=True, exist_ok=True)
|
|
38
|
-
|
|
77
|
+
raw_content = LIBRARY_ROOT.joinpath("setup_windows/wt_and_pwsh/install_fonts.ps1").read_text(encoding="utf-8").replace(r".\fonts-to-be-installed", str(folder))
|
|
78
|
+
# PowerShell 5.1 can choke on certain unicode chars in some locales; keep ASCII only.
|
|
79
|
+
content = "".join(ch for ch in raw_content if ord(ch) < 128)
|
|
39
80
|
file.write_text(content, encoding="utf-8")
|
|
40
|
-
|
|
81
|
+
try:
|
|
82
|
+
subprocess.run(rf"powershell.exe -executionpolicy Bypass -nologo -noninteractive -File {str(file)}", check=True)
|
|
83
|
+
except subprocess.CalledProcessError as cpe:
|
|
84
|
+
print(f"💥 Font installation script failed (continuing without abort): {cpe}")
|
|
85
|
+
return
|
|
41
86
|
|
|
42
87
|
print("🗑️ Cleaning up temporary files...")
|
|
43
88
|
folder.delete(sure=True)
|
|
44
|
-
print(f"\n✅ Nerd Fonts installation complete! ✅\n{'='*80}")
|
|
89
|
+
print(f"\n✅ Nerd Fonts installation complete! ✅\n{'=' * 80}")
|
|
45
90
|
|
|
46
91
|
|
|
47
92
|
def main():
|
|
48
|
-
print(f"\n{'='*80}\n🎨 POWERSHELL THEME SETUP 🎨\n{'='*80}")
|
|
93
|
+
print(f"\n{'=' * 80}\n🎨 POWERSHELL THEME SETUP 🎨\n{'=' * 80}")
|
|
49
94
|
install_nerd_fonts()
|
|
50
|
-
print(f"\n✅ All PowerShell theme components installed successfully! ✅\n{'='*80}")
|
|
95
|
+
print(f"\n✅ All PowerShell theme components installed successfully! ✅\n{'=' * 80}")
|
|
51
96
|
|
|
52
97
|
|
|
53
|
-
if __name__ ==
|
|
98
|
+
if __name__ == "__main__":
|
|
54
99
|
pass
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
"""Set Windows Terminal Settings
|
|
2
|
-
"""
|
|
1
|
+
"""Set Windows Terminal Settings"""
|
|
3
2
|
|
|
4
3
|
from machineconfig.utils.utils2 import randstr, read_json
|
|
5
|
-
from machineconfig.utils.path_reduced import
|
|
4
|
+
from machineconfig.utils.path_reduced import PathExtended as PathExtended
|
|
6
5
|
from machineconfig.utils.io_save import save_json
|
|
7
6
|
import platform
|
|
8
|
-
from machineconfig.utils.
|
|
7
|
+
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
9
8
|
from uuid import uuid4
|
|
10
9
|
import os
|
|
11
10
|
from typing import Any
|
|
@@ -26,13 +25,13 @@ All settings are available on GitHub: https://aka.ms/terminal-profiles-schema
|
|
|
26
25
|
console = Console()
|
|
27
26
|
system = platform.system() # Linux or Windows
|
|
28
27
|
|
|
29
|
-
assert system ==
|
|
28
|
+
assert system == "Windows", "This script is only for Windows."
|
|
30
29
|
|
|
31
30
|
|
|
32
31
|
class TerminalSettings(object):
|
|
33
32
|
def __init__(self):
|
|
34
33
|
# Grabbing Terminal Settings file:
|
|
35
|
-
print(f"\n{'='*80}\n🔍 INITIALIZING TERMINAL SETTINGS 🔍\n{'='*80}")
|
|
34
|
+
print(f"\n{'=' * 80}\n🔍 INITIALIZING TERMINAL SETTINGS 🔍\n{'=' * 80}")
|
|
36
35
|
tmp = os.getenv("LOCALAPPDATA")
|
|
37
36
|
if not isinstance(tmp, str):
|
|
38
37
|
print("❌ ERROR: Could not find LOCALAPPDATA environment variable!")
|
|
@@ -69,15 +68,16 @@ class TerminalSettings(object):
|
|
|
69
68
|
|
|
70
69
|
# 1- Customizing Powershell========================================================
|
|
71
70
|
# as opposed to Windows Powershell
|
|
72
|
-
def customize_powershell(self, nerd_font: bool=True):
|
|
71
|
+
def customize_powershell(self, nerd_font: bool = True):
|
|
73
72
|
print("\n🛠️ Customizing PowerShell profile...")
|
|
74
|
-
pwsh: dict[str, Any] = dict(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
pwsh: dict[str, Any] = dict(
|
|
74
|
+
name="PowerShell",
|
|
75
|
+
commandline="pwsh",
|
|
76
|
+
hidden=False,
|
|
77
|
+
opacity=87,
|
|
78
|
+
# guid="{" + str(uuid4()) + "}", # WT doesn't accept any GUID to identify pwsh
|
|
79
|
+
startingDirectory="%USERPROFILE%", # "%USERPROFILE%", # None: inherent from parent process.
|
|
80
|
+
)
|
|
81
81
|
if nerd_font:
|
|
82
82
|
print("🔤 Setting PowerShell font to CaskaydiaCove Nerd Font...")
|
|
83
83
|
pwsh["font"] = dict(face="CaskaydiaCove Nerd Font") # because oh-my-posh uses glyphs from this font.
|
|
@@ -102,12 +102,12 @@ class TerminalSettings(object):
|
|
|
102
102
|
|
|
103
103
|
def add_croshell(self):
|
|
104
104
|
print("\n🐊 Adding croshell profile...")
|
|
105
|
-
croshell = dict(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
105
|
+
croshell = dict(
|
|
106
|
+
name="croshell",
|
|
107
|
+
guid="{" + str(uuid4()) + "}",
|
|
108
|
+
commandline=f'powershell.exe -Command "{LIBRARY_ROOT.as_posix()}/scripts/windows/croshell.ps1"',
|
|
109
|
+
startingDirectory="%USERPROFILE%", # "%USERPROFILE%", # None: inherent from parent process.
|
|
110
|
+
)
|
|
111
111
|
# startingDirectory = None means: inheret from parent process, which will is the default, which point to /System32
|
|
112
112
|
# Launching a new profile with ctr+shift+2 is equivalent to: wt --profile croshell -d . --new-tab
|
|
113
113
|
for profile in self.profs:
|
|
@@ -122,12 +122,13 @@ class TerminalSettings(object):
|
|
|
122
122
|
def add_ubuntu(self):
|
|
123
123
|
print("\n🐧 Adding Ubuntu WSL profile...")
|
|
124
124
|
# Add Ubunto if it is not there.
|
|
125
|
-
ubuntu = dict(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
ubuntu = dict(
|
|
126
|
+
name="Ubuntu",
|
|
127
|
+
commandline="wsl -d Ubuntu -- cd ~",
|
|
128
|
+
hidden=False,
|
|
129
|
+
guid="{" + str(uuid4()) + "}",
|
|
130
|
+
startingDirectory="%USERPROFILE%", # "%USERPROFILE%", # None: inherent from parent process.
|
|
131
|
+
)
|
|
131
132
|
if not any(x.get("name") == "Ubuntu" for x in self.profs):
|
|
132
133
|
self.profs.append(ubuntu)
|
|
133
134
|
console.print(Panel("✅ Added Ubuntu WSL profile", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue"))
|
|
@@ -141,19 +142,26 @@ class TerminalSettings(object):
|
|
|
141
142
|
pwsh = croshell = ubuntu = wpwsh = cmd = azure = None
|
|
142
143
|
for profile in self.profs:
|
|
143
144
|
name = profile["name"]
|
|
144
|
-
if name == "PowerShell":
|
|
145
|
-
|
|
146
|
-
elif name == "
|
|
147
|
-
|
|
148
|
-
elif name == "
|
|
149
|
-
|
|
150
|
-
|
|
145
|
+
if name == "PowerShell":
|
|
146
|
+
pwsh = profile
|
|
147
|
+
elif name == "croshell":
|
|
148
|
+
croshell = profile
|
|
149
|
+
elif name == "Ubuntu":
|
|
150
|
+
ubuntu = profile
|
|
151
|
+
elif name == "Windows PowerShell":
|
|
152
|
+
wpwsh = profile
|
|
153
|
+
elif name == "Command Prompt":
|
|
154
|
+
cmd = profile
|
|
155
|
+
elif name == "Azure Cloud Shell":
|
|
156
|
+
azure = profile
|
|
157
|
+
else:
|
|
158
|
+
others.append(profile)
|
|
151
159
|
self.profs = [item for item in [pwsh, croshell, ubuntu, wpwsh, cmd, azure] + others if item is not None]
|
|
152
160
|
console.print(Panel("✅ Profile order standardized", title="[bold blue]Terminal Settings[/bold blue]", border_style="blue"))
|
|
153
161
|
|
|
154
162
|
|
|
155
163
|
def main():
|
|
156
|
-
print(f"\n{'='*80}\n🖥️ WINDOWS TERMINAL SETUP 🖥️\n{'='*80}")
|
|
164
|
+
print(f"\n{'=' * 80}\n🖥️ WINDOWS TERMINAL SETUP 🖥️\n{'=' * 80}")
|
|
157
165
|
shell = {"powershell": "pwsh.exe", "Windows Powershell": "powershell.exe"}["powershell"].split(".exe", maxsplit=1)[0]
|
|
158
166
|
if shell == "pwsh":
|
|
159
167
|
print("🚀 Starting Windows Terminal configuration with PowerShell...")
|
|
@@ -167,15 +175,15 @@ def main():
|
|
|
167
175
|
ts.standardize_profiles_order()
|
|
168
176
|
|
|
169
177
|
print("⌨️ Adding keyboard shortcut for pane zoom (ctrl+shift+z)...")
|
|
170
|
-
ts.dat[
|
|
178
|
+
ts.dat["actions"].append({"command": "togglePaneZoom", "keys": "ctrl+shift+z"})
|
|
171
179
|
|
|
172
180
|
ts.save_terminal_settings()
|
|
173
|
-
print(f"\n{'='*80}\n✨ WINDOWS TERMINAL SETUP COMPLETE ✨\n{'='*80}")
|
|
181
|
+
print(f"\n{'=' * 80}\n✨ WINDOWS TERMINAL SETUP COMPLETE ✨\n{'=' * 80}")
|
|
174
182
|
else:
|
|
175
183
|
error_msg = "❌ ERROR: Only PowerShell is supported, not Windows PowerShell!"
|
|
176
184
|
print(error_msg)
|
|
177
185
|
raise NotImplementedError(error_msg)
|
|
178
186
|
|
|
179
187
|
|
|
180
|
-
if __name__ ==
|
|
188
|
+
if __name__ == "__main__":
|
|
181
189
|
pass
|
|
@@ -7,20 +7,19 @@ from rich.panel import Panel
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def generate_file_checklist(repo_root: Union[str, Path], exclude_dirs: Optional[List[str]] = None) -> Path:
|
|
10
|
-
|
|
11
|
-
actual_exclude_dirs: List[str] = ['.venv', '.git', '__pycache__', 'build', 'dist', '*.egg-info']
|
|
10
|
+
actual_exclude_dirs: List[str] = [".venv", ".git", "__pycache__", "build", "dist", "*.egg-info"]
|
|
12
11
|
if exclude_dirs is not None:
|
|
13
12
|
actual_exclude_dirs = exclude_dirs
|
|
14
13
|
repo_root = Path(repo_root).expanduser().absolute()
|
|
15
14
|
output_path: Path = repo_root / ".ai" / "repo_task" / "file_checklist.md"
|
|
16
15
|
py_files: List[Path] = []
|
|
17
|
-
for filepath in repo_root.glob(
|
|
16
|
+
for filepath in repo_root.glob("**/*.py"):
|
|
18
17
|
if any(excl in filepath.parts for excl in actual_exclude_dirs) or any(filepath.match(f"**/{excl}/**") for excl in actual_exclude_dirs) or filepath.name == "__init__.py":
|
|
19
18
|
continue
|
|
20
19
|
py_files.append(filepath.relative_to(repo_root))
|
|
21
20
|
|
|
22
21
|
sh_files: List[Path] = []
|
|
23
|
-
for filepath in repo_root.glob(
|
|
22
|
+
for filepath in repo_root.glob("**/*.sh"):
|
|
24
23
|
if any(excl in filepath.parts for excl in actual_exclude_dirs) or any(filepath.match(f"**/{excl}/**") for excl in actual_exclude_dirs):
|
|
25
24
|
continue
|
|
26
25
|
sh_files.append(filepath.relative_to(repo_root))
|
|
@@ -47,17 +46,16 @@ def generate_file_checklist(repo_root: Union[str, Path], exclude_dirs: Optional[
|
|
|
47
46
|
def main() -> None:
|
|
48
47
|
import argparse
|
|
49
48
|
|
|
50
|
-
parser = argparse.ArgumentParser(description=
|
|
51
|
-
parser.add_argument(
|
|
52
|
-
parser.add_argument(
|
|
53
|
-
help='Additional directories to exclude (by default excludes .venv, .git, __pycache__, build, dist, *.egg-info)')
|
|
49
|
+
parser = argparse.ArgumentParser(description="Generate a markdown file with checkboxes for all .py and .sh files.")
|
|
50
|
+
parser.add_argument("--repo", "-r", type=str, default=str(Path.cwd()), help="Repository root path. Defaults to current working directory.")
|
|
51
|
+
parser.add_argument("--exclude", "-e", nargs="+", type=str, help="Additional directories to exclude (by default excludes .venv, .git, __pycache__, build, dist, *.egg-info)")
|
|
54
52
|
|
|
55
53
|
args = parser.parse_args()
|
|
56
54
|
|
|
57
|
-
exclude_dirs: List[str] = [
|
|
55
|
+
exclude_dirs: List[str] = [".venv", ".git", "__pycache__", "build", "dist", "*.egg-info"]
|
|
58
56
|
if args.exclude:
|
|
59
57
|
exclude_dirs.extend(args.exclude)
|
|
60
|
-
if args.repo ==
|
|
58
|
+
if args.repo == "":
|
|
61
59
|
print("Error: Repository path cannot be empty.")
|
|
62
60
|
return
|
|
63
61
|
|
machineconfig/utils/ai/url2md.py
CHANGED
|
@@ -46,7 +46,8 @@ print(f"✅ Found {len(relevant_urls)} relevant URLs. Preparing to convert to Ma
|
|
|
46
46
|
|
|
47
47
|
commands: list[str] = []
|
|
48
48
|
for a_url in relevant_urls:
|
|
49
|
-
commands.append(f"""curl {a_url} | html2markdown --output {op_dir.joinpath(a_url.split(
|
|
49
|
+
commands.append(f"""curl {a_url} | html2markdown --output {op_dir.joinpath(a_url.split("/")[-1] + "_" + randstr(5) + ".md")} """)
|
|
50
|
+
|
|
50
51
|
|
|
51
52
|
def run_command(cmd: str) -> bool:
|
|
52
53
|
try:
|
|
@@ -57,6 +58,7 @@ def run_command(cmd: str) -> bool:
|
|
|
57
58
|
print(f"❌ Error with command: {cmd[:60]}...\n{str(e)}")
|
|
58
59
|
return False
|
|
59
60
|
|
|
61
|
+
|
|
60
62
|
def main():
|
|
61
63
|
cpu_count = multiprocessing.cpu_count()
|
|
62
64
|
max_processes = min(20, cpu_count)
|
|
@@ -78,6 +80,6 @@ def main():
|
|
|
78
80
|
|
|
79
81
|
print(f"📂 Output saved to: {op_dir}\n")
|
|
80
82
|
|
|
83
|
+
|
|
81
84
|
if __name__ == "__main__":
|
|
82
85
|
main()
|
|
83
|
-
|
|
@@ -15,6 +15,7 @@ sys.path.insert(0, str(Path(__file__).parent))
|
|
|
15
15
|
# from transaction import setup_oauth_authentication, CLIENT_ID, CLIENT_SECRET, REDIRECT_URI
|
|
16
16
|
from machineconfig.utils.cloud.onedrive.transaction import CLIENT_ID, CLIENT_SECRET, REDIRECT_URI, setup_oauth_authentication
|
|
17
17
|
|
|
18
|
+
|
|
18
19
|
def main():
|
|
19
20
|
"""Main setup function."""
|
|
20
21
|
print("🔧 OneDrive OAuth Setup")
|