machineconfig 4.8__py3-none-any.whl → 4.91__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/jobs/installer/custom_dev/winget.py +1 -0
- machineconfig/jobs/installer/installer_data.json +2403 -0
- machineconfig/jobs/installer/package_groups.py +157 -0
- machineconfig/scripts/linux/agents +2 -0
- machineconfig/scripts/linux/sessions +2 -0
- machineconfig/scripts/python/{fire_agents.py → agents.py} +7 -0
- machineconfig/scripts/python/croshell.py +13 -27
- machineconfig/scripts/python/devops.py +0 -13
- machineconfig/scripts/python/devops_devapps_install.py +148 -107
- machineconfig/scripts/python/interactive.py +30 -76
- machineconfig/scripts/python/{fire_jobs_layout_helper.py → sessions.py} +7 -0
- machineconfig/utils/installer.py +40 -16
- machineconfig/utils/installer_utils/github_release_bulk.py +2 -12
- machineconfig/utils/installer_utils/installer_abc.py +56 -60
- machineconfig/utils/schemas/installer/installer_types.py +0 -1
- {machineconfig-4.8.dist-info → machineconfig-4.91.dist-info}/METADATA +1 -1
- {machineconfig-4.8.dist-info → machineconfig-4.91.dist-info}/RECORD +20 -21
- {machineconfig-4.8.dist-info → machineconfig-4.91.dist-info}/entry_points.txt +2 -0
- machineconfig/jobs/installer/packages_custom_dev.json +0 -380
- machineconfig/jobs/installer/packages_custom_essential.json +0 -39
- machineconfig/jobs/installer/packages_github_dev.json +0 -1127
- machineconfig/jobs/installer/packages_github_essential.json +0 -787
- machineconfig/setup_linux/web_shortcuts/ascii_art.sh +0 -93
- {machineconfig-4.8.dist-info → machineconfig-4.91.dist-info}/WHEEL +0 -0
- {machineconfig-4.8.dist-info → machineconfig-4.91.dist-info}/top_level.txt +0 -0
|
@@ -21,6 +21,7 @@ import subprocess
|
|
|
21
21
|
import sys
|
|
22
22
|
from pathlib import Path
|
|
23
23
|
from platform import system
|
|
24
|
+
from typing import cast
|
|
24
25
|
|
|
25
26
|
import questionary
|
|
26
27
|
from questionary import Choice
|
|
@@ -29,6 +30,7 @@ from rich.panel import Panel
|
|
|
29
30
|
from rich.text import Text
|
|
30
31
|
|
|
31
32
|
|
|
33
|
+
_ = cast
|
|
32
34
|
console = Console()
|
|
33
35
|
|
|
34
36
|
|
|
@@ -81,24 +83,7 @@ def install_windows_desktop_apps() -> bool:
|
|
|
81
83
|
"""Install Windows desktop applications using winget."""
|
|
82
84
|
if system() != "Windows":
|
|
83
85
|
console.print("❌ This function is only available on Windows systems.", style="bold red")
|
|
84
|
-
return False
|
|
85
|
-
|
|
86
|
-
console.print(Panel("💻 [bold cyan]WINDOWS DESKTOP APPS[/bold cyan]\n[italic]Installing Brave, Windows Terminal, PowerShell, and VSCode[/italic]", border_style="cyan"))
|
|
87
|
-
|
|
88
|
-
# Install winget applications
|
|
89
|
-
winget_commands = [
|
|
90
|
-
('winget install --no-upgrade --name "Windows Terminal" --Id "Microsoft.WindowsTerminal" --source winget --scope user --accept-package-agreements --accept-source-agreements', "Installing Windows Terminal"),
|
|
91
|
-
('winget install --no-upgrade --name "Powershell" --Id "Microsoft.PowerShell" --source winget --scope user --accept-package-agreements --accept-source-agreements', "Installing PowerShell"),
|
|
92
|
-
('winget install --no-upgrade --name "Brave" --Id "Brave.Brave" --source winget --scope user --accept-package-agreements --accept-source-agreements', "Installing Brave Browser"),
|
|
93
|
-
('winget install --no-upgrade --name "Microsoft Visual Studio Code" --Id "Microsoft.VisualStudioCode" --source winget --scope user --accept-package-agreements --accept-source-agreements', "Installing Visual Studio Code"),
|
|
94
|
-
]
|
|
95
|
-
|
|
96
|
-
success = True
|
|
97
|
-
for command, description in winget_commands:
|
|
98
|
-
if not run_command(command, description):
|
|
99
|
-
success = False
|
|
100
|
-
|
|
101
|
-
# Install Nerd Fonts via Python
|
|
86
|
+
return False
|
|
102
87
|
console.print("🔧 Installing Nerd Fonts", style="bold cyan")
|
|
103
88
|
try:
|
|
104
89
|
from machineconfig.jobs.installer.custom_dev.nerfont_windows_helper import install_nerd_fonts
|
|
@@ -106,34 +91,29 @@ def install_windows_desktop_apps() -> bool:
|
|
|
106
91
|
console.print("✅ Nerd Fonts installed successfully", style="bold green")
|
|
107
92
|
except Exception as e:
|
|
108
93
|
console.print(f"❌ Error installing Nerd Fonts: {e}", style="bold red")
|
|
109
|
-
success = False
|
|
110
|
-
|
|
111
|
-
# Set Windows Terminal settings via Python
|
|
112
94
|
console.print("🔧 Setting Windows Terminal settings", style="bold cyan")
|
|
113
95
|
try:
|
|
114
96
|
from machineconfig.setup_windows.wt_and_pwsh.set_wt_settings import main as set_wt_settings_main
|
|
115
97
|
set_wt_settings_main()
|
|
116
98
|
console.print("✅ Windows Terminal settings configured successfully", style="bold green")
|
|
117
99
|
except Exception as e:
|
|
118
|
-
console.print(f"❌ Error setting Windows Terminal settings: {e}", style="bold red")
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
return success
|
|
100
|
+
console.print(f"❌ Error setting Windows Terminal settings: {e}", style="bold red")
|
|
101
|
+
return True
|
|
122
102
|
|
|
123
103
|
|
|
124
104
|
def get_installation_choices() -> list[str]:
|
|
125
105
|
"""Get user choices for installation options."""
|
|
126
106
|
choices = [
|
|
127
|
-
Choice(value="install_apps", title="📥 Install Apps - Install base system applications", checked=False),
|
|
128
107
|
Choice(value="upgrade_system", title="🔄 Upgrade System Packages - Update all system packages", checked=False),
|
|
129
|
-
Choice(value="
|
|
108
|
+
Choice(value="ESSENTIAL_SYSTEM", title="📥 Install Apps - Install base system applications", checked=False),
|
|
109
|
+
Choice(value="ESSENTIAL", title="⚡ Install CLI Apps - Command-line tools installation", checked=False),
|
|
110
|
+
Choice(value="DEV_SYSTEM", title="🛠️ Install Development Tools - rust, libssl-dev, ffmpeg, wezterm, brave, code", checked=False),
|
|
111
|
+
Choice(value="TerminalEyeCandy", title="🎨 Install ASCII Art Libraries - Terminal visualization tools", checked=False),
|
|
112
|
+
Choice(value="install_repos", title="🐍 Install Repos - Set up Python environment and repositories permanently.", checked=False),
|
|
130
113
|
Choice(value="install_ssh_server", title="🔒 Install SSH Server - Set up remote access", checked=False),
|
|
131
114
|
Choice(value="create_symlinks", title="🔗 Create Symlinks - Set up configuration symlinks (finish dotfiles transfer first)", checked=False),
|
|
132
|
-
Choice(value="install_cli_apps", title="⚡ Install CLI Apps - Command-line tools installation", checked=False),
|
|
133
|
-
Choice(value="install_dev_tools", title="🛠️ Install Development Tools - rust, libssl-dev, ffmpeg, wezterm, brave, code", checked=False),
|
|
134
115
|
Choice(value="retrieve_repositories", title="📚 Retrieve Repositories - Clone repositories to ~/code", checked=False),
|
|
135
116
|
Choice(value="retrieve_data", title="💾 Retrieve Data - Backup restoration", checked=False),
|
|
136
|
-
Choice(value="install_ascii_art", title="🎨 Install ASCII Art Libraries - Terminal visualization tools", checked=False),
|
|
137
117
|
]
|
|
138
118
|
# Add Windows-specific options
|
|
139
119
|
if system() == "Windows":
|
|
@@ -148,24 +128,28 @@ def execute_installations(selected_options: list[str]) -> None:
|
|
|
148
128
|
console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Setting up base virtual environment[/italic]", border_style="green"))
|
|
149
129
|
run_command("curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/ve.sh | bash", "Setting up base virtual environment")
|
|
150
130
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
run_command(
|
|
131
|
+
for maybe_a_group in selected_options:
|
|
132
|
+
if maybe_a_group in ("ESSENTIAL", "DEV", "ESSENTIAL_SYSTEM", "DEV_SYSTEM", "TerminalEyeCandy"):
|
|
133
|
+
console.print(Panel("⚡ [bold bright_yellow]CLI APPLICATIONS[/bold bright_yellow]\n[italic]Command-line tools installation[/italic]", border_style="bright_yellow"))
|
|
134
|
+
console.print("🔧 Installing CLI applications", style="bold cyan")
|
|
135
|
+
try:
|
|
136
|
+
from machineconfig.scripts.python.devops_devapps_install import main as devops_devapps_install_main
|
|
137
|
+
# maybe_a_group = cast(PA, maybe_a_group)
|
|
138
|
+
devops_devapps_install_main(group=maybe_a_group) # type: ignore
|
|
139
|
+
console.print("✅ CLI applications installed successfully", style="bold green")
|
|
140
|
+
except Exception as e:
|
|
141
|
+
console.print(f"❌ Error installing CLI applications: {e}", style="bold red")
|
|
142
|
+
run_command(". $HOME/.bashrc", "Reloading bash configuration")
|
|
163
143
|
|
|
164
144
|
if "upgrade_system" in selected_options:
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
145
|
+
if system() == "Windows":
|
|
146
|
+
console.print("❌ System upgrade is not applicable on Windows via this script.", style="bold red")
|
|
147
|
+
elif system() == "Linux":
|
|
148
|
+
console.print(Panel("🔄 [bold magenta]SYSTEM UPDATE[/bold magenta]\n[italic]Package management[/italic]", border_style="magenta"))
|
|
149
|
+
run_command("sudo nala upgrade -y", "Upgrading system packages")
|
|
150
|
+
else:
|
|
151
|
+
console.print(f"❌ System upgrade not supported on {system()}.", style="bold red")
|
|
152
|
+
if "install_repos" in selected_options:
|
|
169
153
|
console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
|
|
170
154
|
from machineconfig import setup_linux as module
|
|
171
155
|
script = Path(module.__file__).parent / "repos.sh"
|
|
@@ -199,30 +183,6 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
|
|
|
199
183
|
else:
|
|
200
184
|
console.print("⏭️ Skipping symlink creation - finish dotfiles transfer first", style="yellow")
|
|
201
185
|
|
|
202
|
-
if "install_cli_apps" in selected_options:
|
|
203
|
-
console.print(Panel("⚡ [bold bright_yellow]CLI APPLICATIONS[/bold bright_yellow]\n[italic]Command-line tools installation[/italic]", border_style="bright_yellow"))
|
|
204
|
-
console.print("🔧 Installing CLI applications", style="bold cyan")
|
|
205
|
-
try:
|
|
206
|
-
from machineconfig.scripts.python.devops_devapps_install import main as devops_devapps_install_main
|
|
207
|
-
devops_devapps_install_main(which="essentials")
|
|
208
|
-
console.print("✅ CLI applications installed successfully", style="bold green")
|
|
209
|
-
except Exception as e:
|
|
210
|
-
console.print(f"❌ Error installing CLI applications: {e}", style="bold red")
|
|
211
|
-
run_command(". $HOME/.bashrc", "Reloading bash configuration")
|
|
212
|
-
|
|
213
|
-
if "install_dev_tools" in selected_options:
|
|
214
|
-
console.print(Panel("🛠️ [bold bright_blue]DEVELOPMENT TOOLS[/bold bright_blue]\n[italic]Software development packages[/italic]", border_style="bright_blue"))
|
|
215
|
-
run_command("(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) || true", "Installing Rust toolchain")
|
|
216
|
-
run_command("sudo nala install libssl-dev -y", "Installing libssl-dev")
|
|
217
|
-
run_command("sudo nala install ffmpeg -y", "Installing ffmpeg")
|
|
218
|
-
console.print("🔧 Installing development applications", style="bold cyan")
|
|
219
|
-
try:
|
|
220
|
-
from machineconfig.scripts.python.devops_devapps_install import main as devops_devapps_install_main
|
|
221
|
-
devops_devapps_install_main(which="wezterm,brave,code")
|
|
222
|
-
console.print("✅ Development applications installed successfully", style="bold green")
|
|
223
|
-
except Exception as e:
|
|
224
|
-
console.print(f"❌ Error installing development applications: {e}", style="bold red")
|
|
225
|
-
|
|
226
186
|
if "retrieve_repositories" in selected_options:
|
|
227
187
|
console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
|
|
228
188
|
from machineconfig.scripts.python import repos as module
|
|
@@ -238,12 +198,6 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
|
|
|
238
198
|
except Exception as e:
|
|
239
199
|
console.print(f"❌ Error retrieving backup data: {e}", style="bold red")
|
|
240
200
|
|
|
241
|
-
if "install_ascii_art" in selected_options:
|
|
242
|
-
console.print(Panel("🎨 [bold bright_green]ASCII ART[/bold bright_green]\n[italic]Terminal visualization tools[/italic]", border_style="bright_green"))
|
|
243
|
-
from machineconfig import setup_linux as module
|
|
244
|
-
script = Path(module.__file__).parent / "web_shortcuts" / "ascii_art.sh"
|
|
245
|
-
run_command(f"bash {script}", "Installing ASCII art libraries")
|
|
246
|
-
|
|
247
201
|
if "install_windows_desktop" in selected_options:
|
|
248
202
|
install_windows_desktop_apps()
|
|
249
203
|
|
|
@@ -127,5 +127,12 @@ def launch(layout_path: str = typer.Argument(..., help="Path to the layout.json
|
|
|
127
127
|
print(f"❌ Unsupported platform: {platform.system()}")
|
|
128
128
|
|
|
129
129
|
|
|
130
|
+
def main_from_parser():
|
|
131
|
+
layouts_app = typer.Typer(help="Layouts management subcommands")
|
|
132
|
+
layouts_app.command("launch")(launch)
|
|
133
|
+
layouts_app.command("load-balance")(load_balance)
|
|
134
|
+
return layouts_app()
|
|
135
|
+
|
|
136
|
+
|
|
130
137
|
if __name__ == "__main__":
|
|
131
138
|
from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
|
machineconfig/utils/installer.py
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"""package manager"""
|
|
2
2
|
|
|
3
|
-
from machineconfig.utils.installer_utils.installer_abc import check_if_installed_already
|
|
3
|
+
from machineconfig.utils.installer_utils.installer_abc import check_if_installed_already, parse_apps_installer_linux, parse_apps_installer_windows
|
|
4
|
+
|
|
4
5
|
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
5
|
-
from machineconfig.utils.schemas.installer.installer_types import
|
|
6
|
+
from machineconfig.utils.schemas.installer.installer_types import InstallerData, InstallerDataFiles, get_normalized_arch, get_os_name, OPERATING_SYSTEMS, CPU_ARCHITECTURES
|
|
7
|
+
from machineconfig.jobs.installer.package_groups import PACKAGE_GROUPS, PACKAGE_GROUP2NAMES
|
|
6
8
|
from rich.console import Console
|
|
7
9
|
from rich.panel import Panel
|
|
8
10
|
|
|
9
11
|
from machineconfig.utils.path_extended import PathExtended as PathExtended
|
|
10
|
-
from machineconfig.utils.source_of_truth import INSTALL_VERSION_ROOT, LINUX_INSTALL_PATH
|
|
12
|
+
from machineconfig.utils.source_of_truth import INSTALL_VERSION_ROOT, LINUX_INSTALL_PATH, LIBRARY_ROOT
|
|
11
13
|
from machineconfig.utils.io import read_json
|
|
12
14
|
|
|
13
15
|
from typing import Any
|
|
@@ -18,7 +20,7 @@ from joblib import Parallel, delayed
|
|
|
18
20
|
def check_latest():
|
|
19
21
|
console = Console() # Added console initialization
|
|
20
22
|
console.print(Panel("🔍 CHECKING FOR LATEST VERSIONS", title="Status", expand=False)) # Replaced print with Panel
|
|
21
|
-
installers = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=["
|
|
23
|
+
installers = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=["ESSENTIAL"])
|
|
22
24
|
installers_github = []
|
|
23
25
|
for inst__ in installers:
|
|
24
26
|
app_name = inst__["appName"]
|
|
@@ -91,30 +93,52 @@ def get_installed_cli_apps():
|
|
|
91
93
|
return apps
|
|
92
94
|
|
|
93
95
|
|
|
94
|
-
def get_installers(os: OPERATING_SYSTEMS, arch: CPU_ARCHITECTURES, which_cats: list[
|
|
96
|
+
def get_installers(os: OPERATING_SYSTEMS, arch: CPU_ARCHITECTURES, which_cats: list[PACKAGE_GROUPS]) -> list[InstallerData]:
|
|
95
97
|
print(f"\n{'=' * 80}\n🔍 LOADING INSTALLER CONFIGURATIONS 🔍\n{'=' * 80}")
|
|
96
|
-
res_all = get_all_installer_data_files(
|
|
98
|
+
res_all = get_all_installer_data_files()
|
|
99
|
+
acceptable_apps_names: list[str] = []
|
|
100
|
+
for cat in which_cats:
|
|
101
|
+
acceptable_apps_names += PACKAGE_GROUP2NAMES[cat]
|
|
97
102
|
all_installers: list[InstallerData] = []
|
|
98
|
-
for
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if an_installer["fileNamePattern"][arch][os] is None:
|
|
103
|
+
for installer_data in res_all:
|
|
104
|
+
if installer_data["appName"] in acceptable_apps_names:
|
|
105
|
+
if installer_data["fileNamePattern"][arch][os] is None:
|
|
102
106
|
continue
|
|
103
|
-
|
|
104
|
-
all_installers.extend(suitable_installers)
|
|
107
|
+
all_installers.append(installer_data)
|
|
105
108
|
print(f"✅ Loaded {len(all_installers)} installer configurations\n{'=' * 80}")
|
|
106
109
|
return all_installers
|
|
107
110
|
|
|
108
111
|
|
|
109
|
-
def get_all_installer_data_files(
|
|
112
|
+
def get_all_installer_data_files() -> list[InstallerData]:
|
|
110
113
|
print(f"\n{'=' * 80}\n📂 LOADING CONFIGURATION FILES 📂\n{'=' * 80}")
|
|
111
114
|
import machineconfig.jobs.installer as module
|
|
112
115
|
from pathlib import Path
|
|
113
116
|
print("📂 Loading configuration files...")
|
|
114
|
-
|
|
117
|
+
res_raw: InstallerDataFiles = read_json(Path(module.__file__).parent.joinpath("installer_data.json"))
|
|
118
|
+
res_final: list[InstallerData] = res_raw["installers"]
|
|
115
119
|
print(f"Loaded: {len(res_final)} installer categories")
|
|
116
|
-
|
|
117
|
-
|
|
120
|
+
return res_final
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def get_installers_system_groups():
|
|
124
|
+
res_final: list[InstallerData] = []
|
|
125
|
+
from platform import system
|
|
126
|
+
if system() == "Windows":
|
|
127
|
+
options_system = parse_apps_installer_windows(LIBRARY_ROOT.joinpath("setup_windows/apps.ps1").read_text(encoding="utf-8"))
|
|
128
|
+
elif system() == "Linux" or system() == "Darwin":
|
|
129
|
+
options_system = parse_apps_installer_linux(LIBRARY_ROOT.joinpath("setup_linux/apps.sh").read_text(encoding="utf-8"))
|
|
130
|
+
else:
|
|
131
|
+
raise NotImplementedError(f"❌ System {system()} not supported")
|
|
132
|
+
os_name = get_os_name()
|
|
133
|
+
for group_name, (docs, script) in options_system.items():
|
|
134
|
+
item: InstallerData = {
|
|
135
|
+
"appName": group_name,
|
|
136
|
+
"doc": docs,
|
|
137
|
+
"repoURL": "CMD",
|
|
138
|
+
"fileNamePattern": {
|
|
139
|
+
"amd64": {os_name: script,},
|
|
140
|
+
"arm64": {os_name: script,},}}
|
|
141
|
+
res_final.append(item)
|
|
118
142
|
return res_final
|
|
119
143
|
|
|
120
144
|
|
|
@@ -109,8 +109,7 @@ def main() -> None:
|
|
|
109
109
|
current_dir = Path(__file__).parent
|
|
110
110
|
installer_dir = current_dir.parent.parent / "jobs" / "installer"
|
|
111
111
|
|
|
112
|
-
standard_json = installer_dir / "
|
|
113
|
-
dev_json = installer_dir / "packages_dev.json"
|
|
112
|
+
standard_json = installer_dir / "installer_data.json"
|
|
114
113
|
output_json = current_dir / "github_releases.json"
|
|
115
114
|
|
|
116
115
|
print("🔍 Starting GitHub release data extraction...")
|
|
@@ -125,16 +124,7 @@ def main() -> None:
|
|
|
125
124
|
all_github_repos.update(repos)
|
|
126
125
|
print(f" Found {len(repos)} GitHub repos")
|
|
127
126
|
else:
|
|
128
|
-
print(f"⚠️ File not found: {standard_json}")
|
|
129
|
-
|
|
130
|
-
if dev_json.exists():
|
|
131
|
-
print(f"📄 Reading {dev_json.name}...")
|
|
132
|
-
repos = extract_github_repos_from_json(dev_json)
|
|
133
|
-
all_github_repos.update(repos)
|
|
134
|
-
print(f" Found {len(repos)} GitHub repos")
|
|
135
|
-
else:
|
|
136
|
-
print(f"⚠️ File not found: {dev_json}")
|
|
137
|
-
|
|
127
|
+
print(f"⚠️ File not found: {standard_json}")
|
|
138
128
|
print(f"🎯 Total unique GitHub repositories found: {len(all_github_repos)}")
|
|
139
129
|
|
|
140
130
|
if not all_github_repos:
|
|
@@ -3,7 +3,7 @@ from machineconfig.utils.path_extended import PathExtended as PathExtended
|
|
|
3
3
|
from machineconfig.utils.source_of_truth import WINDOWS_INSTALL_PATH, LINUX_INSTALL_PATH, INSTALL_VERSION_ROOT
|
|
4
4
|
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import Optional
|
|
7
7
|
import subprocess
|
|
8
8
|
import platform
|
|
9
9
|
|
|
@@ -166,75 +166,71 @@ def check_if_installed_already(exe_name: str, version: Optional[str], use_cache:
|
|
|
166
166
|
return ("⚠️ NotInstalled", "None", version or "unknown")
|
|
167
167
|
|
|
168
168
|
|
|
169
|
-
def parse_apps_installer_linux(txt: str) -> dict[str,
|
|
169
|
+
def parse_apps_installer_linux(txt: str) -> dict[str, tuple[str, str]]:
|
|
170
170
|
"""Parse Linux shell installation scripts into logical chunks.
|
|
171
171
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
2. New format with # --BLOCK:<name>-- comment signatures
|
|
172
|
+
Splits scripts by # --GROUP:<name>:<description> comment signatures into a dictionary
|
|
173
|
+
mapping block names to (description, shell script content) tuples.
|
|
175
174
|
|
|
176
175
|
Returns:
|
|
177
|
-
dict[str, str]: Dictionary mapping block/section names to
|
|
176
|
+
dict[str, tuple[str, str]]: Dictionary mapping block/section names to (description, installation_script) tuples
|
|
178
177
|
"""
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
178
|
+
chunks = txt.split('# --GROUP:')
|
|
179
|
+
res: dict[str, tuple[str, str]] = {}
|
|
180
|
+
|
|
181
|
+
for chunk in chunks[1:]: # Skip first empty chunk before first group
|
|
182
|
+
lines = chunk.split('\n')
|
|
183
|
+
# First line contains the group name and description in format "NAME:DESCRIPTION"
|
|
184
|
+
group_line = lines[0].strip()
|
|
185
|
+
|
|
186
|
+
# Extract group name and description
|
|
187
|
+
if ':' in group_line:
|
|
188
|
+
parts = group_line.split(':', 1) # Split only on first colon
|
|
189
|
+
group_name = parts[0].strip()
|
|
190
|
+
group_description = parts[1].strip() if len(parts) > 1 else ""
|
|
191
|
+
else:
|
|
192
|
+
group_name = group_line
|
|
193
|
+
group_description = ""
|
|
185
194
|
|
|
186
|
-
#
|
|
187
|
-
|
|
188
|
-
if i + 1 < len(blocks):
|
|
189
|
-
block_name = blocks[i].strip()
|
|
190
|
-
block_content = blocks[i + 1].strip()
|
|
191
|
-
if block_content:
|
|
192
|
-
res[block_name] = block_content
|
|
195
|
+
# Rest is the content
|
|
196
|
+
content = '\n'.join(lines[1:]).strip()
|
|
193
197
|
|
|
194
|
-
|
|
198
|
+
if group_name and content:
|
|
199
|
+
res[group_name] = (group_description, content)
|
|
195
200
|
|
|
196
|
-
# Legacy format fallback
|
|
197
|
-
txts = txt.split("""yes '' | sed 3q; echo "----------------------------- installing """)
|
|
198
|
-
res = {}
|
|
199
|
-
for chunk in txts[1:]:
|
|
200
|
-
try:
|
|
201
|
-
k = chunk.split("----")[0].rstrip().lstrip()
|
|
202
|
-
v = "\n".join(chunk.split("\n")[1:])
|
|
203
|
-
res[k] = v
|
|
204
|
-
except IndexError as e:
|
|
205
|
-
print(f"""
|
|
206
|
-
❌ Error parsing chunk:
|
|
207
|
-
{"-" * 50}
|
|
208
|
-
{chunk}
|
|
209
|
-
{"-" * 50}""")
|
|
210
|
-
raise e
|
|
211
201
|
return res
|
|
212
202
|
|
|
213
203
|
|
|
214
|
-
def parse_apps_installer_windows(txt: str) -> dict[str,
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
204
|
+
def parse_apps_installer_windows(txt: str) -> dict[str, tuple[str, str]]:
|
|
205
|
+
"""Parse Windows PowerShell installation scripts into logical chunks.
|
|
206
|
+
|
|
207
|
+
Splits scripts by # --GROUP:<name>:<description> comment signatures into a dictionary
|
|
208
|
+
mapping block names to (description, PowerShell script content) tuples.
|
|
209
|
+
|
|
210
|
+
Returns:
|
|
211
|
+
dict[str, tuple[str, str]]: Dictionary mapping block/section names to (description, installation_script) tuples
|
|
212
|
+
"""
|
|
213
|
+
chunks = txt.split('# --GROUP:')
|
|
214
|
+
res: dict[str, tuple[str, str]] = {}
|
|
215
|
+
|
|
216
|
+
for chunk in chunks[1:]: # Skip first chunk before first group
|
|
217
|
+
lines = chunk.split('\n')
|
|
218
|
+
# First line contains the group name and description in format "NAME:DESCRIPTION"
|
|
219
|
+
group_line = lines[0].strip()
|
|
220
|
+
|
|
221
|
+
# Extract group name and description
|
|
222
|
+
if ':' in group_line:
|
|
223
|
+
parts = group_line.split(':', 1) # Split only on first colon
|
|
224
|
+
group_name = parts[0].strip()
|
|
225
|
+
group_description = parts[1].strip() if len(parts) > 1 else ""
|
|
221
226
|
else:
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
name = name.split(" --Id ", maxsplit=1)[0].strip('"').strip('"')
|
|
232
|
-
res[name] = a_chunk
|
|
233
|
-
except IndexError as e:
|
|
234
|
-
print(f"""
|
|
235
|
-
❌ Error parsing chunk:
|
|
236
|
-
{"-" * 50}
|
|
237
|
-
{a_chunk}
|
|
238
|
-
{"-" * 50}""")
|
|
239
|
-
raise e
|
|
227
|
+
group_name = group_line
|
|
228
|
+
group_description = ""
|
|
229
|
+
|
|
230
|
+
# Rest is the content
|
|
231
|
+
content = '\n'.join(lines[1:]).strip()
|
|
232
|
+
|
|
233
|
+
if group_name and content:
|
|
234
|
+
res[group_name] = (group_description, content)
|
|
235
|
+
|
|
240
236
|
return res
|
|
@@ -2,7 +2,6 @@ from typing import TypedDict, Literal, TypeAlias, Optional
|
|
|
2
2
|
import platform
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
APP_INSTALLER_CATEGORY: TypeAlias = Literal["GITHUB_ESSENTIAL", "CUSTOM_ESSENTIAL", "GITHUB_DEV", "CUSTOM_DEV"]
|
|
6
5
|
CPU_ARCHITECTURES: TypeAlias = Literal["amd64", "arm64"]
|
|
7
6
|
OPERATING_SYSTEMS: TypeAlias = Literal["windows", "linux", "macos"]
|
|
8
7
|
|
|
@@ -42,10 +42,8 @@ machineconfig/cluster/templates/run_remote.py,sha256=vCc56t8BUAUJp7tyb0PFfwy5hlm
|
|
|
42
42
|
machineconfig/cluster/templates/utils.py,sha256=5lHgjHvodoSPBD31AwluHBBNgwimwThUsDNWGN8iH9I,1647
|
|
43
43
|
machineconfig/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
44
|
machineconfig/jobs/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
|
-
machineconfig/jobs/installer/
|
|
46
|
-
machineconfig/jobs/installer/
|
|
47
|
-
machineconfig/jobs/installer/packages_github_dev.json,sha256=11LVsvIVKMjp8i3y_TNO31IpXaZgQWGGlmhMa_wUilE,31889
|
|
48
|
-
machineconfig/jobs/installer/packages_github_essential.json,sha256=dCGFovFPCnEu-4wed7FJDBxPHdz8ekkAK58VTQobsdg,26472
|
|
45
|
+
machineconfig/jobs/installer/installer_data.json,sha256=sOfqIPU4uarxbuD4HBRs3tXfIKx5tUtNQQdALygwk2o,71545
|
|
46
|
+
machineconfig/jobs/installer/package_groups.py,sha256=SayXJYkgYZiUyAT2YLWrDBXB1YYJbuHe0D_eFQQIQn8,2505
|
|
49
47
|
machineconfig/jobs/installer/custom/gh.py,sha256=hic8Z1ZdncbljY6hgHzl2rmOLOcb6imIUstMALSS3-Y,3082
|
|
50
48
|
machineconfig/jobs/installer/custom/hx.py,sha256=FrUD0mlhWG2GxrnarccVIaW_sHJ5mxeF6yyzbBWyx6w,5840
|
|
51
49
|
machineconfig/jobs/installer/custom_dev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -61,7 +59,7 @@ machineconfig/jobs/installer/custom_dev/nerdfont.py,sha256=oOYC5BpukZIA_pGSDRMZm
|
|
|
61
59
|
machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py,sha256=sdgbHCbu_6d8VotLRvpL_GrwpEoxY4dupOyRUjtpaYA,5554
|
|
62
60
|
machineconfig/jobs/installer/custom_dev/redis.py,sha256=KjqJkCKZi8fbdW6IhIZjmA4pdo8oZF84Fflij_7dVbg,2291
|
|
63
61
|
machineconfig/jobs/installer/custom_dev/wezterm.py,sha256=BuTVRqV5WQUS2C7FpWMU4pQWgkPt4p3VVGcE6fTVG-0,2311
|
|
64
|
-
machineconfig/jobs/installer/custom_dev/winget.py,sha256=
|
|
62
|
+
machineconfig/jobs/installer/custom_dev/winget.py,sha256=gLdwM20jKMf2bMV3BAcOg4MkuzwF09CU5OhXvLkPoHo,5738
|
|
65
63
|
machineconfig/jobs/installer/linux_scripts/brave.sh,sha256=m01xquA4YZW3YrhJiTCvTZuLliELmRI1avYFyuE5-Ws,2119
|
|
66
64
|
machineconfig/jobs/installer/linux_scripts/docker.sh,sha256=xP219QeQ5eLwhvOHsNYqOERMGdjBqvrL5jeoZj749XE,5347
|
|
67
65
|
machineconfig/jobs/installer/linux_scripts/docker_start.sh,sha256=TiS-hWRltw66_p_Fq8gfkA_rqUIuwxoIkFZItVF6TXA,1478
|
|
@@ -104,6 +102,7 @@ machineconfig/profile/records/windows/apps_summary_report.csv,sha256=nN5BoACBqXg
|
|
|
104
102
|
machineconfig/profile/records/windows/apps_summary_report.md,sha256=O5hmAcpObaLmOjYLvHg9kkPJryqFwFaP8OsmfPwfR1o,137
|
|
105
103
|
machineconfig/scripts/__init__.py,sha256=v0cMjnaIo39C3ltLiTf1S0fCTMAqWtEU7zrVenUj4PQ,71
|
|
106
104
|
machineconfig/scripts/cloud/init.sh,sha256=zPn3_hwsHduaRxHs97TTn-BoLaJS44I2XwlLmZudQ80,4646
|
|
105
|
+
machineconfig/scripts/linux/agents,sha256=zahzfVZ8_NIkC1TKMjcZqo0vsBtFl-xBhpz63sn29yA,96
|
|
107
106
|
machineconfig/scripts/linux/choose_wezterm_theme,sha256=T7_vS-XvIZErRkfqtlyoZuHEVKFQQwhIeQMFIVTjtxg,145
|
|
108
107
|
machineconfig/scripts/linux/cloud_copy,sha256=IU5TO7roSUYB-U4Km9bhAZOvlUr4nRJtJf4tqCPIPAs,100
|
|
109
108
|
machineconfig/scripts/linux/cloud_mount,sha256=QnDUPUv9q3V14PONOwM4tAPHqOopF_uvjEN1tL24jZA,102
|
|
@@ -127,6 +126,7 @@ machineconfig/scripts/linux/mount_nw_drive,sha256=pNzHc7yZn5YIzn2BkpKvd5530Pqbes
|
|
|
127
126
|
machineconfig/scripts/linux/mount_smb,sha256=7UN5EP1kuxYL_-CnyaH4f9Wuu2CgALDZpJ0mPcdvCiY,94
|
|
128
127
|
machineconfig/scripts/linux/repos,sha256=1qbmIemZjkjcPmiL1Bp8pD46E83OXsR5EJ0XQt29Bhc,96
|
|
129
128
|
machineconfig/scripts/linux/scheduler,sha256=Z9Wu0N9vWRbi4FoRbpcc4ydq4bVaDjZOXESR35ZN0rI,100
|
|
129
|
+
machineconfig/scripts/linux/sessions,sha256=A4vxUDHnDhyph833iy-tBprgQ7av_DZ5t031PRrbqVQ,98
|
|
130
130
|
machineconfig/scripts/linux/share_cloud.sh,sha256=75IzCm7Nob1wO-zlfaNyPPod1IjAsVCG5lcMFdXmiI4,3010
|
|
131
131
|
machineconfig/scripts/linux/share_nfs,sha256=LDQZQ9TV7z2y7RtNHiO4Wb513MztyGjaAV-GzTGwUdc,1374
|
|
132
132
|
machineconfig/scripts/linux/share_smb,sha256=HZX8BKgMlS9JzkGIYnxTsPvoxEBBuVLVkqzR3pmGFGY,20
|
|
@@ -139,33 +139,32 @@ machineconfig/scripts/linux/warp-cli.sh,sha256=shFFZ9viet_DSEEHT8kxlGRHoJpO6o85p
|
|
|
139
139
|
machineconfig/scripts/linux/wifi_conn,sha256=X4TH3OvcVZfOveSbF9WW8uXb4U_G7ZSnCERc7VYAqkc,95
|
|
140
140
|
machineconfig/scripts/linux/z_ls,sha256=ATZtu0ccN3AKvAOxkwLq1xgQjJ3en5byEWJ3Q8afnNg,3340
|
|
141
141
|
machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
|
+
machineconfig/scripts/python/agents.py,sha256=RtRR53Mt3zTqHqJbS5nY7XHRbZPty8hPl1mpgKAvaME,9832
|
|
142
143
|
machineconfig/scripts/python/choose_wezterm_theme.py,sha256=Hlu_EOQhLM6wYdAdY25jcqEK11BkVwQYwkz04xnIBVU,3397
|
|
143
144
|
machineconfig/scripts/python/cloud_copy.py,sha256=_pxA8o3ar5vH9DkrAdwafHcZMiqNCbY_IfNzKCOMJ5k,8395
|
|
144
145
|
machineconfig/scripts/python/cloud_manager.py,sha256=YN0DYLzPKtMBaks-EAVwFmkCu3XeHWMr1D21uqX5dDk,3429
|
|
145
146
|
machineconfig/scripts/python/cloud_mount.py,sha256=RFMzRUep2D5HtVXANIi-pab3EkI-W8P1IJ32k1W7xQA,6756
|
|
146
147
|
machineconfig/scripts/python/cloud_repo_sync.py,sha256=GBhdUu9BJwhLYmhxxtvqJGLy7xKdQcnH9kkL4jcbzEE,9502
|
|
147
148
|
machineconfig/scripts/python/cloud_sync.py,sha256=RWGpAfJ9fnN18yNBSgN44dzA38Hmd4879JL5r2pcyrM,3514
|
|
148
|
-
machineconfig/scripts/python/croshell.py,sha256=
|
|
149
|
-
machineconfig/scripts/python/devops.py,sha256=
|
|
149
|
+
machineconfig/scripts/python/croshell.py,sha256=wYi8xWkzYzpfg8YNppmu22mvx0Gxtbs979ERO3kZS2w,8587
|
|
150
|
+
machineconfig/scripts/python/devops.py,sha256=fTEut6gTDfmNqzS8-gRyRAsmWJYPGGIt8X35Irj7Cl8,3434
|
|
150
151
|
machineconfig/scripts/python/devops_add_identity.py,sha256=JfN3ZrYMCgmt4ks_VCfnV9BIIHAsOYO3E0W0wZ15FR8,3791
|
|
151
152
|
machineconfig/scripts/python/devops_add_ssh_key.py,sha256=KaoX83KltBsmutfKhSfZjd7nP_R1hJ2OLAWRhbswO7o,6889
|
|
152
153
|
machineconfig/scripts/python/devops_backup_retrieve.py,sha256=jZe5Vki7E2GCMG8hvqUZeOONFC4cNzISoGzq_dMG4GA,5601
|
|
153
|
-
machineconfig/scripts/python/devops_devapps_install.py,sha256=
|
|
154
|
+
machineconfig/scripts/python/devops_devapps_install.py,sha256=f22pUQQjY0AGs4jjxSgYz1e0LOfZGXucTH1lmgQa5Vw,10233
|
|
154
155
|
machineconfig/scripts/python/devops_update_repos.py,sha256=c5qBc9cuTGDEqDHufkjDT4d_vvJsswv3tlqk9MAulYk,8063
|
|
155
156
|
machineconfig/scripts/python/dotfile.py,sha256=SRcX-9Ak1jRvF-killBTTm2IWcsNxfiLucH6ZsytAFA,2202
|
|
156
|
-
machineconfig/scripts/python/fire_agents.py,sha256=aLxwM8o3Tpe4nYpNdnEvG8WVdplE3_tfnDECIXONzAg,9579
|
|
157
157
|
machineconfig/scripts/python/fire_agents_help_launch.py,sha256=1ymWiszfjCyPv3ofinWzfOmbzLEt3d7ntac_afLh-V4,5017
|
|
158
158
|
machineconfig/scripts/python/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
|
|
159
159
|
machineconfig/scripts/python/fire_agents_helper_types.py,sha256=zKu8Vr6iucaGSkCm_Tkt_WrYU7-6Nript3coYyzTXzY,295
|
|
160
160
|
machineconfig/scripts/python/fire_agents_load_balancer.py,sha256=mpqx3uaQdBXYieuvhdK-qsvLepf9oIMo3pwPj9mSEDI,1079
|
|
161
161
|
machineconfig/scripts/python/fire_jobs.py,sha256=7R4CO7wGRkG6akPLK6SMHr82_RdIeXIJNicCAdgh1ok,20262
|
|
162
162
|
machineconfig/scripts/python/fire_jobs_args_helper.py,sha256=5zqnYvBjXSLFUqMHg5fgI62YnDu7CpVC4RLmXUKpI2I,2050
|
|
163
|
-
machineconfig/scripts/python/fire_jobs_layout_helper.py,sha256=u0VssrTXOzH7km89yaL1K8T5DF83LRyllj1E_30N9ZQ,8083
|
|
164
163
|
machineconfig/scripts/python/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
165
164
|
machineconfig/scripts/python/ftpx.py,sha256=l_gdJS0QB2wVZErubtZvm4HJD9HZAJxSP68sbY73xwo,10278
|
|
166
165
|
machineconfig/scripts/python/get_zellij_cmd.py,sha256=e35-18hoXM9N3PFbvbizfkNY_-63iMicieWE3TbGcCQ,576
|
|
167
166
|
machineconfig/scripts/python/gh_models.py,sha256=3BLfW25mBRiPO5VKtVm-nMlKLv-PaZDw7mObajq6F6M,5538
|
|
168
|
-
machineconfig/scripts/python/interactive.py,sha256=
|
|
167
|
+
machineconfig/scripts/python/interactive.py,sha256=AM2jPIAHbXppVj-lA9iYcOTGWmOMWZtIaJIz9K5FxK8,11983
|
|
169
168
|
machineconfig/scripts/python/mount_nfs.py,sha256=c8pWXimDWdgCkSskcnPgT-8ESPosil6Cvy2hGSaIBJE,3359
|
|
170
169
|
machineconfig/scripts/python/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
|
|
171
170
|
machineconfig/scripts/python/mount_ssh.py,sha256=rGY2pgtlnWMi0Rrge1aCdjtfbULrj2cyaStDoX-y2w4,2236
|
|
@@ -177,6 +176,7 @@ machineconfig/scripts/python/repos_helper_clone.py,sha256=xW5YZEoNt3k7h9NIULhUhO
|
|
|
177
176
|
machineconfig/scripts/python/repos_helper_record.py,sha256=YEEQORfEiLddOIIgePo5eEkyQUFruFg3kc8npMvRL-o,10927
|
|
178
177
|
machineconfig/scripts/python/repos_helper_update.py,sha256=AYyKIB7eQ48yoYmFjydIhRI1lV39TBv_S4_LCa-oKuQ,11042
|
|
179
178
|
machineconfig/scripts/python/scheduler.py,sha256=rKhssuxkD697EY6qaV6CSdNhxpAQLDWO4fE8GMCQ9FA,3061
|
|
179
|
+
machineconfig/scripts/python/sessions.py,sha256=WT-WVmrYDe3u-4Gjjm_1Apq879qcOtM6TCR4Q-9JZys,8299
|
|
180
180
|
machineconfig/scripts/python/share_terminal.py,sha256=biuG35YiknTMVr3Mzs4bBZwEq53JcuBRlzMTp6eY90M,5009
|
|
181
181
|
machineconfig/scripts/python/snapshot.py,sha256=aDvKeoniZaeTSNv9zWBUajaj2yagAxVdfuvO1_tgq5Y,1026
|
|
182
182
|
machineconfig/scripts/python/start_slidev.py,sha256=U5ujAL7R5Gd5CzFReTsnF2SThjY91aFBg0Qz_MMl6U4,4573
|
|
@@ -361,7 +361,6 @@ machineconfig/setup_linux/nix/cli_installation.sh,sha256=AQ_wRmldeD1tPqCmU7qgz9Z
|
|
|
361
361
|
machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
|
|
362
362
|
machineconfig/setup_linux/others/openssh-server_add_pub_key.sh,sha256=UiJcD1o4UekKKtp5YJKRq135PpqdTLXy7M6HvQ-Qum4,1993
|
|
363
363
|
machineconfig/setup_linux/web_shortcuts/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
|
|
364
|
-
machineconfig/setup_linux/web_shortcuts/ascii_art.sh,sha256=RWcxH_Db7WHH37PclYmc92o6zAS557wGZxcYTuyTUZ0,3550
|
|
365
364
|
machineconfig/setup_linux/web_shortcuts/croshell.sh,sha256=X9-B1cVptbaFWaWTA-2ELNQx_2ktxu7ZVe48RvpCmkU,316
|
|
366
365
|
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=3bQr-0Gtly7lx6LPXtCUCs49jiCCozv3T1idHK678EY,463
|
|
367
366
|
machineconfig/setup_linux/web_shortcuts/ssh.sh,sha256=k6BAY-zAWsi1beOMiZODxw4VOjZCTABZu__gxSET1eU,1924
|
|
@@ -378,7 +377,7 @@ machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=rZZJamy3YxAeJh
|
|
|
378
377
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
379
378
|
machineconfig/utils/accessories.py,sha256=W_9dLzjwNTW5JQk_pe3B2ijQ1nA2-8Kdg2r7VBtzgQs,4340
|
|
380
379
|
machineconfig/utils/code.py,sha256=pKPHInKgXJWeACVbxuE7sMdYeZCbNttaYCsfonGhFfc,4464
|
|
381
|
-
machineconfig/utils/installer.py,sha256=
|
|
380
|
+
machineconfig/utils/installer.py,sha256=Aoq93RMOQFmv1iYJS90sxrBHeG_K6N5DtIthYffcIOU,9743
|
|
382
381
|
machineconfig/utils/io.py,sha256=ZXB3aataS1IZ_0WMcCRSmoN1nbkvEO-bWYcs-TpngqU,2872
|
|
383
382
|
machineconfig/utils/links.py,sha256=riNUrG8aGElRszdOPOic4M2AyOcpdcth_-y8JEiZpJ4,10253
|
|
384
383
|
machineconfig/utils/notifications.py,sha256=vvdsY5IX6XEiILTnt5lNyHxhCi0ljdGX2T_67VRfrG4,9009
|
|
@@ -398,15 +397,15 @@ machineconfig/utils/ai/generate_file_checklist.py,sha256=ajbmhcBToRugl75c_KZRq2X
|
|
|
398
397
|
machineconfig/utils/cloud/onedrive/setup_oauth.py,sha256=ZTVkqgrwbV_EoPvyT8dyOTUE0ur3BW4sa9o6QYtt5Bo,2341
|
|
399
398
|
machineconfig/utils/cloud/onedrive/transaction.py,sha256=m-aNcnWj_gfZVvJOSpkdIqjZxU_3nXx2CA-qKbQgP3I,26232
|
|
400
399
|
machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
401
|
-
machineconfig/utils/installer_utils/github_release_bulk.py,sha256=
|
|
402
|
-
machineconfig/utils/installer_utils/installer_abc.py,sha256=
|
|
400
|
+
machineconfig/utils/installer_utils/github_release_bulk.py,sha256=WJf_qZlF02SmIc6C7o1h4Gy4gAaJAfeAS8O9s2Itj-k,6535
|
|
401
|
+
machineconfig/utils/installer_utils/installer_abc.py,sha256=MRVfkjCPlPgCQQcSxXdVJMVnr_9CC3SQbFVDJxWy1zI,10813
|
|
403
402
|
machineconfig/utils/installer_utils/installer_class.py,sha256=6IQswaC9mxIdeaMG-rOt-vqyKGYibBRMvC0UglZ_3mI,20268
|
|
404
403
|
machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=pTxvLzIpD5RF508lUUBBkWcc4V1B10J4ylvVgVGkcM0,2037
|
|
405
|
-
machineconfig/utils/schemas/installer/installer_types.py,sha256=
|
|
404
|
+
machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoSpdmTIdgS9LS-RvE-QZ-D260tD3o,1214
|
|
406
405
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
407
406
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
408
|
-
machineconfig-4.
|
|
409
|
-
machineconfig-4.
|
|
410
|
-
machineconfig-4.
|
|
411
|
-
machineconfig-4.
|
|
412
|
-
machineconfig-4.
|
|
407
|
+
machineconfig-4.91.dist-info/METADATA,sha256=6itSuVawfwaAdJH3RfxSZVJddeSL434HDZ20XU63PBk,7061
|
|
408
|
+
machineconfig-4.91.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
409
|
+
machineconfig-4.91.dist-info/entry_points.txt,sha256=LcwklRJPY_uKBvStgtOJn5G_pmFCEdpgRNzUUc6twAQ,1134
|
|
410
|
+
machineconfig-4.91.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
411
|
+
machineconfig-4.91.dist-info/RECORD,,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
[console_scripts]
|
|
2
|
+
agents = machineconfig.scripts.python.agents:main_from_parser
|
|
2
3
|
choose_wezterm_theme = machineconfig.scripts.python.choose_wezterm_theme:main
|
|
3
4
|
cloud_copy = machineconfig.scripts.python.cloud_copy:arg_parser
|
|
4
5
|
cloud_mount = machineconfig.scripts.python.cloud_mount:arg_parser
|
|
@@ -13,5 +14,6 @@ kill_process = machineconfig.utils.procs:main
|
|
|
13
14
|
mount_nfs = machineconfig.scripts.python.mount_nfs:main
|
|
14
15
|
mount_nw_drive = machineconfig.scripts.python.mount_nw_drive:main
|
|
15
16
|
repos = machineconfig.scripts.python.repos:main_from_parser
|
|
17
|
+
sessions = machineconfig.scripts.python.sessions:main_from_parser
|
|
16
18
|
start_slidev = machineconfig.scripts.python.start_slidev:arg_parser
|
|
17
19
|
wifi_conn = machineconfig.scripts.python.wifi_conn:arg_parser
|