machineconfig 6.82__py3-none-any.whl → 8.51__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.
- machineconfig/cluster/remote/cloud_manager.py +1 -1
- machineconfig/cluster/remote/run_cluster.py +1 -1
- machineconfig/cluster/remote/run_remote.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +29 -15
- machineconfig/cluster/sessions_managers/wt_local.py +17 -222
- machineconfig/cluster/sessions_managers/wt_local_manager.py +56 -194
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +42 -198
- machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
- machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
- machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
- machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +1 -1
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +4 -2
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +2 -2
- machineconfig/jobs/installer/checks/check_installations.py +133 -0
- machineconfig/jobs/installer/checks/install_utils.py +132 -0
- machineconfig/jobs/installer/checks/report_utils.py +39 -0
- machineconfig/jobs/installer/checks/vt_utils.py +89 -0
- machineconfig/jobs/installer/installer_data.json +1500 -310
- machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
- machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +62 -91
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/jobs/installer/{custom → python_scripts}/boxes.py +2 -3
- 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 +14 -9
- machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
- machineconfig/jobs/installer/python_scripts/hx.py +214 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +32 -26
- machineconfig/jobs/installer/python_scripts/sysabc.py +145 -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 +139 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
- machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
- 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 +428 -0
- machineconfig/logger.py +1 -2
- machineconfig/profile/create_helper.py +56 -18
- machineconfig/profile/create_links.py +79 -21
- machineconfig/profile/create_links_export.py +87 -36
- machineconfig/profile/create_shell_profile.py +92 -127
- machineconfig/profile/mapper_data.toml +45 -0
- machineconfig/profile/mapper_dotfiles.toml +249 -0
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/wrap_mcfg +46 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +85 -165
- machineconfig/scripts/python/ai/initai.py +4 -2
- machineconfig/scripts/python/ai/scripts/__init__.py +1 -0
- 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.ps1 +2 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +8 -6
- machineconfig/scripts/python/ai/solutions/claude/claude.py +1 -1
- machineconfig/scripts/python/ai/solutions/cline/cline.py +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 +6 -6
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +33 -0
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
- machineconfig/scripts/python/ai/solutions/crush/crush.py +1 -1
- machineconfig/scripts/python/ai/solutions/cursor/cursors.py +1 -1
- machineconfig/scripts/python/ai/solutions/gemini/gemini.py +1 -1
- machineconfig/scripts/python/ai/solutions/gemini/settings.json +3 -0
- machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
- machineconfig/scripts/python/ai/{solutions → utils}/generic.py +2 -15
- machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +13 -5
- machineconfig/scripts/python/cloud.py +58 -11
- machineconfig/scripts/python/croshell.py +10 -162
- machineconfig/scripts/python/devops.py +73 -36
- machineconfig/scripts/python/devops_navigator.py +16 -6
- machineconfig/scripts/python/fire_jobs.py +8 -222
- machineconfig/scripts/python/ftpx.py +7 -200
- machineconfig/scripts/python/graph/cli_graph.json +8743 -0
- machineconfig/scripts/python/{env_manager → helper_env}/path_manager_tui.py +2 -2
- machineconfig/scripts/python/helpers/helper_env/env_manager_tui.py +204 -0
- machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_launch.py +38 -16
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_helper_types.py +11 -14
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +1 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +10 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/gemini/settings.json +12 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/privacy.py +109 -0
- machineconfig/scripts/python/helpers/helpers_agents/templates/prompt.txt +10 -0
- machineconfig/scripts/python/helpers/helpers_agents/templates/template.sh +34 -0
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_copy.py +32 -25
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_mount.py +29 -22
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_sync.py +9 -8
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers2.py +1 -1
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/crosh.py +3 -3
- machineconfig/scripts/python/helpers/helpers_croshell/croshell_impl.py +225 -0
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/scheduler.py +4 -4
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/start_slidev.py +12 -12
- machineconfig/scripts/python/helpers/helpers_devops/backup_config.py +149 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +262 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_config.py +98 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +274 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_data.py +67 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_nw.py +201 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +274 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_self.py +197 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_share_file.py +151 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_share_server.py +125 -0
- machineconfig/scripts/python/{helpers_devops/cli_terminal.py → helpers/helpers_devops/cli_share_terminal.py} +26 -22
- machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +167 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_status.py +17 -23
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_update_repos.py +1 -1
- machineconfig/scripts/python/{interactive.py → helpers/helpers_devops/interactive.py} +78 -71
- machineconfig/scripts/python/helpers/helpers_devops/run_script.py +197 -0
- machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +41 -0
- machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +48 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_wezterm_theme.py +4 -4
- machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers/helpers_fire_command/file_wrangler.py} +57 -20
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_args_helper.py +1 -0
- machineconfig/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +233 -0
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_route_helper.py +26 -16
- machineconfig/scripts/python/helpers/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +248 -0
- machineconfig/scripts/{linux → python/helpers/helpers_msearch/scripts_linux}/fzfg +6 -5
- machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
- machineconfig/scripts/python/helpers/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
- machineconfig/scripts/python/helpers/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/helpers/helpers_navigator/cli_graph_loader.py +234 -0
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/command_builder.py +61 -13
- machineconfig/scripts/python/helpers/helpers_navigator/command_detail.py +153 -0
- machineconfig/scripts/python/helpers/helpers_navigator/command_tree.py +45 -0
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/data_models.py +18 -11
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/main_app.py +5 -5
- machineconfig/scripts/python/helpers/helpers_network/address.py +174 -0
- machineconfig/scripts/python/helpers/helpers_network/address_switch.py +78 -0
- machineconfig/scripts/python/helpers/helpers_network/ftpx_impl.py +276 -0
- machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nfs.py +2 -2
- machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_ssh.py +3 -3
- machineconfig/scripts/python/helpers/helpers_network/ssh_add_identity.py +73 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_add_ssh_key.py +175 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_debug_linux.py +319 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_debug_windows.py +275 -0
- machineconfig/scripts/python/{nw → helpers/helpers_network}/wifi_conn.py +1 -53
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action.py +3 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action_helper.py +3 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/clone.py +0 -1
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/cloud_repo_sync.py +159 -48
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/grource.py +4 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/record.py +33 -12
- machineconfig/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +160 -0
- machineconfig/scripts/python/{helpers_repos/count_lines.py → helpers/helpers_repos/repo_analyzer_2.py} +156 -191
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/update.py +0 -6
- machineconfig/scripts/python/helpers/helpers_search/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/helpers_search/qr_code.py +166 -0
- machineconfig/scripts/python/helpers/helpers_search/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -0
- machineconfig/scripts/python/helpers/helpers_search/symantic_search.py +25 -0
- machineconfig/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
- machineconfig/scripts/python/helpers/helpers_sessions/sessions_impl.py +186 -0
- machineconfig/scripts/python/{helpers_sessions → helpers/helpers_sessions}/sessions_multiprocess.py +20 -14
- machineconfig/scripts/python/helpers/helpers_terminal/__init__.py +0 -0
- machineconfig/scripts/python/helpers/helpers_terminal/terminal_impl.py +96 -0
- machineconfig/scripts/python/helpers/helpers_utils/download.py +150 -0
- machineconfig/scripts/python/helpers/helpers_utils/pdf.py +96 -0
- machineconfig/scripts/python/helpers/helpers_utils/python.py +210 -0
- machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
- machineconfig/scripts/python/mcfg_entry.py +143 -0
- machineconfig/scripts/python/msearch.py +26 -0
- machineconfig/scripts/python/sessions.py +69 -135
- machineconfig/scripts/python/terminal.py +58 -0
- machineconfig/scripts/python/utils.py +115 -38
- machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
- machineconfig/settings/atuin/config.toml +294 -0
- machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
- machineconfig/settings/broot/conf.toml +1 -1
- machineconfig/settings/helix/config.toml +16 -0
- machineconfig/settings/helix/languages.toml +13 -4
- machineconfig/settings/helix/yazi-picker.sh +12 -0
- machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
- machineconfig/settings/lf/linux/exe/previewer.sh +3 -2
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +14 -16
- machineconfig/settings/linters/.ruff.toml +2 -1
- machineconfig/settings/marimo/marimo.toml +1 -1
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
- machineconfig/settings/shells/bash/init.sh +47 -12
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
- machineconfig/settings/shells/nushell/config.nu +25 -33
- machineconfig/settings/shells/nushell/env.nu +21 -8
- machineconfig/settings/shells/nushell/init.nu +138 -0
- machineconfig/settings/shells/pwsh/init.ps1 +111 -17
- machineconfig/settings/shells/pwsh/search_pwsh_history.ps1 +99 -0
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +6 -1
- machineconfig/settings/shells/wt/settings.json +27 -18
- machineconfig/settings/shells/zsh/init.sh +42 -23
- 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/tv/config.toml +234 -0
- machineconfig/settings/tv/themes/catppuccin-mocha-sky.toml +22 -0
- machineconfig/settings/wsl/.wslconfig +5 -30
- machineconfig/settings/wt/__init__.py +0 -0
- machineconfig/settings/yazi/init.lua +61 -0
- machineconfig/settings/yazi/keymap_linux.toml +94 -0
- machineconfig/settings/yazi/keymap_windows.toml +78 -0
- machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
- machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
- machineconfig/settings/yazi/theme.toml +4 -0
- machineconfig/settings/yazi/yazi_linux.toml +94 -0
- machineconfig/settings/yazi/yazi_windows.toml +58 -0
- machineconfig/settings/zellij/layouts/st.kdl +40 -9
- machineconfig/settings/zellij/layouts/st2.kdl +1 -1
- machineconfig/setup_linux/__init__.py +2 -2
- machineconfig/setup_linux/apps_desktop.sh +8 -27
- machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -12
- machineconfig/setup_linux/web_shortcuts/live_from_github.sh +34 -0
- machineconfig/setup_mac/__init__.py +1 -4
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_windows/__init__.py +2 -5
- machineconfig/setup_windows/uv.ps1 +8 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -12
- machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +31 -0
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/type_hinting/sql/__init__.py +1 -0
- machineconfig/type_hinting/sql/base.py +216 -0
- machineconfig/type_hinting/sql/core_schema.py +64 -0
- machineconfig/type_hinting/sql/core_schema_typeddict.py +41 -0
- machineconfig/type_hinting/sql/typeddict_codegen.py +222 -0
- machineconfig/type_hinting/typedict/__init__.py +1 -0
- machineconfig/type_hinting/typedict/ast_utils.py +130 -0
- machineconfig/type_hinting/typedict/generator_helpers.py +319 -0
- machineconfig/type_hinting/typedict/generators.py +231 -0
- machineconfig/type_hinting/typedict/polars_schema.py +24 -0
- machineconfig/type_hinting/typedict/polars_schema_typeddict.py +63 -0
- machineconfig/utils/accessories.py +31 -4
- machineconfig/utils/code.py +163 -51
- machineconfig/utils/files/ascii_art.py +11 -15
- machineconfig/utils/files/headers.py +6 -7
- machineconfig/utils/files/read.py +8 -1
- machineconfig/utils/installer_utils/github_release_bulk.py +95 -138
- machineconfig/utils/installer_utils/github_release_scraper.py +99 -0
- machineconfig/utils/installer_utils/install_from_url.py +183 -0
- machineconfig/utils/installer_utils/installer_class.py +53 -102
- machineconfig/utils/installer_utils/installer_cli.py +161 -0
- machineconfig/utils/installer_utils/installer_helper.py +129 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +42 -91
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +20 -65
- machineconfig/utils/io.py +94 -9
- machineconfig/utils/links.py +56 -38
- machineconfig/utils/meta.py +38 -21
- machineconfig/utils/options.py +81 -23
- machineconfig/utils/options_utils/__init__.py +0 -0
- machineconfig/utils/options_utils/options_tv_linux.py +211 -0
- machineconfig/utils/options_utils/options_tv_windows.py +88 -0
- machineconfig/utils/options_utils/tv_options.py +37 -0
- machineconfig/utils/path_extended.py +52 -102
- machineconfig/utils/path_helper.py +76 -23
- machineconfig/utils/procs.py +1 -1
- machineconfig/utils/scheduler.py +26 -53
- machineconfig/utils/scheduling.py +0 -2
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
- machineconfig/utils/schemas/layouts/layout_types.py +1 -1
- machineconfig/utils/source_of_truth.py +6 -1
- machineconfig/utils/ssh.py +216 -419
- machineconfig/utils/ssh_utils/abc.py +5 -0
- machineconfig/utils/ssh_utils/copy_from_here.py +116 -0
- machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
- machineconfig/utils/ssh_utils/utils.py +158 -0
- machineconfig/utils/ssh_utils/wsl.py +147 -0
- machineconfig/utils/ssh_utils/wsl_helper.py +217 -0
- machineconfig/utils/terminal.py +1 -0
- machineconfig/utils/upgrade_packages.py +107 -35
- machineconfig/utils/ve.py +12 -4
- machineconfig-8.51.dist-info/METADATA +140 -0
- machineconfig-8.51.dist-info/RECORD +543 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/entry_points.txt +4 -1
- machineconfig/jobs/installer/check_installations.py +0 -248
- machineconfig/jobs/installer/custom/hx.py +0 -140
- 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/profile/backup.toml +0 -49
- machineconfig/profile/mapper.toml +0 -256
- machineconfig/scripts/linux/fzf2g +0 -21
- machineconfig/scripts/linux/fzfag +0 -17
- machineconfig/scripts/linux/fzffg +0 -25
- machineconfig/scripts/linux/fzfrga +0 -21
- machineconfig/scripts/linux/mcfgs +0 -38
- machineconfig/scripts/linux/other/share_smb +0 -1
- machineconfig/scripts/linux/other/switch_ip +0 -20
- machineconfig/scripts/linux/skrg +0 -4
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
- machineconfig/scripts/python/helpers_devops/cli_config.py +0 -120
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -77
- machineconfig/scripts/python/helpers_devops/cli_data.py +0 -25
- machineconfig/scripts/python/helpers_devops/cli_nw.py +0 -73
- machineconfig/scripts/python/helpers_devops/cli_repos.py +0 -181
- machineconfig/scripts/python/helpers_devops/cli_self.py +0 -122
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +0 -104
- machineconfig/scripts/python/helpers_devops/cli_utils.py +0 -221
- machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +0 -80
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +0 -3
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -37
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -44
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -43
- machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
- machineconfig/scripts/python/helpers_fire/template.sh +0 -15
- machineconfig/scripts/python/helpers_navigator/__init__.py +0 -20
- machineconfig/scripts/python/helpers_navigator/command_detail.py +0 -44
- machineconfig/scripts/python/helpers_navigator/command_tree.py +0 -588
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +0 -17
- machineconfig/scripts/python/helpers_repos/entrypoint.py +0 -76
- machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
- machineconfig/scripts/python/mcfg.py +0 -48
- machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
- machineconfig/scripts/python/nw/devops_add_identity.py +0 -82
- machineconfig/scripts/python/nw/devops_add_ssh_key.py +0 -134
- machineconfig/scripts/python/nw/ssh_debug_linux.py +0 -391
- machineconfig/scripts/python/nw/ssh_debug_windows.py +0 -338
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
- machineconfig/scripts/windows/fzfb.ps1 +0 -3
- machineconfig/scripts/windows/fzfg.ps1 +0 -2
- machineconfig/scripts/windows/fzfrga.bat +0 -20
- machineconfig/scripts/windows/mcfgs.ps1 +0 -17
- 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 -4
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_linux/others/cli_installation.sh +0 -137
- machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -30
- 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_mac/ssh/openssh_setup.sh +0 -114
- machineconfig/setup_windows/apps.ps1 +0 -62
- machineconfig/setup_windows/others/obs.ps1 +0 -4
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
- machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
- machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
- machineconfig/utils/installer_utils/installer.py +0 -225
- machineconfig/utils/tst.py +0 -20
- machineconfig-6.82.dist-info/METADATA +0 -82
- machineconfig-6.82.dist-info/RECORD +0 -441
- machineconfig/jobs/installer/{custom_dev → checks}/__init__.py +0 -0
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
- machineconfig/{scripts/python/helpers_cloud → jobs/installer/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/{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/{helpers_croshell → ai/utils}/__init__.py +0 -0
- machineconfig/scripts/python/ai/{solutions/_shared.py → utils/shared.py} +0 -0
- machineconfig/scripts/python/{helpers_devops → graph}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_devops/themes → helpers}/__init__.py +0 -0
- machineconfig/scripts/python/{env_manager → helpers/helper_env}/__init__.py +0 -0
- machineconfig/scripts/python/{env_manager → helpers/helper_env}/path_manager_backend.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_search.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_load_balancer.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents/templates}/template.ps1 +0 -0
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_cloud}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers5.py +0 -0
- /machineconfig/scripts/python/{helpers_sessions → helpers/helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/pomodoro.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer_template.py +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_devops}/__init__.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → scripts/python/helpers/helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
- /machineconfig/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_fire_command/__init__.py} +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/cloud_manager.py +0 -0
- /machineconfig/scripts/python/{helpers_fire_command/fire_jobs_streamlit_helper.py → helpers/helpers_fire_command/f.py} +0 -0
- /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
- /machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/search_bar.py +0 -0
- /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers/helpers_network/__init__.py} +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nw_drive.py +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_network}/onetimeshare.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/sync.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/WHEEL +0 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/top_level.txt +0 -0
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
from typing import Literal, Annotated, Optional
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
import typer
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def private(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for linking files")],
|
|
10
|
-
on_conflict: Annotated[Literal["throwError", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throwError",
|
|
11
|
-
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = None,
|
|
12
|
-
interactive: Annotated[bool, typer.Option(..., "--interactive", "-ia", help="Run in interactive mode")] = False):
|
|
13
|
-
"""🔗 Manage private configuration files."""
|
|
14
|
-
import machineconfig.profile.create_links_export as create_links_export
|
|
15
|
-
create_links_export.main_private_from_parser(method=method, on_conflict=on_conflict, which=which, interactive=interactive)
|
|
16
|
-
|
|
17
|
-
def public(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for setting up the config file.")],
|
|
18
|
-
on_conflict: Annotated[Literal["throwError", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throwError",
|
|
19
|
-
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = None,
|
|
20
|
-
interactive: Annotated[bool, typer.Option(..., "--interactive", "-ia", help="Run in interactive mode")] = False):
|
|
21
|
-
"""🔗 Manage public configuration files."""
|
|
22
|
-
import machineconfig.profile.create_links_export as create_links_export
|
|
23
|
-
create_links_export.main_public_from_parser(method=method, on_conflict=on_conflict, which=which, interactive=interactive)
|
|
24
|
-
|
|
25
|
-
def dotfile(file: Annotated[str, typer.Argument(help="file/folder path.")],
|
|
26
|
-
overwrite: Annotated[bool, typer.Option("--overwrite", "-o", help="Overwrite.")] = False,
|
|
27
|
-
dest: Annotated[str, typer.Option("--dest", "-d", help="destination folder")] = "",
|
|
28
|
-
):
|
|
29
|
-
"""🔗 Manage dotfiles."""
|
|
30
|
-
import machineconfig.scripts.python.helpers_devops.cli_config_dotfile as dotfile_module
|
|
31
|
-
dotfile_module.main(file=file, overwrite=overwrite, dest=dest)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
def shell():
|
|
35
|
-
"""🔗 Configure your shell profile."""
|
|
36
|
-
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
37
|
-
create_default_shell_profile()
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def path():
|
|
41
|
-
"""📚 NAVIGATE PATH variable with TUI"""
|
|
42
|
-
from machineconfig.scripts.python import env_manager as navigator
|
|
43
|
-
from pathlib import Path
|
|
44
|
-
path = Path(navigator.__file__).resolve().parent.joinpath("path_manager_tui.py")
|
|
45
|
-
from machineconfig.utils.code import run_shell_script, get_uv_command_executing_python_script
|
|
46
|
-
uv_with = ["textual"]
|
|
47
|
-
uv_project_dir = None
|
|
48
|
-
if not Path.home().joinpath("code/machineconfig").exists():
|
|
49
|
-
uv_with.append("machineconfig>=6.81")
|
|
50
|
-
else:
|
|
51
|
-
uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
|
|
52
|
-
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])
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
def pwsh_theme():
|
|
56
|
-
"""🔗 Select powershell prompt theme."""
|
|
57
|
-
import machineconfig.scripts.python.helpers_devops.themes as themes
|
|
58
|
-
file = Path(themes.__file__).parent / "choose_pwsh_theme.ps1"
|
|
59
|
-
import subprocess
|
|
60
|
-
subprocess.run(["pwsh", "-File", str(file)])
|
|
61
|
-
|
|
62
|
-
def starship_theme():
|
|
63
|
-
"""🔗 Select starship prompt theme."""
|
|
64
|
-
import subprocess
|
|
65
|
-
from machineconfig.utils.code import run_shell_script
|
|
66
|
-
|
|
67
|
-
presets: list[str] = ["catppuccin-powerline", "pastel-powerline", "tokyo-night", "gruvbox-rainbow", "jetpack"]
|
|
68
|
-
config_path: Path = Path.home() / ".config" / "starship.toml"
|
|
69
|
-
|
|
70
|
-
typer.echo("\n🚀 Starship Theme Selector\n")
|
|
71
|
-
for idx, preset in enumerate(presets, start=1):
|
|
72
|
-
typer.echo(f"{idx}. {preset}")
|
|
73
|
-
|
|
74
|
-
choice: str = typer.prompt("Select a preset")
|
|
75
|
-
|
|
76
|
-
try:
|
|
77
|
-
choice_idx: int = int(choice)
|
|
78
|
-
if 1 <= choice_idx <= len(presets):
|
|
79
|
-
selected_preset: str = presets[choice_idx - 1]
|
|
80
|
-
typer.echo(f"\n✨ Applying {selected_preset}...")
|
|
81
|
-
run_shell_script(f"""starship preset {selected_preset} -o {config_path}""")
|
|
82
|
-
typer.echo("\n📋 Preview:")
|
|
83
|
-
subprocess.run(["starship", "module", "all"], check=False)
|
|
84
|
-
typer.echo(f"\n✅ {selected_preset} applied!")
|
|
85
|
-
else:
|
|
86
|
-
typer.echo("❌ Invalid selection")
|
|
87
|
-
except ValueError:
|
|
88
|
-
typer.echo("❌ Please enter a valid number")
|
|
89
|
-
|
|
90
|
-
def copy_assets(which: Annotated[Literal["scripts", "settings", "both"], typer.Argument(..., help="Which assets to copy")]):
|
|
91
|
-
"""🔗 Copy asset files from library to machine."""
|
|
92
|
-
import machineconfig.profile.create_helper as create_helper
|
|
93
|
-
match which:
|
|
94
|
-
case "both":
|
|
95
|
-
create_helper.copy_assets_to_machine(which="scripts")
|
|
96
|
-
create_helper.copy_assets_to_machine(which="settings")
|
|
97
|
-
case _:
|
|
98
|
-
create_helper.copy_assets_to_machine(which=which)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
def get_app():
|
|
102
|
-
config_apps = typer.Typer(help="⚙️ [c] configuration subcommands", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
103
|
-
config_apps.command("private", no_args_is_help=True, help="🔗 [v] Manage private configuration files.")(private)
|
|
104
|
-
config_apps.command("v", no_args_is_help=True, hidden=True)(private)
|
|
105
|
-
config_apps.command("public", no_args_is_help=True, help="🔗 [b] Manage public configuration files.")(public)
|
|
106
|
-
config_apps.command("b", no_args_is_help=True, help="Manage public configuration files.", hidden=True)(public)
|
|
107
|
-
config_apps.command("dotfile", no_args_is_help=True, help="🔗 [d] Manage dotfiles.")(dotfile)
|
|
108
|
-
config_apps.command("d", no_args_is_help=True, hidden=True)(dotfile)
|
|
109
|
-
config_apps.command("shell", no_args_is_help=False, help="🔗 [s] Configure your shell profile.")(shell)
|
|
110
|
-
config_apps.command("s", no_args_is_help=False, help="Configure your shell profile.", hidden=True)(shell)
|
|
111
|
-
config_apps.command("path", no_args_is_help=False, help="📚 [p] NAVIGATE PATH variable with TUI")(path)
|
|
112
|
-
config_apps.command("p", no_args_is_help=False, help="NAVIGATE PATH variable with TUI", hidden=True)(path)
|
|
113
|
-
config_apps.command("starship-theme", no_args_is_help=False, help="🔗 [t] Select starship prompt theme.")(starship_theme)
|
|
114
|
-
config_apps.command("t", no_args_is_help=False, help="Select starship prompt theme.", hidden=True)(starship_theme)
|
|
115
|
-
config_apps.command("pwsh-theme", no_args_is_help=False, help="🔗 [T] Select powershell prompt theme.")(pwsh_theme)
|
|
116
|
-
config_apps.command("T", no_args_is_help=False, help="Select powershell prompt theme.", hidden=True)(pwsh_theme)
|
|
117
|
-
|
|
118
|
-
config_apps.command("copy-assets", no_args_is_help=True, help="🔗 [c] Copy asset files from library to machine.", hidden=False)(copy_assets)
|
|
119
|
-
config_apps.command("c", no_args_is_help=True, help="Copy asset files from library to machine.", hidden=True)(copy_assets)
|
|
120
|
-
return config_apps
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"""Like yadm and dotter."""
|
|
2
|
-
|
|
3
|
-
from typing import Annotated
|
|
4
|
-
|
|
5
|
-
import typer
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def main(
|
|
9
|
-
file: Annotated[str, typer.Argument(help="file/folder path.")],
|
|
10
|
-
overwrite: Annotated[bool, typer.Option("--overwrite", "-o", help="Overwrite.")] = False,
|
|
11
|
-
dest: Annotated[str, typer.Option("--dest", "-d", help="destination folder")] = "",
|
|
12
|
-
) -> None:
|
|
13
|
-
|
|
14
|
-
from rich.console import Console
|
|
15
|
-
from rich.panel import Panel
|
|
16
|
-
|
|
17
|
-
from machineconfig.utils.links import symlink_map
|
|
18
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
19
|
-
from machineconfig.utils.source_of_truth import CONFIG_ROOT
|
|
20
|
-
console = Console()
|
|
21
|
-
orig_path = PathExtended(file).expanduser().absolute()
|
|
22
|
-
if dest == "":
|
|
23
|
-
if "Local" in str(orig_path):
|
|
24
|
-
junction = orig_path.split(at="Local", sep=-1)[1]
|
|
25
|
-
elif "Roaming" in str(orig_path):
|
|
26
|
-
junction = orig_path.split(at="Roaming", sep=-1)[1]
|
|
27
|
-
elif ".config" in str(orig_path):
|
|
28
|
-
junction = orig_path.split(at=".config", sep=-1)[1]
|
|
29
|
-
else:
|
|
30
|
-
junction = orig_path.rel2home()
|
|
31
|
-
new_path = PathExtended(CONFIG_ROOT).parent.parent.joinpath(junction)
|
|
32
|
-
else:
|
|
33
|
-
dest_path = PathExtended(dest).expanduser().absolute()
|
|
34
|
-
dest_path.mkdir(parents=True, exist_ok=True)
|
|
35
|
-
new_path = dest_path.joinpath(orig_path.name)
|
|
36
|
-
|
|
37
|
-
symlink_map(config_file_default_path=orig_path, self_managed_config_file_path=new_path, on_conflict="throwError")
|
|
38
|
-
|
|
39
|
-
console.print(
|
|
40
|
-
Panel(
|
|
41
|
-
"\n".join(
|
|
42
|
-
[
|
|
43
|
-
"✅ Symbolic link created successfully!",
|
|
44
|
-
"🔄 Add the following snippet to mapper.toml to persist this mapping:",
|
|
45
|
-
]
|
|
46
|
-
),
|
|
47
|
-
title="Symlink Created",
|
|
48
|
-
border_style="green",
|
|
49
|
-
padding=(1, 2),
|
|
50
|
-
)
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
mapper_snippet = "\n".join(
|
|
54
|
-
[
|
|
55
|
-
f"[bold]📝 Edit configuration file:[/] [cyan]nano {PathExtended(CONFIG_ROOT)}/symlinks/mapper.toml[/cyan]",
|
|
56
|
-
"",
|
|
57
|
-
f"[{new_path.parent.name}]",
|
|
58
|
-
f"{orig_path.name.split('.')[0]} = {{ this = '{orig_path.collapseuser().as_posix()}', to_this = '{new_path.collapseuser().as_posix()}' }}",
|
|
59
|
-
]
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
console.print(
|
|
63
|
-
Panel(
|
|
64
|
-
mapper_snippet,
|
|
65
|
-
title="Mapper Entry",
|
|
66
|
-
border_style="cyan",
|
|
67
|
-
padding=(1, 2),
|
|
68
|
-
)
|
|
69
|
-
)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
def arg_parser() -> None:
|
|
73
|
-
typer.run(main)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if __name__ == "__main__":
|
|
77
|
-
arg_parser()
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import typer
|
|
3
|
-
from typing import Annotated, Optional
|
|
4
|
-
|
|
5
|
-
def backup(cloud: Annotated[Optional[str], typer.Option("--cloud", "-c", help="☁️ Cloud configuration name (rclone config name)")] = None,
|
|
6
|
-
which: Annotated[Optional[str], typer.Option("--which", "-w", help="📝 Comma-separated list of items to BACKUP (from backup.toml), or 'all' for all items")] = None):
|
|
7
|
-
"""💾 BACKUP"""
|
|
8
|
-
from machineconfig.scripts.python.helpers_devops.devops_backup_retrieve import main_backup_retrieve
|
|
9
|
-
main_backup_retrieve(direction="BACKUP", which=which, cloud=cloud)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def retrieve(cloud: Annotated[Optional[str], typer.Option("--cloud", "-c", help="☁️ Cloud configuration name (rclone config name)")] = None,
|
|
13
|
-
which: Annotated[Optional[str], typer.Option("--which", "-w", help="📝 Comma-separated list of items to RETRIEVE (from backup.toml), or 'all' for all items")] = None):
|
|
14
|
-
"""📥 RETRIEVE"""
|
|
15
|
-
from machineconfig.scripts.python.helpers_devops.devops_backup_retrieve import main_backup_retrieve
|
|
16
|
-
main_backup_retrieve(direction="RETRIEVE", which=which, cloud=cloud)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def get_app() -> typer.Typer:
|
|
20
|
-
app = typer.Typer(name="data", help="💾 [d] Backup and Retrieve configuration files and directories to/from cloud storage using rclone.", no_args_is_help=True)
|
|
21
|
-
app.command(name="backup", no_args_is_help=True, hidden=False, help="💾 [b] Backup files and directories to cloud storage using rclone.")(backup)
|
|
22
|
-
app.command(name="b", no_args_is_help=True, hidden=True,)(backup)
|
|
23
|
-
app.command(name="retrieve", no_args_is_help=True, hidden=False, help="📥 [r] Retrieve files and directories from cloud storage using rclone.")(retrieve)
|
|
24
|
-
app.command(name="r", no_args_is_help=True, hidden=True, )(retrieve)
|
|
25
|
-
return app
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import machineconfig.scripts.python.helpers_devops.cli_terminal as cli_terminal
|
|
3
|
-
import machineconfig.scripts.python.helpers_devops.cli_share_server as cli_share_server
|
|
4
|
-
import typer
|
|
5
|
-
from typing import Optional, Annotated
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def install_ssh_server():
|
|
10
|
-
"""📡 SSH install server"""
|
|
11
|
-
import platform
|
|
12
|
-
if platform.system() == "Windows":
|
|
13
|
-
from machineconfig.setup_windows import SSH_SERVER
|
|
14
|
-
elif platform.system() == "Linux" or platform.system() == "Darwin":
|
|
15
|
-
from machineconfig.setup_linux import SSH_SERVER
|
|
16
|
-
else:
|
|
17
|
-
raise NotImplementedError(f"Platform {platform.system()} is not supported.")
|
|
18
|
-
from machineconfig.utils.code import run_shell_script
|
|
19
|
-
run_shell_script(script=SSH_SERVER.read_text(encoding="utf-8"))
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def add_ssh_key(path: Annotated[Optional[str], typer.Option(..., help="Path to the public key file")] = None,
|
|
23
|
-
choose: Annotated[bool, typer.Option(..., "--choose", "-c", help="Choose from available public keys in ~/.ssh/*.pub")] = False,
|
|
24
|
-
value: Annotated[bool, typer.Option(..., "--value", "-v", help="Paste the public key content manually")] = False,
|
|
25
|
-
github: Annotated[Optional[str], typer.Option(..., "--github", "-g", help="Fetch public keys from a GitHub username")] = None
|
|
26
|
-
):
|
|
27
|
-
"""🔑 SSH add pub key to this machine so its accessible by owner of corresponding private key."""
|
|
28
|
-
import machineconfig.scripts.python.nw.devops_add_ssh_key as helper
|
|
29
|
-
helper.main(pub_path=path, pub_choose=choose, pub_val=value, from_github=github)
|
|
30
|
-
def add_ssh_identity():
|
|
31
|
-
"""🗝️ SSH add identity (private key) to this machine"""
|
|
32
|
-
import machineconfig.scripts.python.nw.devops_add_identity as helper
|
|
33
|
-
helper.main()
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def show_address():
|
|
37
|
-
import socket
|
|
38
|
-
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
39
|
-
s.connect(('8.8.8.8',80))
|
|
40
|
-
local_ip_v4 = s.getsockname()[0]
|
|
41
|
-
s.close()
|
|
42
|
-
print(f"This computer is @ {local_ip_v4}")
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def debug_ssh():
|
|
46
|
-
"""🐛 SSH debug"""
|
|
47
|
-
from platform import system
|
|
48
|
-
if system() == "Linux" or system() == "Darwin":
|
|
49
|
-
import machineconfig.scripts.python.nw.ssh_debug_linux as helper
|
|
50
|
-
helper.ssh_debug_linux()
|
|
51
|
-
elif system() == "Windows":
|
|
52
|
-
import machineconfig.scripts.python.nw.ssh_debug_windows as helper
|
|
53
|
-
helper.ssh_debug_windows()
|
|
54
|
-
else:
|
|
55
|
-
raise NotImplementedError(f"Platform {system()} is not supported.")
|
|
56
|
-
|
|
57
|
-
def get_app():
|
|
58
|
-
nw_apps = typer.Typer(help="🔐 [n] Network subcommands", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
59
|
-
nw_apps.command(name="share-terminal", help="📡 [t] Share terminal via web browser")(cli_terminal.main)
|
|
60
|
-
nw_apps.command(name="t", help="Share terminal via web browser", hidden=True)(cli_terminal.main)
|
|
61
|
-
nw_apps.command(name="share-server", help="🌐 [s] Start local/global server to share files/folders via web browser", no_args_is_help=True)(cli_share_server.main)
|
|
62
|
-
nw_apps.command(name="s", help="Start local/global server to share files/folders via web browser", hidden=True, no_args_is_help=True)(cli_share_server.main)
|
|
63
|
-
nw_apps.command(name="install-ssh-server", help="📡 [i] Install SSH server")(install_ssh_server)
|
|
64
|
-
nw_apps.command(name="i", help="Install SSH server", hidden=True)(install_ssh_server)
|
|
65
|
-
nw_apps.command(name="add-ssh-key", help="🔑 [k] Add SSH public key to this machine", no_args_is_help=True)(add_ssh_key)
|
|
66
|
-
nw_apps.command(name="k", help="Add SSH public key to this machine", hidden=True, no_args_is_help=True)(add_ssh_key)
|
|
67
|
-
nw_apps.command(name="add-ssh-identity", help="🗝️ [A] Add SSH identity (private key) to this machine")(add_ssh_identity)
|
|
68
|
-
nw_apps.command(name="A", help="Add SSH identity (private key) to this machine", hidden=True)(add_ssh_identity)
|
|
69
|
-
nw_apps.command(name="show-address", help="📌 [a] Show this computer addresses on network")(show_address)
|
|
70
|
-
nw_apps.command(name="a", help="Show this computer addresses on network", hidden=True)(show_address)
|
|
71
|
-
nw_apps.command(name="debug-ssh", help="🐛 [d] Debug SSH connection")(debug_ssh)
|
|
72
|
-
nw_apps.command(name="d", help="Debug SSH connection", hidden=True)(debug_ssh)
|
|
73
|
-
return nw_apps
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
"""Repos CLI powered by Typer.
|
|
2
|
-
|
|
3
|
-
# TODO use gh api user --jq '.login' to get the username and use it to clone the repos.
|
|
4
|
-
in the event that username@github.com is not mentioned in the remote url.
|
|
5
|
-
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from pathlib import Path
|
|
9
|
-
from typing import Annotated, Optional
|
|
10
|
-
import typer
|
|
11
|
-
from machineconfig.scripts.python.helpers_repos.secure_repo import main as secure_repo_main
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
DirectoryArgument = Annotated[Optional[str], typer.Argument(help="📁 Directory containing repo(s).")]
|
|
15
|
-
RecursiveOption = Annotated[bool, typer.Option("--recursive", "-r", help="🔍 Recurse into nested repositories.")]
|
|
16
|
-
NO_UVsyncOption = Annotated[bool, typer.Option("--no-uv-sync", "-ns", help="🚫 Disable automatic uv sync after pulls.")]
|
|
17
|
-
CloudOption = Annotated[Optional[str], typer.Option("--cloud", "-c", help="☁️ Upload to or download from this cloud remote.")]
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def push(directory: DirectoryArgument = None, recursive: RecursiveOption = False, no_uv_sync: NO_UVsyncOption = False) -> None:
|
|
21
|
-
"""🚀 Push changes across repositories."""
|
|
22
|
-
from machineconfig.scripts.python.helpers_repos.entrypoint import git_operations
|
|
23
|
-
git_operations(directory, pull=False, commit=False, push=True, recursive=recursive, auto_uv_sync=not no_uv_sync)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def pull(directory: DirectoryArgument = None, recursive: RecursiveOption = False, no_uv_sync: NO_UVsyncOption = False) -> None:
|
|
27
|
-
"""⬇️ Pull changes across repositories."""
|
|
28
|
-
from machineconfig.scripts.python.helpers_repos.entrypoint import git_operations
|
|
29
|
-
|
|
30
|
-
git_operations(directory, pull=True, commit=False, push=False, recursive=recursive, auto_uv_sync=not no_uv_sync)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def commit(directory: DirectoryArgument = None, recursive: RecursiveOption = False, no_uv_sync: NO_UVsyncOption = False) -> None:
|
|
34
|
-
"""💾 Commit changes across repositories."""
|
|
35
|
-
from machineconfig.scripts.python.helpers_repos.entrypoint import git_operations
|
|
36
|
-
git_operations(directory, pull=False, commit=True, push=False, recursive=recursive, auto_uv_sync=not no_uv_sync)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def sync(directory: DirectoryArgument = None, recursive: RecursiveOption = False, no_uv_sync: NO_UVsyncOption = False) -> None:
|
|
40
|
-
"""🔄 Pull, commit, and push changes across repositories."""
|
|
41
|
-
from machineconfig.scripts.python.helpers_repos.entrypoint import git_operations
|
|
42
|
-
git_operations(directory, pull=True, commit=True, push=True, recursive=recursive, auto_uv_sync=not no_uv_sync)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def capture(directory: DirectoryArgument = None, cloud: CloudOption = None) -> None:
|
|
46
|
-
"""📝 Record repositories into a repos.json specification."""
|
|
47
|
-
from machineconfig.scripts.python.helpers_repos.entrypoint import resolve_directory
|
|
48
|
-
repos_root = resolve_directory(directory)
|
|
49
|
-
from machineconfig.scripts.python.helpers_repos.record import main_record as record_repos
|
|
50
|
-
save_path = record_repos(repos_root=repos_root)
|
|
51
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
52
|
-
if cloud is not None:
|
|
53
|
-
PathExtended(save_path).to_cloud(rel2home=True, cloud=cloud)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
def clone(directory: DirectoryArgument = None, cloud: CloudOption = None) -> None:
|
|
57
|
-
"""📥 Clone repositories described by a repos.json specification."""
|
|
58
|
-
from machineconfig.scripts.python.helpers_repos.entrypoint import clone_from_specs
|
|
59
|
-
clone_from_specs(directory, cloud, checkout_branch_flag=False, checkout_commit_flag=False)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
def checkout_command(directory: DirectoryArgument = None, cloud: CloudOption = None) -> None:
|
|
63
|
-
"""🔀 Check out specific commits listed in the specification."""
|
|
64
|
-
from machineconfig.scripts.python.helpers_repos.entrypoint import clone_from_specs
|
|
65
|
-
clone_from_specs(directory, cloud, checkout_branch_flag=False, checkout_commit_flag=True)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
def checkout_to_branch_command(directory: DirectoryArgument = None, cloud: CloudOption = None) -> None:
|
|
69
|
-
"""🔀 Check out to the main branch defined in the specification."""
|
|
70
|
-
from machineconfig.scripts.python.helpers_repos.entrypoint import clone_from_specs
|
|
71
|
-
clone_from_specs(directory, cloud, checkout_branch_flag=True, checkout_commit_flag=False)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def analyze(directory: DirectoryArgument = None) -> None:
|
|
75
|
-
"""📊 Analyze repository development over time."""
|
|
76
|
-
repo_path = directory if directory is not None else "."
|
|
77
|
-
from machineconfig.scripts.python.helpers_repos.count_lines_frontend import analyze_repo_development
|
|
78
|
-
analyze_repo_development(repo_path=repo_path)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
def viz(
|
|
82
|
-
repo: Annotated[str, typer.Option(..., "--repo", "-r", help="Path to git repository to visualize")] = Path.cwd().__str__(),
|
|
83
|
-
output_file: Annotated[Optional[Path], typer.Option(..., "--output", "-o", help="Output video file (e.g., output.mp4). If specified, gource will render to video.")] = None,
|
|
84
|
-
resolution: Annotated[str, typer.Option(..., "--resolution", "-res", help="Video resolution (e.g., 1920x1080, 1280x720)")] = "1920x1080",
|
|
85
|
-
seconds_per_day: Annotated[float, typer.Option(..., "--seconds-per-day", "-spd", help="Speed of simulation (lower = faster)")] = 0.1,
|
|
86
|
-
auto_skip_seconds: Annotated[float, typer.Option(..., "--auto-skip-seconds", "-as", help="Skip to next entry if nothing happens for X seconds")] = 1.0,
|
|
87
|
-
title: Annotated[Optional[str], typer.Option(..., "--title", "-t", help="Title for the visualization")] = None,
|
|
88
|
-
hide_items: Annotated[list[str], typer.Option(..., "--hide", "-h", help="Items to hide: bloom, date, dirnames, files, filenames, mouse, progress, root, tree, users, usernames")] = [],
|
|
89
|
-
key_items: Annotated[bool, typer.Option(..., "--key", "-k", help="Show file extension key")] = False,
|
|
90
|
-
fullscreen: Annotated[bool, typer.Option(..., "--fullscreen", "-f", help="Run in fullscreen mode")] = False,
|
|
91
|
-
viewport: Annotated[Optional[str], typer.Option(..., "--viewport", "-v", help="Camera viewport (e.g., '1000x1000')")] = None,
|
|
92
|
-
start_date: Annotated[Optional[str], typer.Option(..., "--start-date", help="Start date (YYYY-MM-DD)")] = None,
|
|
93
|
-
stop_date: Annotated[Optional[str], typer.Option(..., "--stop-date", help="Stop date (YYYY-MM-DD)")] = None,
|
|
94
|
-
user_image_dir: Annotated[Optional[Path], typer.Option(..., "--user-image-dir", help="Directory with user avatar images")] = None,
|
|
95
|
-
max_files: Annotated[int, typer.Option(..., "--max-files", help="Maximum number of files to show (0 = no limit)")] = 0,
|
|
96
|
-
max_file_lag: Annotated[float, typer.Option(..., "--max-file-lag", help="Max time files remain on screen after last change")] = 5.0,
|
|
97
|
-
file_idle_time: Annotated[int, typer.Option(..., "--file-idle-time", help="Time in seconds files remain idle before being removed")] = 0,
|
|
98
|
-
framerate: Annotated[int, typer.Option(..., "--framerate", help="Frames per second for video output")] = 60,
|
|
99
|
-
background_color: Annotated[str, typer.Option(..., "--background-color", help="Background color in hex (e.g., 000000 for black)")] = "000000",
|
|
100
|
-
font_size: Annotated[int, typer.Option(..., "--font-size", help="Font size")] = 22,
|
|
101
|
-
camera_mode: Annotated[str, typer.Option(..., "--camera-mode", help="Camera mode: overview or track")] = "overview",
|
|
102
|
-
) -> None:
|
|
103
|
-
"""🎬 Visualize repository activity using Gource."""
|
|
104
|
-
from machineconfig.scripts.python.helpers_repos.grource import visualize
|
|
105
|
-
visualize(repo=repo, output_file=output_file, resolution=resolution, seconds_per_day=seconds_per_day,
|
|
106
|
-
auto_skip_seconds=auto_skip_seconds, title=title, hide_items=hide_items, key_items=key_items,
|
|
107
|
-
fullscreen=fullscreen, viewport=viewport, start_date=start_date, stop_date=stop_date,
|
|
108
|
-
user_image_dir=user_image_dir, max_files=max_files, max_file_lag=max_file_lag,
|
|
109
|
-
file_idle_time=file_idle_time, framerate=framerate, background_color=background_color,
|
|
110
|
-
font_size=font_size, camera_mode=camera_mode)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
def cleanup(repo: DirectoryArgument = None, recursive: RecursiveOption = False) -> None:
|
|
114
|
-
"""🧹 Clean repository directories from cache files."""
|
|
115
|
-
if repo is None:
|
|
116
|
-
repo = Path.cwd().as_posix()
|
|
117
|
-
|
|
118
|
-
arg_path = Path(repo).expanduser().absolute()
|
|
119
|
-
from git import Repo, InvalidGitRepositoryError
|
|
120
|
-
if not recursive:
|
|
121
|
-
# Check if the directory is a git repo
|
|
122
|
-
try:
|
|
123
|
-
Repo(str(arg_path), search_parent_directories=False)
|
|
124
|
-
except InvalidGitRepositoryError:
|
|
125
|
-
typer.echo(f"❌ {arg_path} is not a git repository. Use -r flag for recursive cleanup.")
|
|
126
|
-
return
|
|
127
|
-
# Run cleanup on this repo
|
|
128
|
-
repos_to_clean = [arg_path]
|
|
129
|
-
else:
|
|
130
|
-
# Find all git repos recursively under the directory
|
|
131
|
-
git_dirs = list(arg_path.rglob('.git'))
|
|
132
|
-
repos_to_clean = [git_dir.parent for git_dir in git_dirs if git_dir.is_dir()]
|
|
133
|
-
if not repos_to_clean:
|
|
134
|
-
typer.echo(f"❌ No git repositories found under {arg_path}")
|
|
135
|
-
return
|
|
136
|
-
|
|
137
|
-
for repo_path in repos_to_clean:
|
|
138
|
-
typer.echo(f"🧹 Cleaning {repo_path}")
|
|
139
|
-
script = fr"""
|
|
140
|
-
cd "{repo_path}"
|
|
141
|
-
uv run --with cleanpy cleanpy .
|
|
142
|
-
# mcinit .
|
|
143
|
-
# find "." -type f \( -name "*.py" -o -name "*.md" -o -name "*.json" \) -not -path "*/\.*" -not -path "*/__pycache__/*" -print0 | xargs -0 sed -i 's/[[:space:]]*$//'
|
|
144
|
-
"""
|
|
145
|
-
from machineconfig.utils.code import run_shell_script
|
|
146
|
-
run_shell_script(script)
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
def get_app():
|
|
150
|
-
repos_apps = typer.Typer(help="📁 [r] Manage development repositories", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
151
|
-
mirror_app = typer.Typer(help="🔄 [m] Manage repository specifications and syncing", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
152
|
-
repos_apps.add_typer(mirror_app, name="mirror", help="🔄 [m] mirror repositories using saved specs")
|
|
153
|
-
repos_apps.add_typer(mirror_app, name="m", help="mirror repositories using saved specs", hidden=True)
|
|
154
|
-
|
|
155
|
-
repos_apps.command(name="push", help="🚀 [p] Push changes across repositories")(push)
|
|
156
|
-
repos_apps.command(name="p", help="Push changes across repositories", hidden=True)(push)
|
|
157
|
-
repos_apps.command(name="pull", help="⬇️ [P] Pull changes across repositories")(pull)
|
|
158
|
-
repos_apps.command(name="P", help="Pull changes across repositories", hidden=True)(pull)
|
|
159
|
-
repos_apps.command(name="commit", help="💾 [c] Commit changes across repositories")(commit)
|
|
160
|
-
repos_apps.command(name="c", help="Commit changes across repositories", hidden=True)(commit)
|
|
161
|
-
repos_apps.command(name="sync", help="🔄 [y] Pull, commit, and push changes across repositories")(sync)
|
|
162
|
-
repos_apps.command(name="s", help="Pull, commit, and push changes across repositories", hidden=True)(sync)
|
|
163
|
-
repos_apps.command(name="analyze", help="📊 [a] Analyze repository development over time")(analyze)
|
|
164
|
-
repos_apps.command(name="a", help="Analyze repository development over time", hidden=True)(analyze)
|
|
165
|
-
repos_apps.command(name="secure", help="🔐 [s] Securely sync git repository to/from cloud with encryption")(secure_repo_main)
|
|
166
|
-
repos_apps.command(name="s", help="Securely sync git repository to/from cloud with encryption", hidden=True)(secure_repo_main)
|
|
167
|
-
repos_apps.command(name="viz", help="🎬 [v] Visualize repository activity using Gource")(viz)
|
|
168
|
-
repos_apps.command(name="v", help="Visualize repository activity using Gource", hidden=True)(viz)
|
|
169
|
-
repos_apps.command(name="cleanup", help="🧹 [n] Clean repository directories from cache files")(cleanup)
|
|
170
|
-
repos_apps.command(name="n", help="Clean repository directories from cache files", hidden=True)(cleanup)
|
|
171
|
-
|
|
172
|
-
mirror_app.command(name="capture", help="📝 [cap] Record repositories into a repos.json specification")(capture)
|
|
173
|
-
mirror_app.command(name="cap", help="Record repositories into a repos.json specification", hidden=True)(capture)
|
|
174
|
-
mirror_app.command(name="clone", help="📥 [clo] Clone repositories described by a repos.json specification")(clone)
|
|
175
|
-
mirror_app.command(name="clo", help="Clone repositories described by a repos.json specification", hidden=True)(clone)
|
|
176
|
-
mirror_app.command(name="checkout-to-commit", help="🔀 [ctc] Check out specific commits listed in the specification")(checkout_command)
|
|
177
|
-
mirror_app.command(name="ctc", help="Check out specific commits listed in the specification", hidden=True)(checkout_command)
|
|
178
|
-
mirror_app.command(name="checkout-to-branch", help="🔀 [ctb] Check out to the main branch defined in the specification")(checkout_to_branch_command)
|
|
179
|
-
mirror_app.command(name="ctb", help="Check out to the main branch defined in the specification", hidden=True)(checkout_to_branch_command)
|
|
180
|
-
|
|
181
|
-
return repos_apps
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import typer
|
|
3
|
-
from typing import Optional, Annotated
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def update(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-na", help="Copy (overwrite) assets to the machine after the update")] = False):
|
|
7
|
-
"""🔄 UPDATE uv and machineconfig"""
|
|
8
|
-
# from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
9
|
-
# repo_root = LIBRARY_ROOT.parent.parent
|
|
10
|
-
from pathlib import Path
|
|
11
|
-
if Path.home().joinpath("code", "machineconfig").exists():
|
|
12
|
-
code = """
|
|
13
|
-
uv self update
|
|
14
|
-
cd ~/code/machineconfig
|
|
15
|
-
git pull
|
|
16
|
-
uv tool install --upgrade --editable $HOME/code/machineconfig
|
|
17
|
-
"""
|
|
18
|
-
else:
|
|
19
|
-
code = """
|
|
20
|
-
uv self update
|
|
21
|
-
uv tool install --upgrade machineconfig
|
|
22
|
-
"""
|
|
23
|
-
import platform
|
|
24
|
-
if platform.system() == "Windows":
|
|
25
|
-
# from machineconfig.utils.code import run_shell_script_after_exit
|
|
26
|
-
# run_shell_script_after_exit(code)
|
|
27
|
-
print(f'please run {code} in powershell to update machineconfig')
|
|
28
|
-
else:
|
|
29
|
-
from machineconfig.utils.code import run_shell_script
|
|
30
|
-
run_shell_script(code)
|
|
31
|
-
if not no_copy_assets:
|
|
32
|
-
import machineconfig.profile.create_helper as create_helper
|
|
33
|
-
create_helper.copy_assets_to_machine(which="scripts")
|
|
34
|
-
create_helper.copy_assets_to_machine(which="settings")
|
|
35
|
-
def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-na", help="Copy (overwrite) assets to the machine after the update")] = False):
|
|
36
|
-
"""📋 CLONE machienconfig locally and incorporate to shell profile for faster execution and nightly updates."""
|
|
37
|
-
from machineconfig.utils.code import run_shell_script
|
|
38
|
-
from pathlib import Path
|
|
39
|
-
if Path.home().joinpath("code/machineconfig").exists():
|
|
40
|
-
run_shell_script(f"""$HOME/.local/bin/uv tool install --upgrade --editable "{str(Path.home().joinpath("code/machineconfig"))}" """)
|
|
41
|
-
else:
|
|
42
|
-
import platform
|
|
43
|
-
if platform.system() == "Windows":
|
|
44
|
-
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.81" """)
|
|
45
|
-
else:
|
|
46
|
-
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.81" """)
|
|
47
|
-
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
48
|
-
if not no_copy_assets:
|
|
49
|
-
create_default_shell_profile() # involves copying assets too
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
def interactive():
|
|
54
|
-
"""🤖 INTERACTIVE configuration of machine."""
|
|
55
|
-
from machineconfig.scripts.python.interactive import main
|
|
56
|
-
main()
|
|
57
|
-
|
|
58
|
-
def status():
|
|
59
|
-
"""📊 STATUS of machine, shell profile, apps, symlinks, dotfiles, etc."""
|
|
60
|
-
import machineconfig.scripts.python.helpers_devops.devops_status as helper
|
|
61
|
-
helper.main()
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
def navigate():
|
|
65
|
-
"""📚 NAVIGATE command structure with TUI"""
|
|
66
|
-
import machineconfig.scripts.python as navigator
|
|
67
|
-
from pathlib import Path
|
|
68
|
-
path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
|
|
69
|
-
from machineconfig.utils.code import run_shell_script
|
|
70
|
-
if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
|
|
71
|
-
else: executable = """--with "machineconfig>=6.81,textual" """
|
|
72
|
-
run_shell_script(f"""uv run {executable} {path}""")
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def run_python(ip: Annotated[str, typer.Argument(..., help="Python command to run in the machineconfig environment")],
|
|
76
|
-
command: Annotated[Optional[bool], typer.Option(..., "--command", "-c", help="Run as command")] = False):
|
|
77
|
-
"""🐍 RUN python command/file in the machineconfig environment"""
|
|
78
|
-
if command:
|
|
79
|
-
exec(ip)
|
|
80
|
-
return
|
|
81
|
-
import machineconfig
|
|
82
|
-
import subprocess
|
|
83
|
-
import sys
|
|
84
|
-
subprocess.run([sys.executable, ip], cwd=machineconfig.__path__[0])
|
|
85
|
-
def readme():
|
|
86
|
-
from rich.console import Console
|
|
87
|
-
from rich.markdown import Markdown
|
|
88
|
-
import requests
|
|
89
|
-
|
|
90
|
-
# URL of the raw README.md file
|
|
91
|
-
url_readme = "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/refs/heads/main/README.md"
|
|
92
|
-
|
|
93
|
-
# Fetch the content
|
|
94
|
-
response = requests.get(url_readme)
|
|
95
|
-
response.raise_for_status() # Raise an error for bad responses
|
|
96
|
-
|
|
97
|
-
# Parse markdown
|
|
98
|
-
md = Markdown(response.text)
|
|
99
|
-
|
|
100
|
-
# Render in terminal
|
|
101
|
-
console = Console()
|
|
102
|
-
console.print(md)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def get_app():
|
|
106
|
-
cli_app = typer.Typer(help="🔄 [s] self operations subcommands", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
107
|
-
cli_app.command("update", no_args_is_help=False, help="🔄 [u] UPDATE machineconfig")(update)
|
|
108
|
-
cli_app.command("u", no_args_is_help=False, hidden=True)(update)
|
|
109
|
-
cli_app.command("interactive", no_args_is_help=False, help="🤖 [i] INTERACTIVE configuration of machine.")(interactive)
|
|
110
|
-
cli_app.command("i", no_args_is_help=False, help="INTERACTIVE configuration of machine.", hidden=True)(interactive)
|
|
111
|
-
cli_app.command("status", no_args_is_help=False, help="📊 [s] STATUS of machine, shell profile, apps, symlinks, dotfiles, etc.")(status)
|
|
112
|
-
cli_app.command("s", no_args_is_help=False, help="STATUS of machine, shell profile, apps, symlinks, dotfiles, etc.", hidden=True)(status)
|
|
113
|
-
cli_app.command("install", no_args_is_help=False, help="📋 [I] CLONE machienconfig locally and incorporate to shell profile for faster execution and nightly updates.")(install)
|
|
114
|
-
cli_app.command("I", no_args_is_help=False, help="CLONE machienconfig locally and incorporate to shell profile for faster execution and nightly updates.", hidden=True)(install)
|
|
115
|
-
cli_app.command("navigate", no_args_is_help=False, help="📚 [n] NAVIGATE command structure with TUI")(navigate)
|
|
116
|
-
cli_app.command("n", no_args_is_help=False, help="NAVIGATE command structure with TUI", hidden=True)(navigate)
|
|
117
|
-
cli_app.command("python", no_args_is_help=False, help="🐍 [c] python command/file in the machineconfig environment", context_settings={"show_help_on_error": True})(run_python)
|
|
118
|
-
cli_app.command("c", no_args_is_help=False, help="RUN python command/file in the machineconfig environment", hidden=True)(run_python)
|
|
119
|
-
cli_app.command("readme", no_args_is_help=False, help="📚 [r] render readme markdown in terminal.")(readme)
|
|
120
|
-
cli_app.command("r", no_args_is_help=False, hidden=True)(readme)
|
|
121
|
-
return cli_app
|
|
122
|
-
|