machineconfig 7.50__py3-none-any.whl → 8.12__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/remote/cloud_manager.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +23 -11
- machineconfig/cluster/sessions_managers/wt_local_manager.py +22 -19
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +3 -1
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +3 -1
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +2 -2
- machineconfig/jobs/installer/installer_data.json +1185 -165
- machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +52 -84
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/jobs/installer/{custom → python_scripts}/boxes.py +2 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/brave.py +5 -3
- machineconfig/jobs/installer/python_scripts/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/code.py +4 -1
- machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
- machineconfig/jobs/installer/{custom → python_scripts}/hx.py +16 -12
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +27 -22
- machineconfig/jobs/installer/python_scripts/sysabc.py +139 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/wezterm.py +2 -19
- machineconfig/jobs/installer/{custom_dev → python_scripts}/winget.py +10 -14
- machineconfig/jobs/installer/python_scripts/yazi.py +121 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
- machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +13 -0
- machineconfig/jobs/scripts/powershell_scripts/obs.ps1 +4 -0
- machineconfig/jobs/scripts_dynamic/a.py +25 -0
- machineconfig/logger.py +0 -1
- machineconfig/profile/create_helper.py +21 -22
- machineconfig/profile/create_links_export.py +25 -11
- machineconfig/profile/create_shell_profile.py +14 -3
- machineconfig/profile/mapper.toml +8 -6
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/wrap_mcfg +20 -21
- machineconfig/scripts/python/agents.py +74 -50
- machineconfig/scripts/python/ai/initai.py +1 -1
- machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
- machineconfig/scripts/python/ai/{command_runner → scripts}/command_runner.sh +1 -1
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +1 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
- machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +5 -5
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -0
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
- machineconfig/scripts/python/ai/solutions/generic.py +1 -1
- machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
- machineconfig/scripts/python/cloud.py +6 -6
- machineconfig/scripts/python/croshell.py +67 -60
- machineconfig/scripts/python/devops.py +41 -21
- machineconfig/scripts/python/devops_navigator.py +0 -4
- machineconfig/scripts/python/env_manager/env_manager_tui.py +204 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/fire_jobs.py +95 -67
- machineconfig/scripts/python/ftpx.py +44 -17
- machineconfig/scripts/python/helpers/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/qr_code.py +166 -0
- machineconfig/scripts/python/helpers/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/symantic_search.py +25 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +1 -1
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +9 -7
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +21 -8
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +0 -12
- machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +30 -11
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +9 -2
- machineconfig/scripts/python/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/copilot/config.yml +1 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/crush/crush.json +10 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/gemini/settings.json +12 -0
- machineconfig/scripts/python/helpers_agents/privacy/privacy.py +109 -0
- machineconfig/scripts/python/helpers_agents/templates/prompt.txt +8 -4
- machineconfig/scripts/python/helpers_agents/templates/template.sh +18 -8
- machineconfig/scripts/python/helpers_cloud/cloud_copy.py +28 -21
- machineconfig/scripts/python/helpers_cloud/cloud_helpers.py +1 -1
- machineconfig/scripts/python/helpers_cloud/cloud_mount.py +19 -17
- machineconfig/scripts/python/helpers_cloud/cloud_sync.py +8 -7
- machineconfig/scripts/python/helpers_croshell/crosh.py +3 -3
- machineconfig/scripts/python/helpers_croshell/start_slidev.py +6 -7
- machineconfig/scripts/python/helpers_devops/cli_config.py +19 -25
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +22 -13
- machineconfig/scripts/python/helpers_devops/cli_nw.py +113 -26
- machineconfig/scripts/python/helpers_devops/cli_repos.py +37 -11
- machineconfig/scripts/python/helpers_devops/cli_self.py +84 -39
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +9 -9
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +13 -12
- machineconfig/scripts/python/helpers_devops/{cli_terminal.py → cli_share_terminal.py} +15 -17
- machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +4 -4
- machineconfig/scripts/python/helpers_devops/devops_status.py +7 -19
- machineconfig/scripts/python/helpers_devops/run_script.py +168 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_wezterm_theme.py +1 -1
- machineconfig/scripts/python/helpers_fire_command/file_wrangler.py +2 -19
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +1 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +25 -15
- machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfg +3 -3
- machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfg.ps1 +58 -1
- machineconfig/scripts/python/helpers_navigator/command_tree.py +50 -18
- machineconfig/scripts/python/helpers_network/address.py +176 -0
- machineconfig/scripts/python/helpers_network/address_switch.py +78 -0
- machineconfig/scripts/python/{nw → helpers_network}/mount_nfs.py +2 -2
- machineconfig/scripts/python/{nw → helpers_network}/mount_ssh.py +1 -1
- machineconfig/scripts/python/{nw/devops_add_identity.py → helpers_network/ssh_add_identity.py} +35 -1
- machineconfig/scripts/python/{nw/devops_add_ssh_key.py → helpers_network/ssh_add_ssh_key.py} +26 -7
- machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_linux.py +7 -7
- machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_windows.py +4 -4
- machineconfig/scripts/python/helpers_repos/clone.py +0 -1
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +13 -5
- machineconfig/scripts/python/helpers_repos/entrypoint.py +2 -1
- machineconfig/scripts/python/helpers_repos/record.py +2 -1
- machineconfig/scripts/python/helpers_repos/repo_analyzer_1.py +160 -0
- machineconfig/scripts/python/helpers_repos/{count_lines.py → repo_analyzer_2.py} +113 -192
- machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +19 -13
- machineconfig/scripts/python/helpers_utils/download.py +150 -0
- machineconfig/scripts/python/helpers_utils/pdf.py +96 -0
- machineconfig/scripts/python/helpers_utils/python.py +187 -0
- machineconfig/scripts/python/interactive.py +17 -26
- machineconfig/scripts/python/{machineconfig.py → mcfg_entry.py} +4 -5
- machineconfig/scripts/python/msearch.py +57 -6
- machineconfig/scripts/python/sessions.py +100 -31
- machineconfig/scripts/python/terminal.py +26 -17
- machineconfig/scripts/python/utils.py +17 -15
- machineconfig/scripts/windows/wrap_mcfg.ps1 +6 -3
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/linters/.ruff.toml +1 -1
- machineconfig/settings/shells/bash/init.sh +29 -2
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
- machineconfig/settings/shells/nushell/config.nu +2 -2
- machineconfig/settings/shells/nushell/env.nu +45 -6
- machineconfig/settings/shells/nushell/init.nu +282 -95
- machineconfig/settings/shells/pwsh/init.ps1 +1 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
- machineconfig/settings/shells/zsh/init.sh +1 -8
- machineconfig/settings/television/cable_unix/alias.toml +8 -0
- machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
- machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
- machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
- machineconfig/settings/television/cable_unix/channels.toml +19 -0
- machineconfig/settings/television/cable_unix/dirs.toml +13 -0
- machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
- machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
- machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_unix/env.toml +17 -0
- machineconfig/settings/television/cable_unix/files.toml +11 -0
- machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
- machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
- machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
- machineconfig/settings/television/cable_unix/git-log.toml +12 -0
- machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
- machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
- machineconfig/settings/television/cable_unix/guix.toml +20 -0
- machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
- machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
- machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
- machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
- machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
- machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
- machineconfig/settings/television/cable_unix/procs.toml +20 -0
- machineconfig/settings/television/cable_unix/text.toml +17 -0
- machineconfig/settings/television/cable_unix/tldr.toml +18 -0
- machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
- machineconfig/settings/television/cable_windows/alias.toml +7 -0
- machineconfig/settings/television/cable_windows/dirs.toml +13 -0
- machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
- machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_windows/env.toml +17 -0
- machineconfig/settings/television/cable_windows/files.toml +14 -0
- machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
- machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
- machineconfig/settings/television/cable_windows/git-log.toml +11 -0
- machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
- machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
- machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
- machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
- machineconfig/settings/television/cable_windows/text.toml +17 -0
- machineconfig/settings/wt/__init__.py +0 -0
- machineconfig/settings/yazi/init.lua +49 -24
- machineconfig/settings/yazi/keymap_linux.toml +19 -4
- machineconfig/settings/yazi/keymap_windows.toml +0 -1
- machineconfig/settings/yazi/shell/yazi_cd.ps1 +29 -5
- machineconfig/settings/yazi/theme.toml +4 -0
- machineconfig/settings/yazi/yazi_linux.toml +84 -0
- machineconfig/settings/yazi/yazi_windows.toml +58 -0
- machineconfig/settings/zellij/layouts/st.kdl +39 -8
- machineconfig/setup_linux/__init__.py +1 -2
- machineconfig/setup_linux/apps_desktop.sh +8 -27
- machineconfig/setup_linux/web_shortcuts/interactive.sh +12 -10
- machineconfig/setup_linux/web_shortcuts/live_from_github.sh +31 -0
- machineconfig/setup_mac/__init__.py +2 -3
- machineconfig/setup_windows/__init__.py +3 -5
- machineconfig/setup_windows/ssh/openssh-server.ps1 +1 -1
- machineconfig/setup_windows/uv.ps1 +8 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +12 -10
- machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +30 -0
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/utils/accessories.py +7 -4
- machineconfig/utils/code.py +39 -11
- machineconfig/utils/files/headers.py +2 -2
- machineconfig/utils/installer_utils/github_release_bulk.py +156 -119
- machineconfig/utils/installer_utils/install_from_url.py +183 -0
- machineconfig/utils/installer_utils/installer_class.py +43 -100
- machineconfig/utils/installer_utils/installer_cli.py +175 -0
- machineconfig/utils/installer_utils/installer_helper.py +129 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +36 -85
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +16 -59
- machineconfig/utils/io.py +0 -1
- machineconfig/utils/links.py +2 -2
- machineconfig/utils/meta.py +30 -16
- machineconfig/utils/options.py +42 -24
- machineconfig/utils/options_tv.py +119 -0
- machineconfig/utils/path_extended.py +42 -20
- machineconfig/utils/path_helper.py +75 -22
- machineconfig/utils/procs.py +1 -1
- machineconfig/utils/scheduler.py +20 -53
- machineconfig/utils/schemas/layouts/layout_types.py +1 -1
- machineconfig/utils/ssh.py +159 -418
- machineconfig/utils/ssh_utils/abc.py +5 -0
- machineconfig/utils/ssh_utils/copy_from_here.py +111 -0
- machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
- machineconfig/utils/ssh_utils/utils.py +142 -0
- machineconfig/utils/ssh_utils/wsl.py +210 -0
- machineconfig/utils/terminal.py +1 -0
- machineconfig/utils/upgrade_packages.py +6 -1
- machineconfig/utils/ve.py +12 -4
- machineconfig-8.12.dist-info/METADATA +132 -0
- {machineconfig-7.50.dist-info → machineconfig-8.12.dist-info}/RECORD +265 -215
- {machineconfig-7.50.dist-info → machineconfig-8.12.dist-info}/entry_points.txt +2 -4
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
- machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
- machineconfig/jobs/installer/powershell_scripts/openssh-server_add_key.ps1 +0 -7
- machineconfig/jobs/installer/powershell_scripts/openssh-server_copy-ssh-id.ps1 +0 -14
- machineconfig/scripts/linux/other/switch_ip +0 -20
- machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
- machineconfig/scripts/python/define.py +0 -31
- machineconfig/scripts/python/explore.py +0 -49
- machineconfig/scripts/python/helpers_devops/cli_utils.py +0 -246
- machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfag +0 -17
- machineconfig/scripts/python/helpers_msearch/scripts_linux/fzfrga +0 -21
- machineconfig/scripts/python/helpers_msearch/scripts_linux/skrg +0 -4
- machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfb.ps1 +0 -3
- machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfrga.bat +0 -20
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +0 -17
- machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -13
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
- machineconfig/settings/lf/windows/tst.ps1 +0 -1
- machineconfig/settings/yazi/yazi.toml +0 -17
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_linux/others/cli_installation.sh +0 -137
- machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
- machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
- machineconfig/setup_mac/apps.sh +0 -73
- machineconfig/setup_windows/apps.ps1 +0 -62
- machineconfig/setup_windows/others/obs.ps1 +0 -4
- machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
- machineconfig/utils/installer_utils/installer.py +0 -221
- machineconfig-7.50.dist-info/METADATA +0 -92
- /machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/__init__.py +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/alacritty.py +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/bypass_paywall.py +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/cursor.py +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/espanso.py +0 -0
- /machineconfig/jobs/installer/{custom → python_scripts}/gh.py +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/goes.py +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/lvim.py +0 -0
- /machineconfig/jobs/installer/{custom_dev → python_scripts}/redis.py +0 -0
- /machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/android.sh +0 -0
- /machineconfig/jobs/{installer/linux_scripts → scripts/bash_scripts}/lid.sh +0 -0
- /machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/mint_keyboard_shortcuts.sh +0 -0
- /machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_drive +0 -0
- /machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nw_drive +0 -0
- /machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_smb +0 -0
- /machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_cloud.sh +0 -0
- /machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_nfs +0 -0
- /machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/start_docker +0 -0
- /machineconfig/{scripts → jobs/scripts/powershell_scripts}/Restore-ThunderbirdProfile.ps1 +0 -0
- /machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/docker.ps1 +0 -0
- /machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nfs.ps1 +0 -0
- /machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nw.ps1 +0 -0
- /machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_smb.ps1 +0 -0
- /machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/power_options.ps1 +0 -0
- /machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_cloud.cmd +0 -0
- /machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_smb.ps1 +0 -0
- /machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/unlock_bitlocker.ps1 +0 -0
- /machineconfig/scripts/python/{nw → ai/utils}/__init__.py +0 -0
- /machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +0 -0
- /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers_fire_command/f.py} +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → scripts/python/helpers_network}/__init__.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_network}/mount_nw_drive.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_network}/onetimeshare.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_network}/wifi_conn.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
- {machineconfig-7.50.dist-info → machineconfig-8.12.dist-info}/WHEEL +0 -0
- {machineconfig-7.50.dist-info → machineconfig-8.12.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"""
|
|
2
|
+
|
|
3
|
+
create 18 tasks one per cli
|
|
4
|
+
in each one, you do comprehensive search on internet on how to set up the cli/extension or whatever so we get max privacy and security (nothing shared everything is declined and is on the safe side)
|
|
5
|
+
this is a moving space, everyday, there are new versions, new configs, new settings, new policies, new rules, new terms of service, new eula, new privacy policies etc etc
|
|
6
|
+
so please search for latest and don't be complacent with the work done so far.
|
|
7
|
+
|
|
8
|
+
do it one by one, don't research and implement next before finishing the task before it.
|
|
9
|
+
|
|
10
|
+
I provided gemini cli solution as a reference (feel free to make it more flexible if you need mroe room to implement something more complex than what I did, its just a guide)
|
|
11
|
+
remember that other cli's have different names and configs and locations etc, read official docs
|
|
12
|
+
|
|
13
|
+
in the following cli how to set it for maximal prviacy *turn off any telemetry, reject any use of data, etc etc, please think of everything and read all theird docs and fine print
|
|
14
|
+
"aider",
|
|
15
|
+
"aichat", # rust cli
|
|
16
|
+
"copilot", # cli from github copilot extension
|
|
17
|
+
"gemini", # gemini cli
|
|
18
|
+
"crush", # cli from charm team
|
|
19
|
+
"mods", # cli from same people as crush (not agent) @ https://github.com/charmbracelet/mods
|
|
20
|
+
"opencode-ai",
|
|
21
|
+
"chatgpt",
|
|
22
|
+
"q", # from aws
|
|
23
|
+
"qwen-code", # fork of gemini cli
|
|
24
|
+
"cursor-cli",
|
|
25
|
+
"droid",
|
|
26
|
+
"kilocode",
|
|
27
|
+
"cline", # cli from cline ai extension
|
|
28
|
+
"auggie",
|
|
29
|
+
"codex", # from openai
|
|
30
|
+
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
from typing import Optional
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def apply_max_privacy_and_security_rules_and_configs(overwrite: bool, repo_root: Optional[str]) -> None:
|
|
37
|
+
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
38
|
+
root = LIBRARY_ROOT / "scripts/python/helpers_agents/privacy/configs"
|
|
39
|
+
from pathlib import Path
|
|
40
|
+
|
|
41
|
+
# Gemini privacy settings
|
|
42
|
+
gemini_settings_source = root.joinpath("gemini/settings.json")
|
|
43
|
+
gemini_settings_target_global = Path.home().joinpath(".gemini/settings.json")
|
|
44
|
+
if not gemini_settings_target_global.exists() or overwrite:
|
|
45
|
+
gemini_settings_target_global.parent.mkdir(parents=True, exist_ok=True)
|
|
46
|
+
gemini_settings_target_global.write_text(gemini_settings_source.read_text())
|
|
47
|
+
if repo_root:
|
|
48
|
+
gemini_settings_target_repo = Path(repo_root).joinpath(".gemini/settings.json")
|
|
49
|
+
if not gemini_settings_target_repo.exists() or overwrite:
|
|
50
|
+
gemini_settings_target_repo.parent.mkdir(parents=True, exist_ok=True)
|
|
51
|
+
gemini_settings_target_repo.write_text(gemini_settings_source.read_text())
|
|
52
|
+
|
|
53
|
+
# Aider privacy settings
|
|
54
|
+
aider_settings_source = root.joinpath("aider/.aider.conf.yml")
|
|
55
|
+
aider_settings_target_global = Path.home().joinpath(".aider.conf.yml")
|
|
56
|
+
if not aider_settings_target_global.exists() or overwrite:
|
|
57
|
+
aider_settings_target_global.parent.mkdir(parents=True, exist_ok=True)
|
|
58
|
+
aider_settings_target_global.write_text(aider_settings_source.read_text())
|
|
59
|
+
|
|
60
|
+
if repo_root:
|
|
61
|
+
aider_settings_target_repo = Path(repo_root).joinpath(".aider.conf.yml")
|
|
62
|
+
if not aider_settings_target_repo.exists() or overwrite:
|
|
63
|
+
aider_settings_target_repo.parent.mkdir(parents=True, exist_ok=True)
|
|
64
|
+
aider_settings_target_repo.write_text(aider_settings_source.read_text())
|
|
65
|
+
|
|
66
|
+
# Aichat privacy settings
|
|
67
|
+
aichat_settings_source = root.joinpath("aichat/config.yaml")
|
|
68
|
+
aichat_settings_target_global = Path.home().joinpath(".config/aichat/config.yaml")
|
|
69
|
+
if not aichat_settings_target_global.exists() or overwrite:
|
|
70
|
+
aichat_settings_target_global.parent.mkdir(parents=True, exist_ok=True)
|
|
71
|
+
aichat_settings_target_global.write_text(aichat_settings_source.read_text())
|
|
72
|
+
|
|
73
|
+
if repo_root:
|
|
74
|
+
aichat_settings_target_repo = Path(repo_root).joinpath(".config/aichat/config.yaml")
|
|
75
|
+
if not aichat_settings_target_repo.exists() or overwrite:
|
|
76
|
+
aichat_settings_target_repo.parent.mkdir(parents=True, exist_ok=True)
|
|
77
|
+
aichat_settings_target_repo.write_text(aichat_settings_source.read_text())
|
|
78
|
+
|
|
79
|
+
# Copilot privacy settings
|
|
80
|
+
copilot_settings_source = root.joinpath("copilot/config.yml")
|
|
81
|
+
copilot_settings_target_global = Path.home().joinpath(".config/gh-copilot/config.yml")
|
|
82
|
+
if not copilot_settings_target_global.exists() or overwrite:
|
|
83
|
+
copilot_settings_target_global.parent.mkdir(parents=True, exist_ok=True)
|
|
84
|
+
copilot_settings_target_global.write_text(copilot_settings_source.read_text())
|
|
85
|
+
|
|
86
|
+
if repo_root:
|
|
87
|
+
copilot_settings_target_repo = Path(repo_root).joinpath(".config/gh-copilot/config.yml")
|
|
88
|
+
if not copilot_settings_target_repo.exists() or overwrite:
|
|
89
|
+
copilot_settings_target_repo.parent.mkdir(parents=True, exist_ok=True)
|
|
90
|
+
copilot_settings_target_repo.write_text(copilot_settings_source.read_text())
|
|
91
|
+
|
|
92
|
+
# Crush privacy settings
|
|
93
|
+
crush_settings_source = root.joinpath("crush/crush.json")
|
|
94
|
+
crush_settings_target_global = Path.home().joinpath(".config/crush/crush.json")
|
|
95
|
+
if not crush_settings_target_global.exists() or overwrite:
|
|
96
|
+
crush_settings_target_global.parent.mkdir(parents=True, exist_ok=True)
|
|
97
|
+
crush_settings_target_global.write_text(crush_settings_source.read_text())
|
|
98
|
+
|
|
99
|
+
if repo_root:
|
|
100
|
+
crush_settings_target_repo = Path(repo_root).joinpath(".crush.json")
|
|
101
|
+
if not crush_settings_target_repo.exists() or overwrite:
|
|
102
|
+
crush_settings_target_repo.parent.mkdir(parents=True, exist_ok=True)
|
|
103
|
+
crush_settings_target_repo.write_text(crush_settings_source.read_text())
|
|
104
|
+
|
|
105
|
+
# next, cursh cli
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
if __name__ == "__main__":
|
|
109
|
+
pass
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
Please inspect the following python files, and document which methods of PathExtended class have been used (if the class is used at all)
|
|
3
|
+
please create a file next to this file on same dir called result.md and put your results in it.
|
|
4
|
+
Like this:
|
|
5
|
+
* File_NAME
|
|
6
|
+
* method1
|
|
7
|
+
* method2
|
|
5
8
|
|
|
6
|
-
|
|
9
|
+
* File_NAME
|
|
10
|
+
* method x
|
|
@@ -2,22 +2,32 @@
|
|
|
2
2
|
#!/bin/bash
|
|
3
3
|
# set -e # Exit immediately if a command exits with a non-zero status.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
REPO_ROOT="$HOME/code/machineconfig"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
|
|
8
|
+
JOB_NAME="agentsTrial"
|
|
9
|
+
CONTEXT_PATH="$REPO_ROOT/.ai/agents/files.md"
|
|
10
|
+
PROMPT_PATH="$REPO_ROOT/.ai/agents/prompt.txt"
|
|
10
11
|
AGENTS_DIR="$REPO_ROOT/.ai/agents/$JOB_NAME"
|
|
12
|
+
rm -rfd "$AGENTS_DIR" || true
|
|
11
13
|
|
|
12
|
-
agents create
|
|
14
|
+
agents create \
|
|
15
|
+
--agents gemini \
|
|
13
16
|
--host docker \
|
|
14
|
-
--model
|
|
15
|
-
--provider
|
|
17
|
+
--model gemini-2.5-pro \
|
|
18
|
+
--provider google \
|
|
19
|
+
--agent-load 5 \
|
|
16
20
|
--context-path $CONTEXT_PATH \
|
|
17
21
|
--prompt-path $PROMPT_PATH \
|
|
18
22
|
--job-name $JOB_NAME \
|
|
19
23
|
--agents-dir $AGENTS_DIR
|
|
20
|
-
|
|
24
|
+
|
|
25
|
+
sessions balance-load "$AGENTS_DIR/layout.json" \
|
|
26
|
+
--max-threshold 4 \
|
|
27
|
+
--breaking-method moreLayouts \
|
|
28
|
+
--threshold-type number \
|
|
29
|
+
--output-path "$AGENTS_DIR/layout_balanced.json"
|
|
30
|
+
|
|
21
31
|
sessions run "$AGENTS_DIR/layout_balanced.json" --kill-upon-completion
|
|
22
32
|
|
|
23
33
|
|
|
@@ -2,26 +2,24 @@
|
|
|
2
2
|
CC
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
6
|
-
from tenacity import retry, stop_after_attempt, wait_chain, wait_fixed
|
|
7
|
-
import getpass
|
|
8
|
-
import os
|
|
9
5
|
from typing import Optional, Annotated
|
|
10
|
-
|
|
11
6
|
import typer
|
|
12
7
|
|
|
13
|
-
from
|
|
14
|
-
from machineconfig.scripts.python.helpers_cloud.cloud_helpers import ArgsDefaults, Args
|
|
15
|
-
from rich.console import Console
|
|
16
|
-
from rich.panel import Panel
|
|
17
|
-
from rich.progress import Progress
|
|
18
|
-
from machineconfig.utils.accessories import pprint
|
|
8
|
+
from tenacity import retry, stop_after_attempt, wait_chain, wait_fixed
|
|
19
9
|
|
|
20
|
-
console = Console()
|
|
21
10
|
|
|
22
11
|
|
|
23
12
|
@retry(stop=stop_after_attempt(3), wait=wait_chain(wait_fixed(1), wait_fixed(4), wait_fixed(9)))
|
|
24
13
|
def get_securely_shared_file(url: Optional[str] = None, folder: Optional[str] = None) -> None:
|
|
14
|
+
from rich.console import Console
|
|
15
|
+
from rich.panel import Panel
|
|
16
|
+
from rich.progress import Progress
|
|
17
|
+
import getpass
|
|
18
|
+
import os
|
|
19
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
20
|
+
|
|
21
|
+
console = Console()
|
|
22
|
+
|
|
25
23
|
console.print(Panel("🚀 Secure File Downloader", title="[bold blue]Downloader[/bold blue]", border_style="blue"))
|
|
26
24
|
|
|
27
25
|
folder_obj = PathExtended.cwd() if folder is None else PathExtended(folder)
|
|
@@ -62,21 +60,30 @@ def get_securely_shared_file(url: Optional[str] = None, folder: Optional[str] =
|
|
|
62
60
|
tmp_folder.delete()
|
|
63
61
|
|
|
64
62
|
|
|
63
|
+
|
|
65
64
|
def main(
|
|
66
65
|
source: Annotated[str, typer.Argument(help="📂 file/folder path to be taken from here.")],
|
|
67
66
|
target: Annotated[str, typer.Argument(help="🎯 file/folder path to be be sent to here.")],
|
|
68
|
-
overwrite: Annotated[bool, typer.Option("--overwrite", "-o", help="✍️ Overwrite existing file.")] =
|
|
69
|
-
share: Annotated[bool, typer.Option("--share", "-s", help="🔗 Share file / directory")] =
|
|
70
|
-
rel2home: Annotated[bool, typer.Option("--relative2home", "-r", help="🏠 Relative to `myhome` folder")] =
|
|
71
|
-
root: Annotated[Optional[str], typer.Option("--root", "-R", help="🌳 Remote root. None is the default, unless rel2home is raied, making the default `myhome`.")] =
|
|
72
|
-
key: Annotated[Optional[str], typer.Option("--key", "-k", help="🔑 Key for encryption")] =
|
|
73
|
-
pwd: Annotated[Optional[str], typer.Option("--password", "-p", help="🔒 Password for encryption")] =
|
|
74
|
-
encrypt: Annotated[bool, typer.Option("--encrypt", "-e", help="🔐 Encrypt before sending.")] =
|
|
75
|
-
zip_: Annotated[bool, typer.Option("--zip", "-z", help="📦 unzip after receiving.")] =
|
|
76
|
-
os_specific: Annotated[bool, typer.Option("--os-specific", "-O", help="💻 choose path specific for this OS.")] =
|
|
67
|
+
overwrite: Annotated[bool, typer.Option("--overwrite", "-o", help="✍️ Overwrite existing file.")] = False,
|
|
68
|
+
share: Annotated[bool, typer.Option("--share", "-s", help="🔗 Share file / directory")] = False,
|
|
69
|
+
rel2home: Annotated[bool, typer.Option("--relative2home", "-r", help="🏠 Relative to `myhome` folder")] = False,
|
|
70
|
+
root: Annotated[Optional[str], typer.Option("--root", "-R", help="🌳 Remote root. None is the default, unless rel2home is raied, making the default `myhome`.")] = None,
|
|
71
|
+
key: Annotated[Optional[str], typer.Option("--key", "-k", help="🔑 Key for encryption")] = None,
|
|
72
|
+
pwd: Annotated[Optional[str], typer.Option("--password", "-p", help="🔒 Password for encryption")] = None,
|
|
73
|
+
encrypt: Annotated[bool, typer.Option("--encrypt", "-e", help="🔐 Encrypt before sending.")] = False,
|
|
74
|
+
zip_: Annotated[bool, typer.Option("--zip", "-z", help="📦 unzip after receiving.")] = False,
|
|
75
|
+
os_specific: Annotated[bool, typer.Option("--os-specific", "-O", help="💻 choose path specific for this OS.")] = False,
|
|
77
76
|
config: Annotated[Optional[str], typer.Option("--config", "-c", help="⚙️ path to cloud.json file.")] = None,
|
|
78
77
|
) -> None:
|
|
79
78
|
"""📤 Upload or 📥 Download files/folders to/from cloud storage services like Google Drive, Dropbox, OneDrive, etc."""
|
|
79
|
+
from rich.console import Console
|
|
80
|
+
from rich.panel import Panel
|
|
81
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
82
|
+
from machineconfig.scripts.python.helpers_cloud.helpers2 import parse_cloud_source_target
|
|
83
|
+
from machineconfig.scripts.python.helpers_cloud.cloud_helpers import Args
|
|
84
|
+
from machineconfig.utils.accessories import pprint
|
|
85
|
+
|
|
86
|
+
console = Console()
|
|
80
87
|
console.print(Panel("☁️ Cloud Copy Utility", title="[bold blue]Cloud Copy[/bold blue]", border_style="blue", width=152))
|
|
81
88
|
args_obj = Args(
|
|
82
89
|
overwrite=overwrite,
|
|
@@ -12,6 +12,7 @@ from dataclasses import dataclass
|
|
|
12
12
|
console = Console()
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
|
|
15
16
|
class ArgsDefaults:
|
|
16
17
|
# source: str=None
|
|
17
18
|
# target: str=None
|
|
@@ -25,7 +26,6 @@ class ArgsDefaults:
|
|
|
25
26
|
key = None
|
|
26
27
|
pwd = None
|
|
27
28
|
|
|
28
|
-
|
|
29
29
|
@dataclass
|
|
30
30
|
class Args:
|
|
31
31
|
cloud: Optional[str] = None
|
|
@@ -1,32 +1,27 @@
|
|
|
1
1
|
"""Cloud mount script"""
|
|
2
2
|
|
|
3
|
-
from machineconfig.utils.options import choose_from_options
|
|
4
|
-
from machineconfig.utils.io import read_ini
|
|
5
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
6
|
-
|
|
7
|
-
import platform
|
|
8
|
-
from typing import Optional, Annotated
|
|
9
3
|
import typer
|
|
10
|
-
from
|
|
11
|
-
from rich.panel import Panel
|
|
12
|
-
|
|
13
|
-
console = Console()
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
DEFAULT_MOUNT = "~/data/rclone"
|
|
4
|
+
from typing import Optional, Annotated
|
|
17
5
|
|
|
18
6
|
|
|
19
7
|
def get_rclone_config():
|
|
8
|
+
from machineconfig.utils.io import read_ini
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
import platform
|
|
20
11
|
if platform.system() == "Windows":
|
|
21
|
-
config = read_ini(
|
|
12
|
+
config = read_ini(Path.home().joinpath("AppData/Roaming/rclone/rclone.conf"))
|
|
22
13
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
23
|
-
config = read_ini(
|
|
14
|
+
config = read_ini(Path.home().joinpath(".config/rclone/rclone.conf"))
|
|
24
15
|
else:
|
|
25
16
|
raise ValueError("unsupported platform")
|
|
26
17
|
return config
|
|
27
18
|
|
|
28
19
|
|
|
29
20
|
def get_mprocs_mount_txt(cloud: str, rclone_cmd: str, cloud_brand: str): # cloud_brand = config[cloud]["type"]
|
|
21
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
22
|
+
import platform
|
|
23
|
+
DEFAULT_MOUNT = "~/data/rclone"
|
|
24
|
+
|
|
30
25
|
header = f"{' ' + cloud + ' | ' + cloud_brand + ' '}".center(50, "=")
|
|
31
26
|
if platform.system() == "Windows":
|
|
32
27
|
sub_text_path = PathExtended.tmpfile(suffix=".ps1")
|
|
@@ -57,6 +52,13 @@ def mount(
|
|
|
57
52
|
destination: Annotated[Optional[str], typer.Option(help="destination to mount")] = None,
|
|
58
53
|
network: Annotated[Optional[str], typer.Option(help="mount network drive")] = None,
|
|
59
54
|
) -> None:
|
|
55
|
+
from machineconfig.utils.options import choose_from_options
|
|
56
|
+
from pathlib import Path
|
|
57
|
+
import platform
|
|
58
|
+
from rich.console import Console
|
|
59
|
+
from rich.panel import Panel
|
|
60
|
+
console = Console()
|
|
61
|
+
DEFAULT_MOUNT = "~/data/rclone"
|
|
60
62
|
|
|
61
63
|
# draw header box dynamically
|
|
62
64
|
title = "☁️ Cloud Mount Utility"
|
|
@@ -73,9 +75,9 @@ def mount(
|
|
|
73
75
|
|
|
74
76
|
if network is None:
|
|
75
77
|
if destination is None:
|
|
76
|
-
mount_loc =
|
|
78
|
+
mount_loc = Path(DEFAULT_MOUNT).expanduser().joinpath(cloud)
|
|
77
79
|
else:
|
|
78
|
-
mount_loc =
|
|
80
|
+
mount_loc = Path(destination)
|
|
79
81
|
|
|
80
82
|
mount_info = f"📂 Mount location: {mount_loc}"
|
|
81
83
|
console.print(Panel(mount_info, border_style="blue"))
|
|
@@ -2,16 +2,9 @@
|
|
|
2
2
|
TODO: use typer or typed-argument-parser to parse args
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from machineconfig.scripts.python.helpers_cloud.helpers2 import parse_cloud_source_target
|
|
6
|
-
from machineconfig.scripts.python.helpers_cloud.cloud_helpers import Args
|
|
7
|
-
from machineconfig.scripts.python.helpers_cloud.cloud_mount import get_mprocs_mount_txt
|
|
8
5
|
|
|
9
6
|
from typing import Annotated, Optional
|
|
10
7
|
import typer
|
|
11
|
-
from rich.console import Console
|
|
12
|
-
from rich.panel import Panel
|
|
13
|
-
|
|
14
|
-
console = Console()
|
|
15
8
|
|
|
16
9
|
|
|
17
10
|
def main(
|
|
@@ -27,6 +20,14 @@ def main(
|
|
|
27
20
|
delete: Annotated[bool, typer.Option("--delete", "-D", help="Delete files in remote that are not in local.")] = False,
|
|
28
21
|
verbose: Annotated[bool, typer.Option("--verbose", "-v", help="Verbosity of mprocs to show details of syncing.")] = False,
|
|
29
22
|
) -> None:
|
|
23
|
+
|
|
24
|
+
from machineconfig.scripts.python.helpers_cloud.helpers2 import parse_cloud_source_target
|
|
25
|
+
from machineconfig.scripts.python.helpers_cloud.cloud_helpers import Args
|
|
26
|
+
from machineconfig.scripts.python.helpers_cloud.cloud_mount import get_mprocs_mount_txt
|
|
27
|
+
from rich.console import Console
|
|
28
|
+
from rich.panel import Panel
|
|
29
|
+
console = Console()
|
|
30
|
+
|
|
30
31
|
title = "☁️ Cloud Sync Utility"
|
|
31
32
|
console.print(Panel(title, title_align="left", border_style="blue"))
|
|
32
33
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
def
|
|
3
|
+
def get_read_python_file_pycode(path: str, title: str):
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
print("Reading code from path:", path)
|
|
6
6
|
pycode = Path(path).read_text(encoding="utf-8")
|
|
@@ -20,9 +20,9 @@ def get_read_data_pycode(path: str):
|
|
|
20
20
|
from rich.panel import Panel
|
|
21
21
|
from rich.text import Text
|
|
22
22
|
from rich.console import Console
|
|
23
|
-
from
|
|
23
|
+
from pathlib import Path
|
|
24
24
|
console = Console()
|
|
25
|
-
p =
|
|
25
|
+
p = Path(path).absolute()
|
|
26
26
|
try:
|
|
27
27
|
from machineconfig.utils.files.read import Read
|
|
28
28
|
from machineconfig.utils.accessories import pprint
|
|
@@ -95,13 +95,12 @@ def main(
|
|
|
95
95
|
if md_file.name != "slides.md":
|
|
96
96
|
SLIDEV_REPO.joinpath(md_file.name).with_name(name="slides.md", inplace=True, overwrite=True)
|
|
97
97
|
|
|
98
|
-
import
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
local_ip_v4 = socket.gethostbyname(socket.gethostname())
|
|
98
|
+
import machineconfig.scripts.python.helpers_network.address as helper
|
|
99
|
+
res = helper.select_lan_ipv4(prefer_vpn=False)
|
|
100
|
+
if res is None:
|
|
101
|
+
print("❌ Error: Could not determine local LAN IPv4 address for presentation.")
|
|
102
|
+
raise typer.Exit(code=1)
|
|
103
|
+
local_ip_v4 = res
|
|
105
104
|
|
|
106
105
|
print("🌐 Presentation will be served at:")
|
|
107
106
|
print(f" - http://{platform.node()}:{port}")
|
|
@@ -7,7 +7,7 @@ import machineconfig.scripts.python.helpers_devops.cli_config_dotfile as dotfile
|
|
|
7
7
|
import machineconfig.profile.create_links_export as create_links_export
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
def
|
|
10
|
+
def configure_shell_profile(which: Annotated[Literal["default", "d", "nushell", "n"], typer.Option(..., "--which", "-w", help="Which shell profile to create/configure")]="default"):
|
|
11
11
|
"""🔗 Configure your shell profile."""
|
|
12
12
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile, create_nu_shell_profile
|
|
13
13
|
match which:
|
|
@@ -20,20 +20,6 @@ def shell(which: Annotated[Literal["default", "d", "nushell", "n"], typer.Option
|
|
|
20
20
|
typer.echo(f"[red]Error:[/] Unknown shell profile type: {which}")
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
def path():
|
|
24
|
-
"""📚 NAVIGATE PATH variable with TUI"""
|
|
25
|
-
from machineconfig.scripts.python import env_manager as navigator
|
|
26
|
-
from pathlib import Path
|
|
27
|
-
path = Path(navigator.__file__).resolve().parent.joinpath("path_manager_tui.py")
|
|
28
|
-
from machineconfig.utils.code import run_shell_script, get_uv_command_executing_python_script
|
|
29
|
-
uv_with = ["textual"]
|
|
30
|
-
uv_project_dir = None
|
|
31
|
-
if not Path.home().joinpath("code/machineconfig").exists():
|
|
32
|
-
uv_with.append("machineconfig>=7.50")
|
|
33
|
-
else:
|
|
34
|
-
uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
|
|
35
|
-
run_shell_script(get_uv_command_executing_python_script(python_script=path.read_text(encoding="utf-8"), uv_with=uv_with, uv_project_dir=uv_project_dir)[0])
|
|
36
|
-
|
|
37
23
|
|
|
38
24
|
def pwsh_theme():
|
|
39
25
|
"""🔗 Select powershell prompt theme."""
|
|
@@ -89,23 +75,31 @@ def copy_assets(which: Annotated[Literal["scripts", "s", "settings", "t", "both"
|
|
|
89
75
|
typer.echo(f"[red]Error:[/] Unknown asset type: {which}")
|
|
90
76
|
|
|
91
77
|
|
|
78
|
+
def link_wsl_and_windows_home():
|
|
79
|
+
"""🔗 Link WSL home and Windows home directories."""
|
|
80
|
+
import machineconfig.utils.ssh_utils.wsl as wsl_utils
|
|
81
|
+
wsl_utils.link_wsl_and_windows()
|
|
82
|
+
|
|
83
|
+
|
|
92
84
|
def get_app():
|
|
93
85
|
config_apps = typer.Typer(help="⚙️ [c] configuration subcommands", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
94
|
-
config_apps.command("private", no_args_is_help=True, help="🔗
|
|
86
|
+
config_apps.command("private", no_args_is_help=True, help="🔗 [v] Manage private configuration files.")(create_links_export.main_private_from_parser)
|
|
95
87
|
config_apps.command("v", no_args_is_help=True, hidden=True)(create_links_export.main_private_from_parser)
|
|
96
|
-
config_apps.command("public", no_args_is_help=True, help="🔗
|
|
88
|
+
config_apps.command("public", no_args_is_help=True, help="🔗 [b] Manage public configuration files.")(create_links_export.main_public_from_parser)
|
|
97
89
|
config_apps.command("b", no_args_is_help=True, help="Manage public configuration files.", hidden=True)(create_links_export.main_public_from_parser)
|
|
98
|
-
config_apps.command("dotfile", no_args_is_help=True, help="🔗
|
|
90
|
+
config_apps.command("dotfile", no_args_is_help=True, help="🔗 [d] Manage dotfiles.")(dotfile_module.main)
|
|
99
91
|
config_apps.command("d", no_args_is_help=True, hidden=True)(dotfile_module.main)
|
|
100
|
-
config_apps.command("shell", no_args_is_help=False, help="🔗
|
|
101
|
-
config_apps.command("s", no_args_is_help=False, help="Configure your shell profile.", hidden=True)(
|
|
102
|
-
config_apps.command("
|
|
103
|
-
config_apps.command("p", no_args_is_help=False, help="NAVIGATE PATH variable with TUI", hidden=True)(path)
|
|
104
|
-
config_apps.command("starship-theme", no_args_is_help=False, help="🔗 [t] Select starship prompt theme.")(starship_theme)
|
|
92
|
+
config_apps.command("shell", no_args_is_help=False, help="🔗 [s] Configure your shell profile.")(configure_shell_profile)
|
|
93
|
+
config_apps.command("s", no_args_is_help=False, help="Configure your shell profile.", hidden=True)(configure_shell_profile)
|
|
94
|
+
config_apps.command("starship-theme", no_args_is_help=False, help="🔗 [t] Select starship prompt theme.")(starship_theme)
|
|
105
95
|
config_apps.command("t", no_args_is_help=False, help="Select starship prompt theme.", hidden=True)(starship_theme)
|
|
106
|
-
config_apps.command("pwsh-theme", no_args_is_help=False, help="🔗
|
|
96
|
+
config_apps.command("pwsh-theme", no_args_is_help=False, help="🔗 [T] Select powershell prompt theme.")(pwsh_theme)
|
|
107
97
|
config_apps.command("T", no_args_is_help=False, help="Select powershell prompt theme.", hidden=True)(pwsh_theme)
|
|
108
98
|
|
|
109
|
-
config_apps.command("copy-assets", no_args_is_help=True, help="🔗
|
|
99
|
+
config_apps.command("copy-assets", no_args_is_help=True, help="🔗 [c] Copy asset files from library to machine.", hidden=False)(copy_assets)
|
|
110
100
|
config_apps.command("c", no_args_is_help=True, help="Copy asset files from library to machine.", hidden=True)(copy_assets)
|
|
101
|
+
|
|
102
|
+
config_apps.command("link-wsl-windows", no_args_is_help=False, help="🔗 [l] Link WSL home and Windows home directories.", hidden=False)(link_wsl_and_windows_home)
|
|
103
|
+
config_apps.command("l", no_args_is_help=False, help="Link WSL home and Windows home directories.", hidden=True)(link_wsl_and_windows_home)
|
|
104
|
+
|
|
111
105
|
return config_apps
|
|
@@ -12,7 +12,9 @@ def main(
|
|
|
12
12
|
method: Annotated[Literal["symlink", "s", "copy", "c"], typer.Option(..., "--method", "-m", help="Method to use for linking files")] = "copy",
|
|
13
13
|
on_conflict: Annotated[ON_CONFLICT_LOOSE, typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
|
|
14
14
|
sensitivity: Annotated[Literal["private", "v", "public", "b"], typer.Option(..., "--sensitivity", "-s", help="Sensitivity of the config file.")] = "private",
|
|
15
|
-
destination: Annotated[str, typer.Option("--destination", "-d", help="destination folder (override the default, use at your own risk)")] = "",
|
|
15
|
+
destination: Annotated[str, typer.Option("--destination", "-d", help="destination folder (override the default, use at your own risk)")] = "",
|
|
16
|
+
shared: Annotated[bool, typer.Option("--shared", "-sh", help="Whether the config file is shared across destinations directory.")] = False,
|
|
17
|
+
) -> None:
|
|
16
18
|
from rich.console import Console
|
|
17
19
|
from rich.panel import Panel
|
|
18
20
|
from machineconfig.utils.links import symlink_map, copy_map
|
|
@@ -27,26 +29,33 @@ def main(
|
|
|
27
29
|
console = Console()
|
|
28
30
|
orig_path = Path(file).expanduser().absolute()
|
|
29
31
|
if destination == "":
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
if shared:
|
|
33
|
+
new_path = backup_root.joinpath("shared").joinpath(orig_path.name)
|
|
34
|
+
new_path.parent.mkdir(parents=True, exist_ok=True)
|
|
35
|
+
else:
|
|
36
|
+
new_path = backup_root.joinpath(orig_path.relative_to(Path.home()))
|
|
37
|
+
new_path.parent.mkdir(parents=True, exist_ok=True)
|
|
32
38
|
else:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
if shared:
|
|
40
|
+
dest_path = Path(destination).expanduser().absolute()
|
|
41
|
+
dest_path.mkdir(parents=True, exist_ok=True)
|
|
42
|
+
new_path = dest_path.joinpath("shared").joinpath(orig_path.name)
|
|
43
|
+
new_path.parent.mkdir(parents=True, exist_ok=True)
|
|
44
|
+
else:
|
|
45
|
+
dest_path = Path(destination).expanduser().absolute()
|
|
46
|
+
dest_path.mkdir(parents=True, exist_ok=True)
|
|
47
|
+
new_path = dest_path.joinpath(orig_path.name)
|
|
39
48
|
match method:
|
|
40
49
|
case "copy" | "c":
|
|
41
50
|
try:
|
|
42
|
-
copy_map(config_file_default_path=
|
|
51
|
+
copy_map(config_file_default_path=orig_path, self_managed_config_file_path=new_path, on_conflict=ON_CONFLICT_MAPPER[on_conflict]) # type: ignore[arg-type]
|
|
43
52
|
except Exception as e:
|
|
44
53
|
typer.echo(f"[red]Error:[/] {e}")
|
|
45
54
|
typer.Exit(code=1)
|
|
46
55
|
return
|
|
47
56
|
case "symlink" | "s":
|
|
48
57
|
try:
|
|
49
|
-
symlink_map(config_file_default_path=
|
|
58
|
+
symlink_map(config_file_default_path=orig_path, self_managed_config_file_path=new_path, on_conflict=ON_CONFLICT_MAPPER[on_conflict]) # type: ignore[arg-type]
|
|
50
59
|
except Exception as e:
|
|
51
60
|
typer.echo(f"[red]Error:[/] {e}")
|
|
52
61
|
typer.Exit(code=1)
|
|
@@ -56,10 +65,10 @@ def main(
|
|
|
56
65
|
|
|
57
66
|
# mapper_snippet = "\n".join(
|
|
58
67
|
# [
|
|
59
|
-
# f"[bold]📝 Edit configuration file:[/] [cyan]nano {
|
|
68
|
+
# f"[bold]📝 Edit configuration file:[/] [cyan]nano {Path(CONFIG_ROOT)}/symlinks/mapper.toml[/cyan]",
|
|
60
69
|
# "",
|
|
61
70
|
# f"[{new_path.parent.name}]",
|
|
62
|
-
# f"{orig_path.name.split('.')[0]} = {{ this = '{orig_path.
|
|
71
|
+
# f"{orig_path.name.split('.')[0]} = {{ this = '{orig_path.as_posix()}', to_this = '{new_path.as_posix()}' }}",
|
|
63
72
|
# ]
|
|
64
73
|
# )
|
|
65
74
|
# console.print(
|