machineconfig 3.94__py3-none-any.whl → 3.95__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/profile/create.py +5 -1
- machineconfig/scripts/linux/devops +1 -1
- machineconfig/scripts/python/devops.py +126 -65
- machineconfig/setup_linux/web_shortcuts/interactive.py +267 -0
- machineconfig/setup_linux/web_shortcuts/interactive.sh +6 -152
- {machineconfig-3.94.dist-info → machineconfig-3.95.dist-info}/METADATA +2 -1
- {machineconfig-3.94.dist-info → machineconfig-3.95.dist-info}/RECORD +10 -9
- {machineconfig-3.94.dist-info → machineconfig-3.95.dist-info}/WHEEL +0 -0
- {machineconfig-3.94.dist-info → machineconfig-3.95.dist-info}/entry_points.txt +0 -0
- {machineconfig-3.94.dist-info → machineconfig-3.95.dist-info}/top_level.txt +0 -0
machineconfig/profile/create.py
CHANGED
|
@@ -147,11 +147,15 @@ def apply_mapper(choice: Optional[str] = None):
|
|
|
147
147
|
""")
|
|
148
148
|
|
|
149
149
|
|
|
150
|
-
def
|
|
150
|
+
def main_symlinks():
|
|
151
151
|
console = Console()
|
|
152
152
|
print("\n")
|
|
153
153
|
console.rule("[bold blue]🔗 CREATING SYMLINKS 🔗")
|
|
154
154
|
apply_mapper(choice="all")
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def main_profile():
|
|
158
|
+
console = Console()
|
|
155
159
|
print("\n")
|
|
156
160
|
console.rule("[bold green]🐚 CREATING SHELL PROFILE 🐚")
|
|
157
161
|
create_default_shell_profile()
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig devops
|
|
2
|
+
uv run --python 3.13 --no-dev --project $HOME/code/machineconfig devops "$@"
|
|
@@ -6,24 +6,131 @@ from platform import system
|
|
|
6
6
|
from typing import Optional, Literal, TypeAlias
|
|
7
7
|
from rich.console import Console
|
|
8
8
|
from rich.panel import Panel
|
|
9
|
+
import typer
|
|
9
10
|
|
|
10
11
|
console = Console()
|
|
12
|
+
app = typer.Typer(help="🛠️ DevOps operations with emojis", invoke_without_command=True, no_args_is_help=True)
|
|
11
13
|
|
|
12
14
|
BOX_WIDTH = 150 # width for box drawing
|
|
13
15
|
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
COMMANDS: TypeAlias = Literal["🔄 UPDATE essential repos", "⚙️ DEVAPPS install", "🔗 SYMLINKS, SHELL PROFILE, FONT, TERMINAL SETTINGS.", "🆕 SYMLINKS new", "🔑 SSH add pub key to this machine", "🗝️ SSH add identity (private key) to this machine", "🔐 SSH use key pair to connect two machines", "📡 SSH setup", "🐧 SSH setup wsl", "💾 BACKUP", "📥 RETRIEVE", "⏰ SCHEDULER"]
|
|
16
18
|
|
|
17
|
-
options_list = list(
|
|
19
|
+
options_list = list(COMMANDS.__args__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@app.command()
|
|
23
|
+
def update():
|
|
24
|
+
"""🔄 UPDATE essential repos"""
|
|
25
|
+
console.print(Panel("🔄 Updating essential repositories...", width=BOX_WIDTH, border_style="blue"))
|
|
26
|
+
import machineconfig.scripts.python.devops_update_repos as helper
|
|
27
|
+
helper.main()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@app.command()
|
|
31
|
+
def install():
|
|
32
|
+
"""⚙️ DEVAPPS install"""
|
|
33
|
+
console.print(Panel("⚙️ Installing development applications...", width=BOX_WIDTH, border_style="blue"))
|
|
34
|
+
import machineconfig.scripts.python.devops_devapps_install as helper
|
|
35
|
+
helper.main(which=None)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@app.command()
|
|
39
|
+
def symlinks():
|
|
40
|
+
"""🔗 SYMLINKS of dotfiles."""
|
|
41
|
+
console.print(Panel("🔗 Setting up symlinks, PATH, and shell profile...", width=BOX_WIDTH, border_style="blue"))
|
|
42
|
+
import machineconfig.profile.create as helper
|
|
43
|
+
helper.main_symlinks()
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@app.command()
|
|
47
|
+
def profile():
|
|
48
|
+
"""🔗 Update shell profile."""
|
|
49
|
+
console.print(Panel("🔗 Setting up symlinks, PATH, and shell profile...", width=BOX_WIDTH, border_style="blue"))
|
|
50
|
+
import machineconfig.profile.create as helper
|
|
51
|
+
helper.main_profile()
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@app.command()
|
|
55
|
+
def symlinks_new():
|
|
56
|
+
"""🆕 SYMLINKS new"""
|
|
57
|
+
console.print(Panel("🔄 Creating new symlinks...", width=BOX_WIDTH, border_style="blue"))
|
|
58
|
+
import machineconfig.jobs.python.python_ve_symlink as helper
|
|
59
|
+
helper.main()
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@app.command()
|
|
63
|
+
def ssh_add_key():
|
|
64
|
+
"""🔑 SSH add pub key to this machine"""
|
|
65
|
+
console.print(Panel("🔑 Adding public SSH key to this machine...", width=BOX_WIDTH, border_style="blue"))
|
|
66
|
+
import machineconfig.scripts.python.devops_add_ssh_key as helper
|
|
67
|
+
helper.main()
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@app.command()
|
|
71
|
+
def ssh_add_identity():
|
|
72
|
+
"""🗝️ SSH add identity (private key) to this machine"""
|
|
73
|
+
console.print(Panel("🗝️ Adding SSH identity (private key) to this machine...", width=BOX_WIDTH, border_style="blue"))
|
|
74
|
+
import machineconfig.scripts.python.devops_add_identity as helper
|
|
75
|
+
helper.main()
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@app.command()
|
|
79
|
+
def ssh_connect():
|
|
80
|
+
"""🔐 SSH use key pair to connect two machines"""
|
|
81
|
+
console.print(Panel("❌ ERROR: Not Implemented\nSSH key pair connection feature is not yet implemented", title_align="left", border_style="red", width=BOX_WIDTH))
|
|
82
|
+
raise NotImplementedError
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@app.command()
|
|
86
|
+
def ssh_setup():
|
|
87
|
+
"""📡 SSH setup"""
|
|
88
|
+
console.print(Panel("📡 Setting up SSH...", width=BOX_WIDTH, border_style="blue"))
|
|
89
|
+
_program_windows = """Invoke-WebRequest https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/openssh_all.ps1 | Invoke-Expression # https://github.com/thisismygitrepo.keys"""
|
|
90
|
+
_program_linux = """curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/openssh_all.sh | sudo bash # https://github.com/thisismygitrepo.keys"""
|
|
91
|
+
import subprocess
|
|
92
|
+
subprocess.run(_program_linux if system() == "Linux" else _program_windows, shell=True, check=True)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
@app.command()
|
|
96
|
+
def ssh_setup_wsl():
|
|
97
|
+
"""🐧 SSH setup wsl"""
|
|
98
|
+
console.print(Panel("🐧 Setting up SSH for WSL...", width=BOX_WIDTH, border_style="blue"))
|
|
99
|
+
import subprocess
|
|
100
|
+
subprocess.run("curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/openssh_wsl.sh | sudo bash", shell=True, check=True)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
@app.command()
|
|
104
|
+
def backup():
|
|
105
|
+
"""💾 BACKUP"""
|
|
106
|
+
console.print(Panel("💾 Creating backup...", width=BOX_WIDTH, border_style="blue"))
|
|
107
|
+
from machineconfig.scripts.python.devops_backup_retrieve import main_backup_retrieve
|
|
108
|
+
main_backup_retrieve(direction="BACKUP")
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
@app.command()
|
|
112
|
+
def retrieve():
|
|
113
|
+
"""📥 RETRIEVE"""
|
|
114
|
+
console.print(Panel("📥 Retrieving backup...", width=BOX_WIDTH, border_style="blue"))
|
|
115
|
+
from machineconfig.scripts.python.devops_backup_retrieve import main_backup_retrieve
|
|
116
|
+
main_backup_retrieve(direction="RETRIEVE")
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@app.command()
|
|
120
|
+
def scheduler():
|
|
121
|
+
"""⏰ SCHEDULER"""
|
|
122
|
+
console.print(Panel("⏰ Setting up scheduler...", width=BOX_WIDTH, border_style="blue"))
|
|
123
|
+
# from machineconfig.scripts.python.scheduler import main as helper
|
|
124
|
+
# helper()
|
|
18
125
|
|
|
19
126
|
|
|
20
127
|
def args_parser():
|
|
21
|
-
|
|
22
|
-
typer.run(main)
|
|
128
|
+
app()
|
|
23
129
|
|
|
24
130
|
|
|
25
|
-
|
|
26
|
-
|
|
131
|
+
@app.command()
|
|
132
|
+
def interactive(which: Optional[COMMANDS] = None):
|
|
133
|
+
"""🛠️ Interactive menu mode (legacy)"""
|
|
27
134
|
console.print(Panel("🚀 Initializing DevOps operation...", width=BOX_WIDTH, border_style="blue"))
|
|
28
135
|
options = options_list
|
|
29
136
|
if which is None:
|
|
@@ -38,75 +145,29 @@ def main(which: Optional[Options] = None):
|
|
|
38
145
|
console.print(Panel(f"🔧 SELECTED OPERATION\n{choice_key}", title_align="left", border_style="green", width=BOX_WIDTH))
|
|
39
146
|
|
|
40
147
|
if choice_key == "🔄 UPDATE essential repos":
|
|
41
|
-
|
|
42
|
-
import machineconfig.scripts.python.devops_update_repos as helper
|
|
43
|
-
|
|
44
|
-
helper.main()
|
|
148
|
+
update()
|
|
45
149
|
elif choice_key == "⚙️ DEVAPPS install":
|
|
46
|
-
|
|
47
|
-
import machineconfig.scripts.python.devops_devapps_install as helper
|
|
48
|
-
|
|
49
|
-
helper.main(which=None)
|
|
50
|
-
|
|
150
|
+
install()
|
|
51
151
|
elif choice_key == "🆕 SYMLINKS new":
|
|
52
|
-
|
|
53
|
-
import machineconfig.jobs.python.python_ve_symlink as helper
|
|
54
|
-
|
|
55
|
-
helper.main()
|
|
56
|
-
|
|
152
|
+
symlinks_new()
|
|
57
153
|
elif choice_key == "🔗 SYMLINKS, SHELL PROFILE, FONT, TERMINAL SETTINGS.":
|
|
58
|
-
|
|
59
|
-
import machineconfig.profile.create as helper
|
|
60
|
-
|
|
61
|
-
helper.main()
|
|
62
|
-
"echo '✅ done with symlinks'"
|
|
63
|
-
|
|
154
|
+
symlinks()
|
|
64
155
|
elif choice_key == "🔑 SSH add pub key to this machine":
|
|
65
|
-
|
|
66
|
-
import machineconfig.scripts.python.devops_add_ssh_key as helper
|
|
67
|
-
|
|
68
|
-
helper.main()
|
|
69
|
-
|
|
156
|
+
ssh_add_key()
|
|
70
157
|
elif choice_key == "🔐 SSH use key pair to connect two machines":
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
elif choice_key == "🗝️ SSH add identity (private key) to this machine": # so that you can SSH directly withuot pointing to identity key.
|
|
75
|
-
console.print(Panel("🗝️ Adding SSH identity (private key) to this machine...", width=BOX_WIDTH, border_style="blue"))
|
|
76
|
-
import machineconfig.scripts.python.devops_add_identity as helper
|
|
77
|
-
|
|
78
|
-
helper.main()
|
|
79
|
-
|
|
158
|
+
ssh_connect()
|
|
159
|
+
elif choice_key == "🗝️ SSH add identity (private key) to this machine":
|
|
160
|
+
ssh_add_identity()
|
|
80
161
|
elif choice_key == "📡 SSH setup":
|
|
81
|
-
|
|
82
|
-
_program_windows = """Invoke-WebRequest https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/openssh_all.ps1 | Invoke-Expression # https://github.com/thisismygitrepo.keys"""
|
|
83
|
-
_program_linux = """curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/openssh_all.sh | sudo bash # https://github.com/thisismygitrepo.keys"""
|
|
84
|
-
_program_linux if system() == "Linux" else _program_windows
|
|
85
|
-
import subprocess
|
|
86
|
-
|
|
87
|
-
subprocess.run(_program_linux if system() == "Linux" else _program_windows, shell=True, check=True)
|
|
88
|
-
|
|
162
|
+
ssh_setup()
|
|
89
163
|
elif choice_key == "🐧 SSH setup wsl":
|
|
90
|
-
|
|
91
|
-
"""curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/openssh_wsl.sh | sudo bash"""
|
|
92
|
-
|
|
164
|
+
ssh_setup_wsl()
|
|
93
165
|
elif choice_key == "💾 BACKUP":
|
|
94
|
-
|
|
95
|
-
from machineconfig.scripts.python.devops_backup_retrieve import main_backup_retrieve
|
|
96
|
-
|
|
97
|
-
main_backup_retrieve(direction="BACKUP")
|
|
98
|
-
|
|
166
|
+
backup()
|
|
99
167
|
elif choice_key == "📥 RETRIEVE":
|
|
100
|
-
|
|
101
|
-
from machineconfig.scripts.python.devops_backup_retrieve import main_backup_retrieve
|
|
102
|
-
|
|
103
|
-
main_backup_retrieve(direction="RETRIEVE")
|
|
104
|
-
|
|
168
|
+
retrieve()
|
|
105
169
|
elif choice_key == "⏰ SCHEDULER":
|
|
106
|
-
|
|
107
|
-
# from machineconfig.scripts.python.scheduler import main as helper
|
|
108
|
-
# helper()
|
|
109
|
-
|
|
170
|
+
scheduler()
|
|
110
171
|
else:
|
|
111
172
|
console.print(Panel("❌ ERROR: Invalid choice", title_align="left", border_style="red", width=BOX_WIDTH))
|
|
112
173
|
raise ValueError(f"Unimplemented choice: {choice_key}")
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Interactive Machine Configuration Setup Script
|
|
4
|
+
|
|
5
|
+
A Python version of the interactive installation script that uses questionary
|
|
6
|
+
for better user experience with checkbox selections.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# echo # 📧 Thunderbird Setup Note:
|
|
10
|
+
# Run after installing Thunderbird and starting it once:
|
|
11
|
+
# cd ~/AppData/Roaming/ThunderBird/Profiles
|
|
12
|
+
# $res = ls
|
|
13
|
+
# $name = $res[0].Name
|
|
14
|
+
# mv $backup_folder $name
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
import subprocess
|
|
21
|
+
import sys
|
|
22
|
+
|
|
23
|
+
import questionary
|
|
24
|
+
from questionary import Choice
|
|
25
|
+
from rich.console import Console
|
|
26
|
+
from rich.panel import Panel
|
|
27
|
+
from rich.text import Text
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
console = Console()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def run_command(command: str, description: str) -> bool:
|
|
34
|
+
"""Execute a shell command and return success status."""
|
|
35
|
+
console.print(f"\n🔧 {description}", style="bold cyan")
|
|
36
|
+
try:
|
|
37
|
+
result = subprocess.run(command, shell=True, check=True, capture_output=False)
|
|
38
|
+
return result.returncode == 0
|
|
39
|
+
except subprocess.CalledProcessError as e:
|
|
40
|
+
console.print(f"❌ Error executing command: {e}", style="bold red")
|
|
41
|
+
return False
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def display_header() -> None:
|
|
45
|
+
"""Display the script header."""
|
|
46
|
+
header_text = Text("MACHINE CONFIGURATION", style="bold magenta")
|
|
47
|
+
subtitle_text = Text("Interactive Installation Script", style="italic cyan")
|
|
48
|
+
console.print(Panel(
|
|
49
|
+
f"📦 {header_text}\n{subtitle_text}",
|
|
50
|
+
border_style="blue",
|
|
51
|
+
padding=(1, 2)
|
|
52
|
+
))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def display_completion_message() -> None:
|
|
56
|
+
"""Display completion message."""
|
|
57
|
+
completion_text = Text("INSTALLATION COMPLETE", style="bold green")
|
|
58
|
+
subtitle_text = Text("System setup finished successfully", style="italic green")
|
|
59
|
+
console.print(Panel(
|
|
60
|
+
f"✨ {completion_text}\n{subtitle_text}\n\n🎉 Your system has been configured successfully!\n🔄 You may need to reboot to apply all changes.",
|
|
61
|
+
border_style="green",
|
|
62
|
+
padding=(1, 2)
|
|
63
|
+
))
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def display_dotfiles_instructions() -> None:
|
|
67
|
+
"""Display instructions for dotfiles migration."""
|
|
68
|
+
header_text = Text("DOTFILES MIGRATION", style="bold yellow")
|
|
69
|
+
subtitle_text = Text("Configuration transfer options", style="italic yellow")
|
|
70
|
+
|
|
71
|
+
instructions = """🖱️ [bold blue]Method 1: USING MOUSE WITHOUT KB OR BROWSER SHARE[/bold blue]
|
|
72
|
+
On original machine, run:
|
|
73
|
+
[dim]cd ~/dotfiles/creds/msc
|
|
74
|
+
easy-sharing . --password rew --username al[/dim]
|
|
75
|
+
Then open brave on new machine to get MouseWithoutBorders password
|
|
76
|
+
|
|
77
|
+
🔐 [bold blue]Method 2: USING SSH[/bold blue]
|
|
78
|
+
FROM REMOTE, RUN:
|
|
79
|
+
[dim]fptx ~/dotfiles $USER@$(hostname):^ -z
|
|
80
|
+
# OR, using IP address if router has not yet found the hostname:
|
|
81
|
+
fptx ~/dotfiles $USER@$(hostname -I | awk '{print $1}'):^ -z[/dim]
|
|
82
|
+
|
|
83
|
+
☁️ [bold blue]Method 3: USING INTERNET SECURE SHARE[/bold blue]
|
|
84
|
+
[dim]cd ~
|
|
85
|
+
cloud_copy SHARE_URL . --config ss[/dim]
|
|
86
|
+
(requires symlinks to be created first)"""
|
|
87
|
+
|
|
88
|
+
console.print(Panel(
|
|
89
|
+
f"📂 {header_text}\n{subtitle_text}\n\n{instructions}",
|
|
90
|
+
border_style="yellow",
|
|
91
|
+
padding=(1, 2)
|
|
92
|
+
))
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def get_installation_choices() -> list[str]:
|
|
96
|
+
"""Get user choices for installation options."""
|
|
97
|
+
choices = [
|
|
98
|
+
Choice(value="install_apps", title="📥 Install Apps - Install base system applications", checked=False),
|
|
99
|
+
Choice(value="upgrade_system", title="🔄 Upgrade System Packages - Update all system packages", checked=False),
|
|
100
|
+
Choice(value="install_uv_repos", title="🐍 Install UV and Repos - Set up Python environment and repositories", checked=False),
|
|
101
|
+
Choice(value="install_ssh_server", title="🔒 Install SSH Server - Set up remote access", checked=False),
|
|
102
|
+
Choice(value="create_symlinks", title="🔗 Create Symlinks - Set up configuration symlinks (finish dotfiles transfer first)", checked=False),
|
|
103
|
+
Choice(value="install_cli_apps", title="⚡ Install CLI Apps - Command-line tools installation", checked=False),
|
|
104
|
+
Choice(value="install_dev_tools", title="🛠️ Install Development Tools - rust, libssl-dev, ffmpeg, wezterm, brave, code", checked=False),
|
|
105
|
+
Choice(value="retrieve_repositories", title="📚 Retrieve Repositories - Clone repositories to ~/code", checked=False),
|
|
106
|
+
Choice(value="retrieve_data", title="💾 Retrieve Data - Backup restoration", checked=False),
|
|
107
|
+
Choice(value="install_ascii_art", title="🎨 Install ASCII Art Libraries - Terminal visualization tools", checked=False),
|
|
108
|
+
]
|
|
109
|
+
|
|
110
|
+
selected = questionary.checkbox(
|
|
111
|
+
"Select the installation options you want to execute:",
|
|
112
|
+
choices=choices,
|
|
113
|
+
show_description=True,
|
|
114
|
+
).ask()
|
|
115
|
+
|
|
116
|
+
return selected or []
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def execute_installations(selected_options: list[str]) -> None:
|
|
120
|
+
"""Execute the selected installation options."""
|
|
121
|
+
# Always start with VE setup
|
|
122
|
+
console.print(Panel(
|
|
123
|
+
"🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Setting up base virtual environment[/italic]",
|
|
124
|
+
border_style="green"
|
|
125
|
+
))
|
|
126
|
+
run_command(
|
|
127
|
+
"curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/ve.sh | bash",
|
|
128
|
+
"Setting up base virtual environment"
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
if "install_apps" in selected_options:
|
|
132
|
+
console.print(Panel(
|
|
133
|
+
"📦 [bold blue]APPLICATIONS[/bold blue]\n[italic]Installing base system applications[/italic]",
|
|
134
|
+
border_style="blue"
|
|
135
|
+
))
|
|
136
|
+
run_command(
|
|
137
|
+
"curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/apps.sh | bash",
|
|
138
|
+
"Installing base system applications"
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
if "upgrade_system" in selected_options:
|
|
142
|
+
console.print(Panel(
|
|
143
|
+
"🔄 [bold magenta]SYSTEM UPDATE[/bold magenta]\n[italic]Package management[/italic]",
|
|
144
|
+
border_style="magenta"
|
|
145
|
+
))
|
|
146
|
+
run_command("sudo nala upgrade -y", "Upgrading system packages")
|
|
147
|
+
|
|
148
|
+
if "install_uv_repos" in selected_options:
|
|
149
|
+
console.print(Panel(
|
|
150
|
+
"🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]",
|
|
151
|
+
border_style="green"
|
|
152
|
+
))
|
|
153
|
+
run_command(
|
|
154
|
+
"curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/repos.sh | bash",
|
|
155
|
+
"Setting up Python environment and repositories"
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
if "install_ssh_server" in selected_options:
|
|
159
|
+
console.print(Panel(
|
|
160
|
+
"🔒 [bold red]SSH SERVER[/bold red]\n[italic]Remote access setup[/italic]",
|
|
161
|
+
border_style="red"
|
|
162
|
+
))
|
|
163
|
+
run_command("sudo nala install openssh-server -y", "Installing SSH server")
|
|
164
|
+
|
|
165
|
+
# Always display dotfiles instructions if symlinks are selected
|
|
166
|
+
if "create_symlinks" in selected_options:
|
|
167
|
+
display_dotfiles_instructions()
|
|
168
|
+
|
|
169
|
+
dotfiles_ready = questionary.confirm(
|
|
170
|
+
"📂 Have you finished copying dotfiles?",
|
|
171
|
+
default=True
|
|
172
|
+
).ask()
|
|
173
|
+
|
|
174
|
+
if dotfiles_ready:
|
|
175
|
+
console.print(Panel(
|
|
176
|
+
"🔗 [bold cyan]SYMLINK CREATION[/bold cyan]\n[italic]Configuration setup[/italic]",
|
|
177
|
+
border_style="cyan"
|
|
178
|
+
))
|
|
179
|
+
run_command(
|
|
180
|
+
"uv run --python 3.13 --with machineconfig python -m fire machineconfig.profile.create main_symlinks --choice=all",
|
|
181
|
+
"Creating symlinks"
|
|
182
|
+
)
|
|
183
|
+
run_command("sudo chmod 600 $HOME/.ssh/*", "Setting SSH key permissions")
|
|
184
|
+
run_command("sudo chmod 700 $HOME/.ssh", "Setting SSH directory permissions")
|
|
185
|
+
else:
|
|
186
|
+
console.print("⏭️ Skipping symlink creation - finish dotfiles transfer first", style="yellow")
|
|
187
|
+
|
|
188
|
+
if "install_cli_apps" in selected_options:
|
|
189
|
+
console.print(Panel(
|
|
190
|
+
"⚡ [bold bright_yellow]CLI APPLICATIONS[/bold bright_yellow]\n[italic]Command-line tools installation[/italic]",
|
|
191
|
+
border_style="bright_yellow"
|
|
192
|
+
))
|
|
193
|
+
run_command(
|
|
194
|
+
"uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_devapps_install main --which=essentials",
|
|
195
|
+
"Installing CLI applications"
|
|
196
|
+
)
|
|
197
|
+
run_command(". $HOME/.bashrc", "Reloading bash configuration")
|
|
198
|
+
|
|
199
|
+
if "install_dev_tools" in selected_options:
|
|
200
|
+
console.print(Panel(
|
|
201
|
+
"🛠️ [bold bright_blue]DEVELOPMENT TOOLS[/bold bright_blue]\n[italic]Software development packages[/italic]",
|
|
202
|
+
border_style="bright_blue"
|
|
203
|
+
))
|
|
204
|
+
run_command(
|
|
205
|
+
"(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) || true",
|
|
206
|
+
"Installing Rust toolchain"
|
|
207
|
+
)
|
|
208
|
+
run_command("sudo nala install libssl-dev -y", "Installing libssl-dev")
|
|
209
|
+
run_command("sudo nala install ffmpeg -y", "Installing ffmpeg")
|
|
210
|
+
run_command(
|
|
211
|
+
"uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_devapps_install main --which=wezterm,brave,code",
|
|
212
|
+
"Installing development applications"
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
if "retrieve_repositories" in selected_options:
|
|
216
|
+
console.print(Panel(
|
|
217
|
+
"📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]",
|
|
218
|
+
border_style="bright_magenta"
|
|
219
|
+
))
|
|
220
|
+
run_command("repos ~/code --clone --cloud odg1", "Cloning repositories")
|
|
221
|
+
|
|
222
|
+
if "retrieve_data" in selected_options:
|
|
223
|
+
console.print(Panel(
|
|
224
|
+
"💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]",
|
|
225
|
+
border_style="bright_cyan"
|
|
226
|
+
))
|
|
227
|
+
run_command(
|
|
228
|
+
"uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_backup_retrieve main --direction=RETRIEVE",
|
|
229
|
+
"Retrieving backup data"
|
|
230
|
+
)
|
|
231
|
+
|
|
232
|
+
if "install_ascii_art" in selected_options:
|
|
233
|
+
console.print(Panel(
|
|
234
|
+
"🎨 [bold bright_green]ASCII ART[/bold bright_green]\n[italic]Terminal visualization tools[/italic]",
|
|
235
|
+
border_style="bright_green"
|
|
236
|
+
))
|
|
237
|
+
run_command("curl bit.ly/cfgasciiartlinux -L | sudo bash", "Installing ASCII art libraries")
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
def main() -> None:
|
|
241
|
+
"""Main function to run the interactive installation."""
|
|
242
|
+
display_header()
|
|
243
|
+
|
|
244
|
+
# Get user selections
|
|
245
|
+
selected_options = get_installation_choices()
|
|
246
|
+
|
|
247
|
+
if not selected_options:
|
|
248
|
+
console.print("❌ No options selected. Exiting...", style="bold red")
|
|
249
|
+
sys.exit(0)
|
|
250
|
+
|
|
251
|
+
console.print(f"\n✅ Selected options: {', '.join(selected_options)}", style="bold green")
|
|
252
|
+
|
|
253
|
+
# Confirm before proceeding
|
|
254
|
+
proceed = questionary.confirm("🚀 Proceed with installation?", default=True).ask()
|
|
255
|
+
|
|
256
|
+
if not proceed:
|
|
257
|
+
console.print("❌ Installation cancelled.", style="bold red")
|
|
258
|
+
sys.exit(0)
|
|
259
|
+
|
|
260
|
+
# Execute installations
|
|
261
|
+
execute_installations(selected_options)
|
|
262
|
+
|
|
263
|
+
display_completion_message()
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
if __name__ == "__main__":
|
|
267
|
+
main()
|
|
@@ -1,68 +1,15 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
|
-
echo """
|
|
3
|
+
echo """
|
|
4
|
+
=======================================================================
|
|
4
5
|
📦 MACHINE CONFIGURATION | Interactive Installation Script
|
|
5
|
-
|
|
6
|
-
"""
|
|
6
|
+
======================================================================="""
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/ve.sh | bash
|
|
9
|
+
$HOME/.local/bin/uv run --python 3.13 --with machineconfig ia
|
|
9
10
|
|
|
10
|
-
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
11
|
-
echo """ #=======================================================================
|
|
12
|
-
📦 APPLICATIONS | Installing base system applications
|
|
13
|
-
#=======================================================================
|
|
14
|
-
"""
|
|
15
|
-
curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/apps.sh | bash
|
|
16
|
-
else
|
|
17
|
-
echo """ ⏭️ Skipping applications installation
|
|
18
|
-
"""
|
|
19
|
-
fi
|
|
20
11
|
|
|
21
|
-
echo """#=======================================================================
|
|
22
|
-
🔄 SYSTEM UPDATE | Package management
|
|
23
|
-
#=======================================================================
|
|
24
|
-
"""
|
|
25
|
-
read -p "🔄 Upgrade system packages [y]/n? " choice
|
|
26
12
|
|
|
27
|
-
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
28
|
-
echo """ 📦 Upgrading system packages...
|
|
29
|
-
"""
|
|
30
|
-
sudo nala upgrade -y
|
|
31
|
-
else
|
|
32
|
-
echo """ ⏭️ Skipping system upgrade
|
|
33
|
-
"""
|
|
34
|
-
fi
|
|
35
|
-
|
|
36
|
-
echo """#=======================================================================
|
|
37
|
-
🐍 PYTHON ENVIRONMENT | Virtual environment setup
|
|
38
|
-
#=======================================================================
|
|
39
|
-
"""
|
|
40
|
-
read -p "🐍 Install UV and repos [y]/n? " choice
|
|
41
|
-
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
42
|
-
echo """ 🔧 Setting up Python environment...
|
|
43
|
-
"""
|
|
44
|
-
curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/ve.sh | bash
|
|
45
|
-
curl https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/repos.sh | bash
|
|
46
|
-
else
|
|
47
|
-
echo """ ⏭️ Skipping virtual environment setup
|
|
48
|
-
"""
|
|
49
|
-
fi
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
echo """#=======================================================================
|
|
53
|
-
🔒 SSH SERVER | Remote access setup
|
|
54
|
-
#=======================================================================
|
|
55
|
-
"""
|
|
56
|
-
read -p "🔒 Install SSH Server [y]/n? " choice
|
|
57
|
-
choice=${choice:-y}
|
|
58
|
-
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
59
|
-
echo """ 🔧 Installing SSH server...
|
|
60
|
-
"""
|
|
61
|
-
sudo nala install openssh-server -y
|
|
62
|
-
else
|
|
63
|
-
echo """ ⏭️ Skipping SSH server installation
|
|
64
|
-
"""
|
|
65
|
-
fi
|
|
66
13
|
|
|
67
14
|
echo """#=======================================================================
|
|
68
15
|
📂 DOTFILES MIGRATION | Configuration transfer options
|
|
@@ -101,7 +48,7 @@ choice=${choice:-y}
|
|
|
101
48
|
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
102
49
|
echo """ 🔧 Creating symlinks and setting permissions...
|
|
103
50
|
"""
|
|
104
|
-
uv run --python 3.13 --with machineconfig python -m fire machineconfig.profile.create
|
|
51
|
+
uv run --python 3.13 --with machineconfig python -m fire machineconfig.profile.create main_symlinks --choice=all
|
|
105
52
|
sudo chmod 600 $HOME/.ssh/*
|
|
106
53
|
sudo chmod 700 $HOME/.ssh
|
|
107
54
|
else
|
|
@@ -109,96 +56,3 @@ else
|
|
|
109
56
|
"""
|
|
110
57
|
fi
|
|
111
58
|
|
|
112
|
-
echo """#=======================================================================
|
|
113
|
-
⚡ CLI APPLICATIONS | Command-line tools installation
|
|
114
|
-
#=======================================================================
|
|
115
|
-
"""
|
|
116
|
-
read -p "⚡ Install CLI Apps [y]/n? " choice
|
|
117
|
-
choice=${choice:-y}
|
|
118
|
-
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
119
|
-
echo """ 🔧 Installing CLI applications...
|
|
120
|
-
"""
|
|
121
|
-
uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_devapps_install main --which=essentials
|
|
122
|
-
. $HOME/.bashrc
|
|
123
|
-
else
|
|
124
|
-
echo """ ⏭️ Skipping CLI apps installation
|
|
125
|
-
"""
|
|
126
|
-
fi
|
|
127
|
-
|
|
128
|
-
echo """#=======================================================================
|
|
129
|
-
🛠️ DEVELOPMENT TOOLS | Software development packages
|
|
130
|
-
#=======================================================================
|
|
131
|
-
"""
|
|
132
|
-
read -p "🛠️ Install Development Tools (rust, libssql-dev, ffmpeg, wezterm, brave, code) [y]/n? " choice
|
|
133
|
-
choice=${choice:-y}
|
|
134
|
-
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
135
|
-
echo """ 🔧 Installing development tools... """
|
|
136
|
-
(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) || true
|
|
137
|
-
sudo nala install libssl-dev -y
|
|
138
|
-
sudo nala install ffmpeg -y
|
|
139
|
-
uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_devapps_install main --which=wezterm,brave,code
|
|
140
|
-
else
|
|
141
|
-
echo """ ⏭️ Skipping development tools installation
|
|
142
|
-
"""
|
|
143
|
-
fi
|
|
144
|
-
|
|
145
|
-
echo """#=======================================================================
|
|
146
|
-
📚 REPOSITORIES | Project code retrieval
|
|
147
|
-
#=======================================================================
|
|
148
|
-
"""
|
|
149
|
-
read -p "📚 Retrieve Repositories to ~/code [y]/n? " choice
|
|
150
|
-
choice=${choice:-y}
|
|
151
|
-
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
152
|
-
echo """ 🔄 Cloning repositories...
|
|
153
|
-
"""
|
|
154
|
-
repos ~/code --clone --cloud odg1
|
|
155
|
-
else
|
|
156
|
-
echo """ ⏭️ Skipping repository retrieval
|
|
157
|
-
"""
|
|
158
|
-
fi
|
|
159
|
-
|
|
160
|
-
echo """#=======================================================================
|
|
161
|
-
💾 DATA RETRIEVAL | Backup restoration
|
|
162
|
-
#=======================================================================
|
|
163
|
-
"""
|
|
164
|
-
read -p "💾 Retrieve Data [y]/n? " choice
|
|
165
|
-
choice=${choice:-y}
|
|
166
|
-
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
167
|
-
echo """ 🔄 Retrieving data...
|
|
168
|
-
"""
|
|
169
|
-
uv run --python 3.13 --with machineconfig python -m fire machineconfig.scripts.python.devops_backup_retrieve main --direction=RETRIEVE
|
|
170
|
-
else
|
|
171
|
-
echo """ ⏭️ Skipping data retrieval
|
|
172
|
-
"""
|
|
173
|
-
fi
|
|
174
|
-
|
|
175
|
-
echo """#=======================================================================
|
|
176
|
-
🎨 ASCII ART | Terminal visualization tools
|
|
177
|
-
#=======================================================================
|
|
178
|
-
"""
|
|
179
|
-
read -p "🎨 Install ASCII Art Libraries [y]/n? " choice
|
|
180
|
-
choice=${choice:-y}
|
|
181
|
-
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
|
|
182
|
-
echo """ 🎨 Installing ASCII art libraries...
|
|
183
|
-
"""
|
|
184
|
-
curl bit.ly/cfgasciiartlinux -L | sudo bash
|
|
185
|
-
else
|
|
186
|
-
echo """ ⏭️ Skipping ASCII art installation
|
|
187
|
-
"""
|
|
188
|
-
fi
|
|
189
|
-
|
|
190
|
-
# echo """# 📧 Thunderbird Setup Note:
|
|
191
|
-
# Run after installing Thunderbird and starting it once:
|
|
192
|
-
# cd ~/AppData/Roaming/ThunderBird/Profiles
|
|
193
|
-
# \$res = ls
|
|
194
|
-
# \$name = \$res[0].Name
|
|
195
|
-
# mv \$backup_folder \$name
|
|
196
|
-
# """
|
|
197
|
-
|
|
198
|
-
echo """#=======================================================================
|
|
199
|
-
✨ INSTALLATION COMPLETE | System setup finished successfully
|
|
200
|
-
#=======================================================================
|
|
201
|
-
|
|
202
|
-
🎉 Your system has been configured successfully!
|
|
203
|
-
🔄 You may need to reboot to apply all changes.
|
|
204
|
-
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: machineconfig
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.95
|
|
4
4
|
Summary: Dotfiles management package
|
|
5
5
|
Author-email: Alex Al-Saffar <programmer@usa.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -25,6 +25,7 @@ Requires-Dist: pyfzf>=0.3.1
|
|
|
25
25
|
Requires-Dist: rclone-python>=0.1.23
|
|
26
26
|
Requires-Dist: pyjson5>=1.6.9
|
|
27
27
|
Requires-Dist: typer-slim>=0.19.2
|
|
28
|
+
Requires-Dist: questionary>=2.1.1
|
|
28
29
|
Provides-Extra: windows
|
|
29
30
|
Requires-Dist: pywin32; extra == "windows"
|
|
30
31
|
Provides-Extra: docs
|
|
@@ -91,7 +91,7 @@ machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1,sha256=-7pElYi
|
|
|
91
91
|
machineconfig/jobs/windows/msc/cli_agents.bat,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
92
92
|
machineconfig/jobs/windows/msc/cli_agents.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
93
|
machineconfig/profile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
|
-
machineconfig/profile/create.py,sha256=
|
|
94
|
+
machineconfig/profile/create.py,sha256=R-k5lIQqnhQfAO4vBfGhkprf9_ePl4Zb9W26jgKcvXQ,6498
|
|
95
95
|
machineconfig/profile/shell.py,sha256=rseM8irNSv8xAUj8pDucjCuuqJZoNtpSgKt9JOntoM0,9215
|
|
96
96
|
machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
|
|
97
97
|
machineconfig/profile/records/linux/apps_summary_report.csv,sha256=pw9djvaRUPalKDLn2sl3odcbD2_Zx3aEupsQ8UPfaaY,2738
|
|
@@ -106,7 +106,7 @@ machineconfig/scripts/linux/cloud_mount,sha256=QnDUPUv9q3V14PONOwM4tAPHqOopF_uvj
|
|
|
106
106
|
machineconfig/scripts/linux/cloud_repo_sync,sha256=cUv2R7-SApsv6JZjESieg4uMZAjQP1G4egvrHMQsVrI,106
|
|
107
107
|
machineconfig/scripts/linux/cloud_sync,sha256=Tf5yr9D5Ca5tiIpbUBE3QDqZF22tsh32XedW-aHZ-lQ,96
|
|
108
108
|
machineconfig/scripts/linux/croshell,sha256=UZWGufTwtzCllRXrQ14YwCuAEZs--a1lJBW_kuNLhYg,100
|
|
109
|
-
machineconfig/scripts/linux/devops,sha256=
|
|
109
|
+
machineconfig/scripts/linux/devops,sha256=hQGs_cuu19dxeTB3CqZTJ6miZDwugfwh4NgrSlhWtOg,96
|
|
110
110
|
machineconfig/scripts/linux/fire,sha256=BXc8arF2ViX1YmY3DdqNGTh76tXfCuys2SrFLPO2GFg,94
|
|
111
111
|
machineconfig/scripts/linux/fire_agents,sha256=xB33C8weH0-l-3iuFyPR9wuGwDtSnBZIiAxuajAm5Os,102
|
|
112
112
|
machineconfig/scripts/linux/ftpx,sha256=wTZparnibEm3TTgc6gQyG6ZkngZm4cxOZVkYMDh5Zyg,95
|
|
@@ -144,7 +144,7 @@ machineconfig/scripts/python/cloud_mount.py,sha256=RFMzRUep2D5HtVXANIi-pab3EkI-W
|
|
|
144
144
|
machineconfig/scripts/python/cloud_repo_sync.py,sha256=GBhdUu9BJwhLYmhxxtvqJGLy7xKdQcnH9kkL4jcbzEE,9502
|
|
145
145
|
machineconfig/scripts/python/cloud_sync.py,sha256=RWGpAfJ9fnN18yNBSgN44dzA38Hmd4879JL5r2pcyrM,3514
|
|
146
146
|
machineconfig/scripts/python/croshell.py,sha256=shv0FmFfD2Br0EVE-zvpt4i5Tl8kliLlIvxkx0umGiA,8954
|
|
147
|
-
machineconfig/scripts/python/devops.py,sha256=
|
|
147
|
+
machineconfig/scripts/python/devops.py,sha256=NuCnXAyJ3VDx-wUO7CLvSDbqFiyMqxCb3_XINAcLe0I,6862
|
|
148
148
|
machineconfig/scripts/python/devops_add_identity.py,sha256=JfN3ZrYMCgmt4ks_VCfnV9BIIHAsOYO3E0W0wZ15FR8,3791
|
|
149
149
|
machineconfig/scripts/python/devops_add_ssh_key.py,sha256=KaoX83KltBsmutfKhSfZjd7nP_R1hJ2OLAWRhbswO7o,6889
|
|
150
150
|
machineconfig/scripts/python/devops_backup_retrieve.py,sha256=jZe5Vki7E2GCMG8hvqUZeOONFC4cNzISoGzq_dMG4GA,5601
|
|
@@ -358,7 +358,8 @@ machineconfig/setup_linux/others/openssh-server_add_pub_key.sh,sha256=UiJcD1o4Ue
|
|
|
358
358
|
machineconfig/setup_linux/web_shortcuts/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
|
|
359
359
|
machineconfig/setup_linux/web_shortcuts/ascii_art.sh,sha256=RWcxH_Db7WHH37PclYmc92o6zAS557wGZxcYTuyTUZ0,3550
|
|
360
360
|
machineconfig/setup_linux/web_shortcuts/croshell.sh,sha256=X9-B1cVptbaFWaWTA-2ELNQx_2ktxu7ZVe48RvpCmkU,316
|
|
361
|
-
machineconfig/setup_linux/web_shortcuts/interactive.
|
|
361
|
+
machineconfig/setup_linux/web_shortcuts/interactive.py,sha256=z7-ZymdiQ5X3LLcB9KVxAsWqKsRf6R4e_gTAHXtbRQc,11189
|
|
362
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=DOv0iYsDgavKrBkzTZm6hcuwfYok_isg6KDNr5h3fjk,2178
|
|
362
363
|
machineconfig/setup_linux/web_shortcuts/ssh.sh,sha256=k6BAY-zAWsi1beOMiZODxw4VOjZCTABZu__gxSET1eU,1924
|
|
363
364
|
machineconfig/setup_windows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
364
365
|
machineconfig/setup_windows/others/docker.ps1,sha256=M8NfsSxH8YlmY92J4rSe1xWOwTW8IFrdgb8cI8Riu2E,311
|
|
@@ -400,8 +401,8 @@ machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=CCs5ebomW1ac
|
|
|
400
401
|
machineconfig/utils/schemas/installer/installer_types.py,sha256=DLagmIe0G5-xg7HZ9VrlFCDk1gIbwvX7O4gZjwq0wh0,1326
|
|
401
402
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=M1ZFCz_kjRZPhxM19rIYUDR5lDDpwa09odR_ihtIFq0,1932
|
|
402
403
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
403
|
-
machineconfig-3.
|
|
404
|
-
machineconfig-3.
|
|
405
|
-
machineconfig-3.
|
|
406
|
-
machineconfig-3.
|
|
407
|
-
machineconfig-3.
|
|
404
|
+
machineconfig-3.95.dist-info/METADATA,sha256=hl-2jtRwoZ8Zbv9_cXqrzcoH_1_HMQ5ytRfxhI0dRoc,7032
|
|
405
|
+
machineconfig-3.95.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
406
|
+
machineconfig-3.95.dist-info/entry_points.txt,sha256=rSx_9gXd2stziS1OkNy__jF647hrRxRiF6zolLUELc4,1153
|
|
407
|
+
machineconfig-3.95.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
408
|
+
machineconfig-3.95.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|