machineconfig 3.7__py3-none-any.whl → 7.69__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/__init__.py +0 -28
- machineconfig/cluster/remote/distribute.py +0 -1
- machineconfig/cluster/remote/file_manager.py +0 -2
- machineconfig/cluster/remote/script_execution.py +1 -2
- machineconfig/cluster/sessions_managers/{enhanced_command_runner.py → helpers/enhanced_command_runner.py} +4 -6
- machineconfig/cluster/sessions_managers/helpers/load_balancer_helper.py +145 -0
- machineconfig/cluster/sessions_managers/utils/load_balancer.py +53 -0
- machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
- machineconfig/cluster/sessions_managers/wt_local.py +128 -330
- machineconfig/cluster/sessions_managers/wt_local_manager.py +53 -187
- machineconfig/cluster/sessions_managers/wt_remote.py +51 -43
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +49 -197
- machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +6 -19
- 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_reporter.py +4 -2
- 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 +81 -375
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +22 -172
- machineconfig/cluster/sessions_managers/zellij_remote.py +40 -41
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +13 -10
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +4 -8
- machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +5 -20
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -9
- machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -1
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper.py +298 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_restart.py +77 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_with_panes.py +228 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_manager_helper.py +165 -0
- machineconfig/jobs/{python → installer}/check_installations.py +7 -21
- machineconfig/jobs/installer/custom/boxes.py +61 -0
- machineconfig/jobs/installer/custom/gh.py +128 -0
- machineconfig/jobs/{python_custom_installers → installer/custom}/hx.py +84 -18
- machineconfig/jobs/installer/custom_dev/alacritty.py +86 -0
- machineconfig/jobs/installer/custom_dev/brave.py +82 -0
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py +59 -0
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +63 -0
- machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/cursor.py +7 -7
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
- machineconfig/jobs/installer/custom_dev/espanso.py +117 -0
- machineconfig/jobs/installer/custom_dev/goes.py +68 -0
- machineconfig/jobs/installer/custom_dev/lvim.py +89 -0
- machineconfig/jobs/installer/custom_dev/nerdfont.py +111 -0
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +149 -0
- machineconfig/jobs/installer/custom_dev/redis.py +88 -0
- machineconfig/jobs/installer/custom_dev/sysabc.py +145 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +92 -0
- machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/winget.py +2 -3
- machineconfig/jobs/installer/installer_data.json +3440 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/brave.sh +4 -14
- machineconfig/jobs/{python_custom_installers/scripts/linux/warp-cli.sh → installer/linux_scripts/cloudflare_warp_cli.sh} +5 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/docker.sh +6 -18
- machineconfig/jobs/installer/linux_scripts/docker_start.sh +37 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/edge.sh +3 -11
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/nerdfont.sh +5 -17
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
- machineconfig/jobs/installer/linux_scripts/ngrok.sh +6 -0
- machineconfig/jobs/installer/linux_scripts/q.sh +9 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/redis.sh +6 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/vscode.sh +5 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/wezterm.sh +4 -12
- machineconfig/jobs/installer/package_groups.py +255 -0
- machineconfig/logger.py +0 -1
- machineconfig/profile/backup.toml +49 -0
- machineconfig/profile/bash_shell_profiles.md +11 -0
- machineconfig/profile/create_helper.py +74 -0
- machineconfig/profile/create_links.py +288 -0
- machineconfig/profile/create_links_export.py +100 -0
- machineconfig/profile/create_shell_profile.py +136 -0
- machineconfig/profile/mapper.toml +258 -0
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/{share_cloud.sh → other/share_cloud.sh} +14 -25
- machineconfig/scripts/linux/wrap_mcfg +47 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +198 -0
- machineconfig/scripts/python/ai/command_runner/command_runner.sh +9 -0
- machineconfig/scripts/python/ai/command_runner/prompt.txt +9 -0
- machineconfig/scripts/python/ai/generate_files.py +307 -42
- machineconfig/scripts/python/ai/{mcinit.py → initai.py} +3 -38
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +114 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +88 -22
- machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -1
- machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
- machineconfig/scripts/python/ai/solutions/gemini/settings.json +1 -1
- machineconfig/scripts/python/ai/solutions/generic.py +27 -4
- machineconfig/scripts/python/ai/vscode_tasks.py +37 -0
- machineconfig/scripts/python/cloud.py +29 -0
- machineconfig/scripts/python/croshell.py +129 -198
- machineconfig/scripts/python/define.py +31 -0
- machineconfig/scripts/python/devops.py +45 -131
- machineconfig/scripts/python/devops_navigator.py +6 -0
- machineconfig/scripts/python/env_manager/__init__.py +1 -0
- machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
- machineconfig/scripts/python/fire_jobs.py +166 -235
- machineconfig/scripts/python/ftpx.py +164 -100
- machineconfig/scripts/python/helpers/ast_search.py +74 -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 +14 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +37 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +42 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +110 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +34 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_load_balancer.py +22 -0
- machineconfig/scripts/python/helpers_agents/templates/prompt.txt +6 -0
- machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
- machineconfig/scripts/python/helpers_agents/templates/template.sh +24 -0
- machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +52 -39
- machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +13 -18
- machineconfig/scripts/python/helpers_cloud/cloud_sync.py +81 -0
- machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -1
- machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +32 -20
- machineconfig/scripts/python/helpers_devops/cli_config.py +95 -0
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
- machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
- machineconfig/scripts/python/helpers_devops/cli_nw.py +134 -0
- machineconfig/scripts/python/helpers_devops/cli_repos.py +182 -0
- machineconfig/scripts/python/helpers_devops/cli_self.py +134 -0
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +141 -0
- machineconfig/scripts/python/helpers_devops/cli_terminal.py +156 -0
- machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
- machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
- machineconfig/scripts/python/helpers_devops/devops_status.py +511 -0
- machineconfig/scripts/python/helpers_devops/devops_update_repos.py +269 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
- machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +2 -2
- machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -2
- machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -89
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +145 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +110 -0
- machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfag +1 -1
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +1 -1
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfrga +1 -1
- machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/helpers_navigator/command_builder.py +111 -0
- machineconfig/scripts/python/helpers_navigator/command_detail.py +44 -0
- machineconfig/scripts/python/helpers_navigator/command_tree.py +620 -0
- machineconfig/scripts/python/helpers_navigator/data_models.py +28 -0
- machineconfig/scripts/python/helpers_navigator/main_app.py +272 -0
- machineconfig/scripts/python/helpers_navigator/search_bar.py +15 -0
- machineconfig/scripts/python/helpers_repos/action.py +209 -0
- machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
- machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +6 -7
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
- machineconfig/scripts/python/helpers_repos/count_lines.py +348 -0
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +17 -0
- machineconfig/scripts/python/helpers_repos/entrypoint.py +77 -0
- machineconfig/scripts/python/helpers_repos/grource.py +340 -0
- machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +7 -4
- machineconfig/scripts/python/helpers_repos/sync.py +66 -0
- machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
- machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +58 -0
- machineconfig/scripts/python/helpers_utils/download.py +152 -0
- machineconfig/scripts/python/helpers_utils/path.py +108 -0
- machineconfig/scripts/python/interactive.py +187 -0
- machineconfig/scripts/python/mcfg_entry.py +63 -0
- machineconfig/scripts/python/msearch.py +40 -0
- machineconfig/scripts/python/{devops_add_identity.py → nw/devops_add_identity.py} +1 -3
- machineconfig/scripts/python/{devops_add_ssh_key.py → nw/devops_add_ssh_key.py} +74 -44
- machineconfig/scripts/{linux → python/nw}/mount_nfs +1 -1
- machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +19 -16
- machineconfig/scripts/{linux → python/nw}/mount_nw_drive +1 -2
- machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +7 -8
- machineconfig/scripts/python/{onetimeshare.py → nw/onetimeshare.py} +0 -1
- machineconfig/scripts/python/nw/ssh_debug_linux.py +391 -0
- machineconfig/scripts/python/nw/ssh_debug_windows.py +338 -0
- machineconfig/scripts/python/{wifi_conn.py → nw/wifi_conn.py} +1 -51
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +67 -0
- machineconfig/scripts/python/sessions.py +167 -0
- machineconfig/scripts/python/terminal.py +127 -0
- machineconfig/scripts/python/utils.py +66 -0
- machineconfig/scripts/windows/mounts/Restore-ThunderbirdProfile.ps1 +92 -0
- machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
- machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
- machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
- machineconfig/scripts/windows/wrap_mcfg.ps1 +60 -0
- machineconfig/settings/broot/br.sh +0 -4
- 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 +9 -3
- machineconfig/settings/lf/linux/lfrc +10 -12
- machineconfig/settings/lf/windows/fzf_edit.ps1 +2 -2
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +18 -38
- machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
- machineconfig/settings/linters/.ruff.toml +1 -1
- machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
- machineconfig/settings/marimo/marimo.toml +80 -0
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/pistol/pistol.conf +1 -1
- machineconfig/settings/shells/bash/init.sh +55 -31
- machineconfig/settings/shells/nushell/config.nu +1 -34
- machineconfig/settings/shells/nushell/init.nu +127 -0
- machineconfig/settings/shells/pwsh/init.ps1 +61 -43
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
- machineconfig/settings/shells/wt/settings.json +32 -17
- machineconfig/settings/shells/zsh/init.sh +89 -0
- machineconfig/settings/svim/linux/init.toml +0 -4
- machineconfig/settings/svim/windows/init.toml +0 -3
- machineconfig/settings/yazi/init.lua +57 -0
- machineconfig/settings/yazi/keymap_linux.toml +79 -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/yazi.toml +14 -1
- machineconfig/setup_linux/__init__.py +10 -0
- machineconfig/setup_linux/apps_desktop.sh +89 -0
- machineconfig/setup_linux/apps_gui.sh +64 -0
- machineconfig/setup_linux/{nix → others}/cli_installation.sh +9 -29
- machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
- machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
- machineconfig/setup_linux/uv.sh +15 -0
- machineconfig/setup_linux/web_shortcuts/interactive.sh +28 -203
- machineconfig/setup_mac/__init__.py +16 -0
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
- machineconfig/setup_mac/uv.sh +36 -0
- machineconfig/setup_windows/__init__.py +8 -0
- machineconfig/setup_windows/others/power_options.ps1 +7 -0
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
- machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
- machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
- machineconfig/setup_windows/uv.ps1 +17 -0
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -189
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
- machineconfig/utils/accessories.py +52 -12
- machineconfig/utils/cloud/onedrive/README.md +139 -0
- machineconfig/utils/code.py +140 -93
- machineconfig/utils/files/art/fat_croco.txt +10 -0
- machineconfig/utils/files/art/halfwit_croco.txt +9 -0
- machineconfig/utils/files/art/happy_croco.txt +22 -0
- machineconfig/utils/files/art/water_croco.txt +11 -0
- machineconfig/utils/files/ascii_art.py +118 -0
- machineconfig/utils/files/dbms.py +257 -0
- machineconfig/utils/files/headers.py +68 -0
- machineconfig/utils/files/ouch/decompress.py +45 -0
- machineconfig/utils/files/read.py +95 -0
- machineconfig/utils/installer_utils/github_release_bulk.py +188 -0
- machineconfig/utils/installer_utils/install_from_url.py +180 -0
- machineconfig/utils/installer_utils/installer_class.py +239 -316
- machineconfig/utils/installer_utils/installer_cli.py +186 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +90 -5
- machineconfig/utils/installer_utils/installer_runner.py +191 -0
- machineconfig/utils/io.py +77 -24
- machineconfig/utils/links.py +309 -100
- machineconfig/utils/meta.py +255 -0
- machineconfig/utils/notifications.py +1 -1
- machineconfig/utils/options.py +19 -47
- machineconfig/utils/path_extended.py +111 -121
- machineconfig/utils/path_helper.py +75 -22
- machineconfig/utils/procs.py +50 -74
- machineconfig/utils/scheduler.py +94 -97
- machineconfig/utils/scheduling.py +0 -3
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +5 -17
- machineconfig/utils/schemas/installer/installer_types.py +28 -6
- machineconfig/utils/schemas/layouts/layout_types.py +34 -1
- machineconfig/utils/source_of_truth.py +3 -6
- machineconfig/utils/ssh.py +742 -254
- machineconfig/utils/ssh_utils/utils.py +0 -0
- machineconfig/utils/terminal.py +3 -140
- machineconfig/utils/tst.py +20 -0
- machineconfig/utils/upgrade_packages.py +109 -28
- machineconfig/utils/ve.py +13 -5
- machineconfig-7.69.dist-info/METADATA +124 -0
- machineconfig-7.69.dist-info/RECORD +454 -0
- machineconfig-7.69.dist-info/entry_points.txt +15 -0
- machineconfig/cluster/templates/cli_click.py +0 -102
- machineconfig/cluster/templates/cli_gooey.py +0 -115
- machineconfig/cluster/templates/utils.py +0 -51
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -32
- machineconfig/jobs/python/create_bootable_media.py +0 -16
- machineconfig/jobs/python/python_cargo_build_share.py +0 -59
- machineconfig/jobs/python/python_ve_symlink.py +0 -29
- machineconfig/jobs/python/tasks.py +0 -3
- machineconfig/jobs/python/vscode/api.py +0 -48
- machineconfig/jobs/python/vscode/link_ve.py +0 -63
- machineconfig/jobs/python/vscode/select_interpreter.py +0 -87
- machineconfig/jobs/python/vscode/sync_code.py +0 -58
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +0 -63
- machineconfig/jobs/python_custom_installers/dev/aider.py +0 -37
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +0 -65
- machineconfig/jobs/python_custom_installers/dev/brave.py +0 -71
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +0 -50
- machineconfig/jobs/python_custom_installers/dev/code.py +0 -51
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -78
- machineconfig/jobs/python_custom_installers/dev/espanso.py +0 -90
- machineconfig/jobs/python_custom_installers/dev/goes.py +0 -55
- machineconfig/jobs/python_custom_installers/dev/lvim.py +0 -77
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +0 -68
- machineconfig/jobs/python_custom_installers/dev/redis.py +0 -65
- machineconfig/jobs/python_custom_installers/dev/reverse_proxy.md +0 -31
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +0 -70
- machineconfig/jobs/python_custom_installers/docker.py +0 -74
- machineconfig/jobs/python_custom_installers/gh.py +0 -97
- machineconfig/jobs/python_custom_installers/scripts/linux/docker_start.sh +0 -45
- machineconfig/jobs/python_custom_installers/scripts/linux/pgsql.sh +0 -49
- machineconfig/jobs/python_custom_installers/scripts/linux/timescaledb.sh +0 -85
- machineconfig/jobs/python_custom_installers/warp-cli.py +0 -71
- machineconfig/jobs/python_generic_installers/config.json +0 -603
- machineconfig/jobs/python_generic_installers/config.json.bak +0 -414
- machineconfig/jobs/python_generic_installers/dev/config.archive.json +0 -18
- machineconfig/jobs/python_generic_installers/dev/config.json +0 -825
- machineconfig/jobs/python_generic_installers/dev/config.json.bak +0 -565
- machineconfig/jobs/python_linux_installers/archive/config.json +0 -18
- machineconfig/jobs/python_linux_installers/archive/config.json.bak +0 -10
- machineconfig/jobs/python_linux_installers/config.json +0 -145
- machineconfig/jobs/python_linux_installers/config.json.bak +0 -110
- machineconfig/jobs/python_linux_installers/dev/config.json +0 -276
- machineconfig/jobs/python_linux_installers/dev/config.json.bak +0 -206
- machineconfig/jobs/python_windows_installers/archive/file.json +0 -11
- machineconfig/jobs/python_windows_installers/config.json +0 -82
- machineconfig/jobs/python_windows_installers/config.json.bak +0 -56
- machineconfig/jobs/python_windows_installers/dev/config.json +0 -4
- machineconfig/jobs/python_windows_installers/dev/config.json.bak +0 -3
- machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
- machineconfig/jobs/windows/start_terminal.ps1 +0 -6
- machineconfig/jobs/windows/startup_file.cmd +0 -2
- machineconfig/profile/create.py +0 -169
- machineconfig/profile/shell.py +0 -176
- machineconfig/scripts/cloud/init.sh +0 -119
- machineconfig/scripts/linux/choose_wezterm_theme +0 -3
- machineconfig/scripts/linux/cloud_copy +0 -2
- machineconfig/scripts/linux/cloud_mount +0 -2
- machineconfig/scripts/linux/cloud_repo_sync +0 -2
- machineconfig/scripts/linux/cloud_sync +0 -2
- machineconfig/scripts/linux/croshell +0 -3
- machineconfig/scripts/linux/devops +0 -2
- machineconfig/scripts/linux/fire +0 -2
- machineconfig/scripts/linux/fire_agents +0 -2
- machineconfig/scripts/linux/ftpx +0 -2
- machineconfig/scripts/linux/fzf2g +0 -21
- machineconfig/scripts/linux/fzffg +0 -25
- machineconfig/scripts/linux/gh_models +0 -2
- machineconfig/scripts/linux/kill_process +0 -2
- machineconfig/scripts/linux/mcinit +0 -2
- machineconfig/scripts/linux/programs +0 -21
- machineconfig/scripts/linux/repos +0 -2
- machineconfig/scripts/linux/scheduler +0 -2
- machineconfig/scripts/linux/share_smb +0 -1
- machineconfig/scripts/linux/start_slidev +0 -2
- machineconfig/scripts/linux/start_terminals +0 -3
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/wifi_conn +0 -2
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
- machineconfig/scripts/python/archive/im2text.py +0 -34
- machineconfig/scripts/python/archive/tmate_conn.py +0 -41
- machineconfig/scripts/python/archive/tmate_start.py +0 -44
- machineconfig/scripts/python/cloud_repo_sync.py +0 -192
- machineconfig/scripts/python/cloud_sync.py +0 -85
- machineconfig/scripts/python/devops_devapps_install.py +0 -202
- machineconfig/scripts/python/devops_update_repos.py +0 -180
- machineconfig/scripts/python/dotfile.py +0 -52
- machineconfig/scripts/python/fire_agents.py +0 -176
- machineconfig/scripts/python/fire_agents_help_launch.py +0 -143
- machineconfig/scripts/python/fire_agents_load_balancer.py +0 -50
- machineconfig/scripts/python/fire_jobs_args_helper.py +0 -84
- machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -66
- machineconfig/scripts/python/get_zellij_cmd.py +0 -15
- machineconfig/scripts/python/gh_models.py +0 -104
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -114
- machineconfig/scripts/python/repos.py +0 -160
- machineconfig/scripts/python/snapshot.py +0 -25
- machineconfig/scripts/python/start_terminals.py +0 -121
- machineconfig/scripts/python/wsl_windows_transfer.py +0 -72
- machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
- machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
- machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
- machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
- machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
- machineconfig/scripts/windows/croshell.ps1 +0 -1
- machineconfig/scripts/windows/devops.ps1 +0 -1
- machineconfig/scripts/windows/dotfile.ps1 +0 -1
- machineconfig/scripts/windows/fire.ps1 +0 -1
- machineconfig/scripts/windows/ftpx.ps1 +0 -1
- machineconfig/scripts/windows/gpt.ps1 +0 -1
- machineconfig/scripts/windows/grep.ps1 +0 -2
- machineconfig/scripts/windows/kill_process.ps1 +0 -1
- machineconfig/scripts/windows/mcinit.ps1 +0 -1
- machineconfig/scripts/windows/nano.ps1 +0 -3
- machineconfig/scripts/windows/pomodoro.ps1 +0 -1
- machineconfig/scripts/windows/reload_path.ps1 +0 -3
- machineconfig/scripts/windows/repos.ps1 +0 -1
- machineconfig/scripts/windows/scheduler.ps1 +0 -1
- machineconfig/scripts/windows/snapshot.ps1 +0 -1
- machineconfig/scripts/windows/start_slidev.ps1 +0 -1
- machineconfig/scripts/windows/start_terminals.ps1 +0 -1
- machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
- machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
- machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
- machineconfig/setup_linux/web_shortcuts/ascii_art.sh +0 -93
- machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
- machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
- machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
- machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
- machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
- machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
- machineconfig/setup_windows/wt_and_pwsh/install_nerd_fonts.py +0 -100
- machineconfig/utils/ai/generate_file_checklist.py +0 -68
- machineconfig/utils/installer.py +0 -255
- machineconfig-3.7.dist-info/METADATA +0 -165
- machineconfig-3.7.dist-info/RECORD +0 -432
- machineconfig-3.7.dist-info/entry_points.txt +0 -18
- machineconfig/cluster/{templates → remote}/run_cloud.py +0 -0
- machineconfig/cluster/{templates → remote}/run_cluster.py +0 -0
- machineconfig/cluster/{templates → remote}/run_remote.py +0 -0
- machineconfig/jobs/{python → installer}/__init__.py +0 -0
- machineconfig/jobs/{python_custom_installers → installer/custom_dev}/__init__.py +0 -0
- machineconfig/{setup_windows/wt_and_pwsh → jobs/installer/powershell_scripts}/install_fonts.ps1 +0 -0
- machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
- machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
- machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
- machineconfig/{jobs/python_generic_installers → scripts/python/helpers_agents}/__init__.py +0 -0
- machineconfig/{jobs/python_linux_installers → scripts/python/helpers_agents/agentic_frameworks}/__init__.py +0 -0
- machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
- machineconfig/{jobs/python_linux_installers/dev → scripts/python/helpers_cloud}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
- /machineconfig/{jobs/python_windows_installers → scripts/python/helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
- /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
- /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
- /machineconfig/{jobs/python_windows_installers/archive → scripts/python/helpers_devops}/__init__.py +0 -0
- /machineconfig/{jobs/python_windows_installers/dev → scripts/python/helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/scripts/python/{helpers → helpers_fire_command}/__init__.py +0 -0
- /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
- /machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/skrg +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfb.ps1 +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfg.ps1 +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfrga.bat +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_sessions/__init__.py} +0 -0
- /machineconfig/scripts/{windows/share_nfs.ps1 → python/nw/__init__.py} +0 -0
- /machineconfig/scripts/{linux → python/nw}/mount_drive +0 -0
- /machineconfig/scripts/python/{mount_nw_drive.py → nw/mount_nw_drive.py} +0 -0
- /machineconfig/scripts/{linux → python/nw}/mount_smb +0 -0
- /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
- /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
- /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
- /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
- /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
- /machineconfig/{settings/yazi/keymap.toml → utils/files/ouch/__init__.py} +0 -0
- {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/WHEEL +0 -0
- {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/top_level.txt +0 -0
|
@@ -1,22 +1,39 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""Script to generate a markdown table with checkboxes for all Python files in the repo."""
|
|
2
|
+
"""Script to generate a markdown table with checkboxes for all Python and shell files in the repo."""
|
|
3
3
|
|
|
4
4
|
from pathlib import Path
|
|
5
|
+
from typing import Annotated, Literal, Optional
|
|
6
|
+
from rich.console import Console
|
|
7
|
+
from rich.panel import Panel
|
|
8
|
+
import typer
|
|
9
|
+
import subprocess
|
|
10
|
+
import shutil
|
|
5
11
|
|
|
6
12
|
|
|
7
|
-
def get_python_files(repo_root: Path) -> list[str]:
|
|
13
|
+
def get_python_files(repo_root: Path, exclude_init: bool = False) -> list[str]:
|
|
8
14
|
"""Get all Python files relative to repo root."""
|
|
15
|
+
excluded_parts = {".venv", "__pycache__", ".git", "build", "dist", ".ai"}
|
|
16
|
+
excluded_patterns = {"*.egg-info"}
|
|
17
|
+
|
|
9
18
|
# Get all .py files recursively
|
|
10
19
|
py_files = list(repo_root.glob("**/*.py"))
|
|
11
20
|
|
|
12
|
-
# Filter out files in
|
|
21
|
+
# Filter out files in excluded directories
|
|
13
22
|
filtered_files = []
|
|
14
23
|
for file_path in py_files:
|
|
15
24
|
relative_path = file_path.relative_to(repo_root)
|
|
16
25
|
path_parts = relative_path.parts
|
|
17
26
|
|
|
18
|
-
# Skip files in
|
|
19
|
-
if any(part in
|
|
27
|
+
# Skip files in excluded directories
|
|
28
|
+
if any(part in excluded_parts for part in path_parts):
|
|
29
|
+
continue
|
|
30
|
+
|
|
31
|
+
# Skip files matching excluded patterns
|
|
32
|
+
if any(file_path.match(f"**/{pattern}/**") for pattern in excluded_patterns):
|
|
33
|
+
continue
|
|
34
|
+
|
|
35
|
+
# Skip __init__.py files if requested
|
|
36
|
+
if exclude_init and file_path.name == "__init__.py":
|
|
20
37
|
continue
|
|
21
38
|
|
|
22
39
|
filtered_files.append(str(relative_path))
|
|
@@ -24,60 +41,308 @@ def get_python_files(repo_root: Path) -> list[str]:
|
|
|
24
41
|
return sorted(filtered_files)
|
|
25
42
|
|
|
26
43
|
|
|
27
|
-
def
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
|
|
44
|
+
def get_shell_files(repo_root: Path) -> list[str]:
|
|
45
|
+
"""Get all shell script files relative to repo root."""
|
|
46
|
+
excluded_parts = {".venv", "__pycache__", ".git", "build", "dist"}
|
|
47
|
+
excluded_patterns = {"*.egg-info"}
|
|
48
|
+
|
|
49
|
+
# Get all .sh files recursively
|
|
50
|
+
sh_files = list(repo_root.glob("**/*.sh"))
|
|
51
|
+
|
|
52
|
+
# Filter out files in excluded directories
|
|
53
|
+
filtered_files = []
|
|
54
|
+
for file_path in sh_files:
|
|
55
|
+
relative_path = file_path.relative_to(repo_root)
|
|
56
|
+
path_parts = relative_path.parts
|
|
57
|
+
|
|
58
|
+
# Skip files in excluded directories
|
|
59
|
+
if any(part in excluded_parts for part in path_parts):
|
|
60
|
+
continue
|
|
61
|
+
|
|
62
|
+
# Skip files matching excluded patterns
|
|
63
|
+
if any(file_path.match(f"**/{pattern}/**") for pattern in excluded_patterns):
|
|
64
|
+
continue
|
|
65
|
+
|
|
66
|
+
filtered_files.append(str(relative_path))
|
|
67
|
+
|
|
68
|
+
return sorted(filtered_files)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def count_lines(file_path: Path) -> int:
|
|
72
|
+
"""Count the number of lines in a file."""
|
|
73
|
+
try:
|
|
74
|
+
with open(file_path, 'r', encoding='utf-8') as f:
|
|
75
|
+
return sum(1 for _ in f)
|
|
76
|
+
except (IOError, UnicodeDecodeError):
|
|
77
|
+
return 0
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def is_git_repository(path: Path) -> bool:
|
|
81
|
+
"""Check if the given path is part of a git repository."""
|
|
82
|
+
try:
|
|
83
|
+
result = subprocess.run(
|
|
84
|
+
["git", "rev-parse", "--git-dir"],
|
|
85
|
+
cwd=path,
|
|
86
|
+
capture_output=True,
|
|
87
|
+
text=True,
|
|
88
|
+
check=False
|
|
89
|
+
)
|
|
90
|
+
return result.returncode == 0
|
|
91
|
+
except (subprocess.SubprocessError, FileNotFoundError):
|
|
92
|
+
return False
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def filter_files_by_name(files: list[str], pattern: str) -> list[str]:
|
|
96
|
+
"""Filter files by filename containing the pattern."""
|
|
97
|
+
return [f for f in files if pattern in f]
|
|
98
|
+
|
|
31
99
|
|
|
32
|
-
|
|
33
|
-
|
|
100
|
+
def filter_files_by_content(repo_root: Path, files: list[str], keyword: str) -> list[str]:
|
|
101
|
+
"""Filter files by content containing the keyword."""
|
|
102
|
+
filtered_files = []
|
|
103
|
+
for file_path in files:
|
|
104
|
+
full_path = repo_root / file_path
|
|
105
|
+
try:
|
|
106
|
+
with open(full_path, 'r', encoding='utf-8') as f:
|
|
107
|
+
content = f.read()
|
|
108
|
+
if keyword in content:
|
|
109
|
+
filtered_files.append(file_path)
|
|
110
|
+
except (IOError, UnicodeDecodeError):
|
|
111
|
+
# Skip files that can't be read
|
|
112
|
+
continue
|
|
113
|
+
return filtered_files
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def generate_csv_content(python_files: list[str], shell_files: list[str], repo_root: Path, include_line_count: bool = False) -> str:
|
|
117
|
+
"""Generate CSV content with file information."""
|
|
118
|
+
import csv
|
|
119
|
+
import io
|
|
120
|
+
|
|
121
|
+
output = io.StringIO()
|
|
122
|
+
writer = csv.writer(output)
|
|
123
|
+
|
|
124
|
+
# Write header
|
|
125
|
+
if include_line_count:
|
|
126
|
+
writer.writerow(["Type", "Index", "File Path", "Line Count", "Status"])
|
|
127
|
+
else:
|
|
128
|
+
writer.writerow(["Type", "Index", "File Path", "Status"])
|
|
129
|
+
|
|
130
|
+
# Write Python files
|
|
131
|
+
for index, file_path in enumerate(python_files, start=1):
|
|
34
132
|
clean_path = file_path.lstrip("./")
|
|
35
|
-
|
|
133
|
+
if include_line_count:
|
|
134
|
+
line_count = count_lines(repo_root / file_path)
|
|
135
|
+
writer.writerow(["Python", index, clean_path, line_count, "[ ]"])
|
|
136
|
+
else:
|
|
137
|
+
writer.writerow(["Python", index, clean_path, "[ ]"])
|
|
138
|
+
|
|
139
|
+
# Write shell files
|
|
140
|
+
for index, file_path in enumerate(shell_files, start=1):
|
|
141
|
+
clean_path = file_path.lstrip("./")
|
|
142
|
+
if include_line_count:
|
|
143
|
+
line_count = count_lines(repo_root / file_path)
|
|
144
|
+
writer.writerow(["Shell", index, clean_path, line_count, "[ ]"])
|
|
145
|
+
else:
|
|
146
|
+
writer.writerow(["Shell", index, clean_path, "[ ]"])
|
|
147
|
+
|
|
148
|
+
return output.getvalue()
|
|
36
149
|
|
|
37
|
-
return header + table
|
|
38
150
|
|
|
151
|
+
def generate_txt_content(python_files: list[str], shell_files: list[str]) -> str:
|
|
152
|
+
"""Generate plain text content with file paths."""
|
|
153
|
+
all_files = python_files + shell_files
|
|
154
|
+
return "\n".join(file.lstrip("./") for file in all_files)
|
|
39
155
|
|
|
40
|
-
def main() -> None:
|
|
41
|
-
"""Main function."""
|
|
42
|
-
repo_root = Path.cwd()
|
|
43
|
-
if not repo_root.joinpath("pyproject.toml").exists():
|
|
44
|
-
raise RuntimeError(f" {repo_root} Not a repo root")
|
|
45
|
-
output_file = repo_root / ".ai" / "all_files_with_index.md"
|
|
46
156
|
|
|
47
|
-
|
|
48
|
-
|
|
157
|
+
def generate_markdown_table(python_files: list[str], shell_files: list[str], repo_root: Path, include_line_count: bool = False) -> str:
|
|
158
|
+
"""Generate markdown table with checkboxes."""
|
|
159
|
+
header = "# File Checklist\n\n"
|
|
49
160
|
|
|
50
|
-
|
|
51
|
-
output_file.parent.mkdir(parents=True, exist_ok=True)
|
|
161
|
+
content = ""
|
|
52
162
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
163
|
+
if python_files:
|
|
164
|
+
content += "## Python Files\n\n"
|
|
165
|
+
if include_line_count:
|
|
166
|
+
# Calculate line counts and sort by descending line count
|
|
167
|
+
python_with_counts = [(file, count_lines(repo_root / file)) for file in python_files]
|
|
168
|
+
python_with_counts.sort(key=lambda x: x[1], reverse=True)
|
|
169
|
+
python_files = [file for file, _ in python_with_counts]
|
|
170
|
+
|
|
171
|
+
content += "| Index | File Path | Line Count | Status |\n|-------|-----------|------------|--------|\n"
|
|
172
|
+
else:
|
|
173
|
+
content += "| Index | File Path | Status |\n|-------|-----------|--------|\n"
|
|
174
|
+
for index, file_path in enumerate(python_files, start=1):
|
|
175
|
+
clean_path = file_path.lstrip("./")
|
|
176
|
+
if include_line_count:
|
|
177
|
+
line_count = count_lines(repo_root / file_path)
|
|
178
|
+
content += f"| {index} | {clean_path} | {line_count} | - [ ] |\n"
|
|
179
|
+
else:
|
|
180
|
+
content += f"| {index} | {clean_path} | - [ ] |\n"
|
|
181
|
+
|
|
182
|
+
if shell_files:
|
|
183
|
+
content += "\n## Shell Script Files\n\n"
|
|
184
|
+
if include_line_count:
|
|
185
|
+
# Calculate line counts and sort by descending line count
|
|
186
|
+
shell_with_counts = [(file, count_lines(repo_root / file)) for file in shell_files]
|
|
187
|
+
shell_with_counts.sort(key=lambda x: x[1], reverse=True)
|
|
188
|
+
shell_files = [file for file, _ in shell_with_counts]
|
|
189
|
+
|
|
190
|
+
content += "| Index | File Path | Line Count | Status |\n|-------|-----------|------------|--------|\n"
|
|
191
|
+
else:
|
|
192
|
+
content += "| Index | File Path | Status |\n|-------|-----------|--------|\n"
|
|
193
|
+
for index, file_path in enumerate(shell_files, start=1):
|
|
194
|
+
clean_path = file_path.lstrip("./")
|
|
195
|
+
if include_line_count:
|
|
196
|
+
line_count = count_lines(repo_root / file_path)
|
|
197
|
+
content += f"| {index} | {clean_path} | {line_count} | - [ ] |\n"
|
|
198
|
+
else:
|
|
199
|
+
content += f"| {index} | {clean_path} | - [ ] |\n"
|
|
200
|
+
|
|
201
|
+
return header + content
|
|
56
202
|
|
|
57
|
-
# Generate markdown
|
|
58
|
-
markdown_content = generate_markdown_table(python_files)
|
|
59
|
-
print(f"Generated markdown content length: {len(markdown_content)}")
|
|
60
203
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
204
|
+
def split_files_into_chunks(all_files: list[str], split_every: Optional[int] = None, split_to: Optional[int] = None) -> list[list[str]]:
|
|
205
|
+
"""Split files into chunks based on split_every or split_to."""
|
|
206
|
+
if split_every is not None:
|
|
207
|
+
# Split into chunks of split_every files each
|
|
208
|
+
return [all_files[i:i + split_every] for i in range(0, len(all_files), split_every)]
|
|
209
|
+
elif split_to is not None:
|
|
210
|
+
# Split into exactly split_to chunks
|
|
211
|
+
if split_to <= 0:
|
|
212
|
+
return [all_files]
|
|
213
|
+
chunk_size = max(1, len(all_files) // split_to)
|
|
214
|
+
chunks = []
|
|
215
|
+
for i in range(split_to):
|
|
216
|
+
start = i * chunk_size
|
|
217
|
+
end = start + chunk_size if i < split_to - 1 else len(all_files)
|
|
218
|
+
chunks.append(all_files[start:end])
|
|
219
|
+
return chunks
|
|
220
|
+
else:
|
|
221
|
+
# No splitting
|
|
222
|
+
return [all_files]
|
|
64
223
|
|
|
65
|
-
# Create 5 symlinks to repo_root at ~/code_copies/${repo_name}_copy_{i}
|
|
66
|
-
import pathlib
|
|
67
224
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
225
|
+
def generate_content(python_files: list[str], shell_files: list[str], repo_root: Path,
|
|
226
|
+
format_type: str, include_line_count: bool) -> str:
|
|
227
|
+
"""Generate content based on format type."""
|
|
228
|
+
if format_type == "csv":
|
|
229
|
+
return generate_csv_content(python_files, shell_files, repo_root, include_line_count)
|
|
230
|
+
elif format_type == "md":
|
|
231
|
+
return generate_markdown_table(python_files, shell_files, repo_root, include_line_count)
|
|
232
|
+
elif format_type == "txt":
|
|
233
|
+
return generate_txt_content(python_files, shell_files)
|
|
234
|
+
else:
|
|
235
|
+
raise ValueError(f"Unsupported format: {format_type}")
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def create_repo_symlinks(repo_root: Path) -> None:
|
|
239
|
+
"""Create 5 symlinks to repo_root at ~/code_copies/${repo_name}_copy_{i}."""
|
|
240
|
+
repo_name: str = repo_root.name
|
|
241
|
+
symlink_dir: Path = Path.home() / "code_copies"
|
|
72
242
|
symlink_dir.mkdir(exist_ok=True)
|
|
73
243
|
for i in range(1, 6):
|
|
74
|
-
symlink_path:
|
|
244
|
+
symlink_path: Path = symlink_dir / f"{repo_name}_copy_{i}"
|
|
75
245
|
if symlink_path.exists() or symlink_path.is_symlink():
|
|
76
246
|
symlink_path.unlink()
|
|
77
247
|
symlink_path.symlink_to(repo_root, target_is_directory=True)
|
|
78
|
-
# Windows equivalent (comment):
|
|
79
|
-
# for /l %i in (1,1,5) do mklink /D "%USERPROFILE%\code_copies\{repo_name}_copy_%i" "C:\path\to\repo_root"
|
|
80
248
|
|
|
81
249
|
|
|
250
|
+
def main(
|
|
251
|
+
pattern: Annotated[str, typer.Argument(help="Pattern or keyword to match files by")],
|
|
252
|
+
repo: Annotated[str, typer.Argument(help="Repository path. Can be any directory within a git repository.")] = str(Path.cwd()),
|
|
253
|
+
strategy: Annotated[Literal["name", "keywords"], typer.Option("-s", "--strategy", help="Strategy to filter files: 'name' for filename matching, 'keywords' for content matching")] = "name",
|
|
254
|
+
exclude_init: Annotated[bool, typer.Option("-x", "--exclude-init", help="Exclude __init__.py files from the checklist")] = True,
|
|
255
|
+
include_line_count: Annotated[bool, typer.Option("-l", "--line-count", help="Include line count column in the output")] = False,
|
|
256
|
+
output_path: Annotated[str, typer.Option("-o", "--output-path", help="Base path for output files relative to repo root")] = ".ai/todo/files",
|
|
257
|
+
format_type: Annotated[Literal["csv", "md", "txt"], typer.Option("-f", "--format", help="Output format: csv, md (markdown), or txt")] = "md",
|
|
258
|
+
split_every: Annotated[Optional[int], typer.Option("--split-every", "-e", help="Split output into multiple files, each containing at most this many results")] = None,
|
|
259
|
+
split_to: Annotated[Optional[int], typer.Option("--split-to", "-t", help="Split output into exactly this many files")] = None,
|
|
260
|
+
) -> None:
|
|
261
|
+
"""Generate checklist with Python and shell script files in the repository filtered by pattern."""
|
|
262
|
+
repo_path = Path(repo).expanduser().absolute()
|
|
263
|
+
if not is_git_repository(repo_path):
|
|
264
|
+
console = Console()
|
|
265
|
+
console.print(Panel(f"❌ ERROR | Not a git repository or not in a git repository: {repo_path}", border_style="bold red", expand=False))
|
|
266
|
+
raise typer.Exit(code=1)
|
|
267
|
+
|
|
268
|
+
# Delete .ai/todo directory at the start
|
|
269
|
+
todo_dir = repo_path / ".ai" / "todo"
|
|
270
|
+
if todo_dir.exists():
|
|
271
|
+
shutil.rmtree(todo_dir)
|
|
272
|
+
|
|
273
|
+
output_base = repo_path / output_path
|
|
274
|
+
|
|
275
|
+
# Ensure output directory exists
|
|
276
|
+
output_base.parent.mkdir(parents=True, exist_ok=True)
|
|
277
|
+
|
|
278
|
+
# Get Python and shell files
|
|
279
|
+
python_files = get_python_files(repo_path, exclude_init=exclude_init)
|
|
280
|
+
shell_files = get_shell_files(repo_path)
|
|
281
|
+
|
|
282
|
+
# Apply filtering based on strategy
|
|
283
|
+
if strategy == "name":
|
|
284
|
+
python_files = filter_files_by_name(python_files, pattern)
|
|
285
|
+
shell_files = filter_files_by_name(shell_files, pattern)
|
|
286
|
+
elif strategy == "keywords":
|
|
287
|
+
python_files = filter_files_by_content(repo_path, python_files, pattern)
|
|
288
|
+
shell_files = filter_files_by_content(repo_path, shell_files, pattern)
|
|
289
|
+
|
|
290
|
+
print(f"Repo path: {repo_path}")
|
|
291
|
+
print(f"Strategy: {strategy}")
|
|
292
|
+
print(f"Pattern: {pattern}")
|
|
293
|
+
print(f"Format: {format_type}")
|
|
294
|
+
print(f"Found {len(python_files)} Python files")
|
|
295
|
+
print(f"Found {len(shell_files)} Shell script files")
|
|
296
|
+
|
|
297
|
+
# Combine all files for splitting
|
|
298
|
+
all_files = python_files + shell_files
|
|
299
|
+
|
|
300
|
+
# Split files into chunks
|
|
301
|
+
file_chunks = split_files_into_chunks(all_files, split_every, split_to)
|
|
302
|
+
|
|
303
|
+
# Determine file extension based on format
|
|
304
|
+
extension = {"csv": ".csv", "md": ".md", "txt": ".txt"}[format_type]
|
|
305
|
+
|
|
306
|
+
output_files = []
|
|
307
|
+
for i, chunk in enumerate(file_chunks):
|
|
308
|
+
# Split chunk back into python and shell files
|
|
309
|
+
chunk_python = [f for f in chunk if f in python_files]
|
|
310
|
+
chunk_shell = [f for f in chunk if f in shell_files]
|
|
311
|
+
|
|
312
|
+
# Generate content for this chunk
|
|
313
|
+
content = generate_content(chunk_python, chunk_shell, repo_path, format_type, include_line_count)
|
|
314
|
+
|
|
315
|
+
# Determine output file path
|
|
316
|
+
if len(file_chunks) == 1:
|
|
317
|
+
output_file = output_base.with_suffix(extension)
|
|
318
|
+
else:
|
|
319
|
+
output_file = output_base.parent / f"{output_base.name}_{i+1}{extension}"
|
|
320
|
+
|
|
321
|
+
# Write to file
|
|
322
|
+
output_file.write_text(content)
|
|
323
|
+
output_files.append(output_file)
|
|
324
|
+
|
|
325
|
+
console = Console()
|
|
326
|
+
success_msg = f"""✅ SUCCESS | Files generated successfully!
|
|
327
|
+
📄 Output files: {', '.join(str(f.relative_to(repo_path)) for f in output_files)}
|
|
328
|
+
🐍 Python files: {len(python_files)}
|
|
329
|
+
🔧 Shell files: {len(shell_files)}
|
|
330
|
+
📊 Total chunks: {len(file_chunks)}"""
|
|
331
|
+
|
|
332
|
+
console.print(Panel(success_msg, border_style="bold blue", expand=False))
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
def create_symlink_command(num: Annotated[int, typer.Argument(help="Number of symlinks to create (1-5).")] = 5) -> None:
|
|
336
|
+
"""Create 5 symlinks to repo_root at ~/code_copies/${repo_name}_copy_{i}."""
|
|
337
|
+
if num < 1 or num > 5:
|
|
338
|
+
console = Console()
|
|
339
|
+
console.print(Panel("❌ ERROR | Number of symlinks must be between 1 and 5.", border_style="bold red", expand=False))
|
|
340
|
+
raise typer.Exit(code=1)
|
|
341
|
+
repo_root = Path.cwd().absolute()
|
|
342
|
+
create_repo_symlinks(repo_root)
|
|
343
|
+
console = Console()
|
|
344
|
+
console.print(Panel(f"✅ SUCCESS | Created {num} symlinks to {repo_root} in ~/code_copies/", border_style="bold green", expand=False))
|
|
345
|
+
|
|
82
346
|
if __name__ == "__main__":
|
|
83
|
-
main
|
|
347
|
+
typer.run(main)
|
|
348
|
+
# typer.run(create_symlink_command)
|
|
@@ -7,6 +7,7 @@ from machineconfig.scripts.python.ai.solutions.copilot import github_copilot
|
|
|
7
7
|
from machineconfig.scripts.python.ai.solutions.crush import crush
|
|
8
8
|
from machineconfig.scripts.python.ai.solutions.cursor import cursors
|
|
9
9
|
from machineconfig.scripts.python.ai.solutions.gemini import gemini
|
|
10
|
+
from machineconfig.scripts.python.ai.vscode_tasks import add_lint_and_type_check_task
|
|
10
11
|
from machineconfig.utils.accessories import get_repo_root
|
|
11
12
|
|
|
12
13
|
|
|
@@ -14,24 +15,6 @@ def add_ai_configs(repo_root: Path) -> None:
|
|
|
14
15
|
repo_root_resolved = get_repo_root(repo_root)
|
|
15
16
|
if repo_root_resolved is not None:
|
|
16
17
|
repo_root = repo_root_resolved # this means you can run the command from any subdirectory of the repo.
|
|
17
|
-
|
|
18
|
-
if repo_root.joinpath("pyproject.toml").exists() is False:
|
|
19
|
-
uv_init = input(f"{repo_root} does not seem to be a python project (no pyproject.toml found), would you like to initialize one? (y/n) ")
|
|
20
|
-
if uv_init.strip().lower() == "y":
|
|
21
|
-
command_to_run = """
|
|
22
|
-
uv init --python 3.13
|
|
23
|
-
uv venv
|
|
24
|
-
uv add --upgrade-package pylint pyright mypy pyrefly ty --dev # linters and type checkers
|
|
25
|
-
uv add --upgrade-package pytest --dev
|
|
26
|
-
|
|
27
|
-
"""
|
|
28
|
-
import subprocess
|
|
29
|
-
|
|
30
|
-
subprocess.run(command_to_run, shell=True, check=True)
|
|
31
|
-
else:
|
|
32
|
-
print("Terminating mcinit ...")
|
|
33
|
-
return
|
|
34
|
-
|
|
35
18
|
dot_ai_dir = repo_root.joinpath(".ai")
|
|
36
19
|
dot_ai_dir.mkdir(parents=True, exist_ok=True)
|
|
37
20
|
dot_scripts_dir = repo_root.joinpath(".scripts")
|
|
@@ -39,6 +22,8 @@ uv add --upgrade-package pytest --dev
|
|
|
39
22
|
generic.create_dot_scripts(repo_root=repo_root)
|
|
40
23
|
generic.adjust_gitignore(repo_root=repo_root)
|
|
41
24
|
|
|
25
|
+
add_lint_and_type_check_task(repo_root=repo_root)
|
|
26
|
+
|
|
42
27
|
github_copilot.build_configuration(repo_root=repo_root)
|
|
43
28
|
cursors.build_configuration(repo_root=repo_root)
|
|
44
29
|
gemini.build_configuration(repo_root=repo_root)
|
|
@@ -46,23 +31,3 @@ uv add --upgrade-package pytest --dev
|
|
|
46
31
|
crush.build_configuration(repo_root=repo_root)
|
|
47
32
|
cline.build_configuration(repo_root=repo_root)
|
|
48
33
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
def main() -> None:
|
|
52
|
-
# import argparse
|
|
53
|
-
|
|
54
|
-
# parser = argparse.ArgumentParser(description="Add AI configurations to a Python project.")
|
|
55
|
-
# parser.add_argument(
|
|
56
|
-
# "--repo-root",
|
|
57
|
-
# type=str,
|
|
58
|
-
# default=".",
|
|
59
|
-
# help="Path to the root of the repository. Defaults to the current working directory.",
|
|
60
|
-
# )
|
|
61
|
-
# args = parser.parse_args()
|
|
62
|
-
# repo_root = Path(args.repo_root).resolve()
|
|
63
|
-
repo_root = Path.cwd()
|
|
64
|
-
add_ai_configs(repo_root=repo_root)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if __name__ == "__main__":
|
|
68
|
-
add_ai_configs(repo_root=Path.cwd())
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# gotch1: make sure we are in the right directory: repo root. Solution: check if .pyproject.toml exists, otherwise stop.
|
|
2
|
+
if (!(Test-Path "./pyproject.toml")) {
|
|
3
|
+
Write-Host "Error: pyproject.toml not found in the current directory. Please run this script from the root of a Python project." -ForegroundColor Red
|
|
4
|
+
exit 1
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
# Color definitions (using ANSI escape sequences for cross-platform compatibility)
|
|
8
|
+
$RED = "`e[0;31m"
|
|
9
|
+
$GREEN = "`e[0;32m"
|
|
10
|
+
$YELLOW = "`e[1;33m"
|
|
11
|
+
$BLUE = "`e[0;34m"
|
|
12
|
+
$PURPLE = "`e[0;35m"
|
|
13
|
+
$CYAN = "`e[0;36m"
|
|
14
|
+
$WHITE = "`e[1;37m"
|
|
15
|
+
$BOLD = "`e[1m"
|
|
16
|
+
$UNDERLINE = "`e[4m"
|
|
17
|
+
$NC = "`e[0m" # No Color
|
|
18
|
+
|
|
19
|
+
# Box drawing functions
|
|
20
|
+
function Draw-Box {
|
|
21
|
+
param([string]$text, [string]$color)
|
|
22
|
+
$width = 60
|
|
23
|
+
$padding = [math]::Floor(($width - $text.Length) / 2)
|
|
24
|
+
$line = "─" * $width
|
|
25
|
+
|
|
26
|
+
Write-Host "${color}┌${line}┐${NC}"
|
|
27
|
+
Write-Host ("${color}│" + (" " * $padding) + $text + (" " * $padding) + "│${NC}")
|
|
28
|
+
Write-Host "${color}└${line}┘${NC}"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function Draw-Progress {
|
|
32
|
+
param([int]$current, [int]$total, [string]$description)
|
|
33
|
+
Write-Host "${CYAN}┌────────────────────────────────────────────────────────────┐${NC}"
|
|
34
|
+
$padding = 50 - $description.Length - 8
|
|
35
|
+
Write-Host ("${CYAN}│${NC} ${BOLD}${WHITE}Step ${current}/${total}:${NC} ${description}" + (" " * $padding) + "${CYAN}│${NC}")
|
|
36
|
+
Write-Host "${CYAN}└────────────────────────────────────────────────────────────┘${NC}"
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
$TOTAL_STEPS = 7
|
|
40
|
+
$CURRENT_STEP = 0
|
|
41
|
+
|
|
42
|
+
Draw-Box "🚀 LINTING & TYPE CHECKING SUITE 🚀" "${BOLD}${CYAN}"
|
|
43
|
+
Write-Host
|
|
44
|
+
|
|
45
|
+
$CURRENT_STEP++
|
|
46
|
+
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Environment Setup"
|
|
47
|
+
Write-Host "${BLUE}🔧 Installing and updating development dependencies...${NC}"
|
|
48
|
+
# uv add pylint pyright mypy pyrefly ruff ty --dev # linters and type checkers
|
|
49
|
+
# uv add --dev cleanpy pylint pyright mypy pyrefly --upgrade-package cleanpy pylint pyright mypy pyrefly
|
|
50
|
+
uv add --dev pyright --upgrade-package pyright
|
|
51
|
+
uv add --dev pylint --upgrade-package pylint
|
|
52
|
+
uv add --dev mypy --upgrade-package mypy
|
|
53
|
+
uv add --dev pyrefly --upgrade-package pyrefly
|
|
54
|
+
uv add --dev cleanpy --upgrade-package cleanpy
|
|
55
|
+
|
|
56
|
+
uv add types-requests types-toml types-PyYAML types-pytz types-paramiko types-urllib3 --dev
|
|
57
|
+
uv add types-mysqlclient types-SQLAlchemy --dev
|
|
58
|
+
|
|
59
|
+
Write-Host "${GREEN}✅ Environment setup complete!${NC}"
|
|
60
|
+
Write-Host
|
|
61
|
+
|
|
62
|
+
$CURRENT_STEP++
|
|
63
|
+
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Code Cleanup"
|
|
64
|
+
Write-Host "${YELLOW}🧹 Cleaning and formatting code...${NC}"
|
|
65
|
+
uv run -m cleanpy .
|
|
66
|
+
uv run -m ruff clean
|
|
67
|
+
# uv run -m ruff format .
|
|
68
|
+
uv run -m ruff check . --fix
|
|
69
|
+
|
|
70
|
+
New-Item -ItemType Directory -Force -Path .ai/linters | Out-Null
|
|
71
|
+
|
|
72
|
+
Write-Host "${GREEN}🧹 Code cleanup complete!${NC}"
|
|
73
|
+
Write-Host
|
|
74
|
+
|
|
75
|
+
Draw-Box "🔍 TYPE CHECKERS & LINTERS 🔍" "${BOLD}${PURPLE}"
|
|
76
|
+
|
|
77
|
+
$CURRENT_STEP++
|
|
78
|
+
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Pyright Type Checker"
|
|
79
|
+
Write-Host "${BLUE}📋 Analyzing types with Pyright...${NC}"
|
|
80
|
+
Remove-Item ./.ai/linters/issues_pyright.md -ErrorAction SilentlyContinue
|
|
81
|
+
uv run pyright . | Out-File -FilePath ./.ai/linters/issues_pyright.md
|
|
82
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pyright.md${NC}"
|
|
83
|
+
|
|
84
|
+
$CURRENT_STEP++
|
|
85
|
+
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "MyPy Type Checker"
|
|
86
|
+
Write-Host "${BLUE}📋 Analyzing types with MyPy...${NC}"
|
|
87
|
+
Remove-Item ./.ai/linters/issues_mypy.md -ErrorAction SilentlyContinue
|
|
88
|
+
uv run mypy . | Out-File -FilePath ./.ai/linters/issues_mypy.md
|
|
89
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_mypy.md${NC}"
|
|
90
|
+
|
|
91
|
+
$CURRENT_STEP++
|
|
92
|
+
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Pylint Code Analysis"
|
|
93
|
+
Write-Host "${BLUE}📋 Analyzing code quality with Pylint...${NC}"
|
|
94
|
+
Remove-Item ./.ai/linters/issues_pylint.md -ErrorAction SilentlyContinue
|
|
95
|
+
uv run pylint ./src/ | Out-File -FilePath ./.ai/linters/issues_pylint.md
|
|
96
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pylint.md${NC}"
|
|
97
|
+
|
|
98
|
+
$CURRENT_STEP++
|
|
99
|
+
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Pyrefly Type Checker"
|
|
100
|
+
Write-Host "${BLUE}📋 Analyzing types with Pyrefly...${NC}"
|
|
101
|
+
Remove-Item ./.ai/linters/issues_pyrefly.md -ErrorAction SilentlyContinue
|
|
102
|
+
uv run pyrefly check . | Out-File -FilePath ./.ai/linters/issues_pyrefly.md
|
|
103
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pyrefly.md${NC}"
|
|
104
|
+
|
|
105
|
+
$CURRENT_STEP++
|
|
106
|
+
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Ruff Linter"
|
|
107
|
+
Write-Host "${BLUE}📋 Checking code style with Ruff...${NC}"
|
|
108
|
+
Remove-Item ./.ai/linters/issues_ruff.md -ErrorAction SilentlyContinue
|
|
109
|
+
uv run ruff check . | Out-File -FilePath ./.ai/linters/issues_ruff.md
|
|
110
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_ruff.md${NC}"
|
|
111
|
+
|
|
112
|
+
Write-Host
|
|
113
|
+
Draw-Box "🎉 ALL CHECKS COMPLETED! 🎉" "${BOLD}${GREEN}"
|
|
114
|
+
Write-Host "${BOLD}${GREEN}📁 Check the ${UNDERLINE}.ai/linters${NC}${BOLD}${GREEN} directory for detailed results.${NC}"
|