machineconfig 4.97__py3-none-any.whl → 4.99__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/cluster/remote/script_execution.py +1 -1
- machineconfig/jobs/installer/custom/gh.py +68 -39
- machineconfig/jobs/installer/custom/hx.py +1 -1
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py +1 -1
- machineconfig/jobs/installer/custom_dev/wezterm.py +68 -35
- machineconfig/jobs/installer/installer_data.json +1 -1
- machineconfig/jobs/installer/package_groups.py +2 -1
- machineconfig/jobs/python/python_ve_symlink.py +1 -1
- machineconfig/profile/create.py +59 -40
- machineconfig/profile/shell.py +1 -1
- machineconfig/scripts/python/cloud_copy.py +1 -1
- machineconfig/scripts/python/cloud_mount.py +1 -1
- machineconfig/scripts/python/cloud_repo_sync.py +1 -1
- machineconfig/scripts/python/croshell.py +1 -1
- machineconfig/scripts/python/devops.py +1 -1
- machineconfig/scripts/python/devops_add_identity.py +1 -1
- machineconfig/scripts/python/devops_add_ssh_key.py +1 -1
- machineconfig/scripts/python/devops_backup_retrieve.py +1 -1
- machineconfig/scripts/python/devops_update_repos.py +135 -65
- machineconfig/scripts/python/dotfile.py +41 -15
- machineconfig/scripts/python/fire_jobs.py +1 -1
- machineconfig/scripts/python/ftpx.py +101 -49
- machineconfig/scripts/python/helpers/helpers2.py +2 -2
- machineconfig/scripts/python/helpers/helpers4.py +1 -1
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +1 -1
- machineconfig/scripts/python/interactive.py +1 -1
- machineconfig/scripts/python/mount_nfs.py +13 -7
- machineconfig/scripts/python/mount_ssh.py +1 -1
- machineconfig/scripts/python/repos.py +7 -6
- machineconfig/scripts/python/repos_helper_action.py +1 -1
- machineconfig/scripts/python/repos_helper_clone.py +4 -4
- machineconfig/scripts/python/repos_helper_record.py +1 -1
- machineconfig/scripts/python/sessions.py +5 -1
- machineconfig/scripts/python/share_terminal.py +14 -7
- machineconfig/scripts/python/start_slidev.py +1 -1
- machineconfig/scripts/python/wsl_windows_transfer.py +1 -1
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +1 -1
- machineconfig/utils/code.py +1 -1
- machineconfig/utils/installer.py +1 -1
- machineconfig/{scripts/python/devops_devapps_install.py → utils/installer_utils/installer.py} +2 -3
- machineconfig/utils/installer_utils/installer_abc.py +1 -1
- machineconfig/utils/installer_utils/installer_class.py +1 -1
- machineconfig/utils/links.py +1 -1
- machineconfig/utils/path_extended.py +4 -2
- machineconfig/utils/path_helper.py +1 -1
- machineconfig/utils/scheduler.py +1 -1
- {machineconfig-4.97.dist-info → machineconfig-4.99.dist-info}/METADATA +1 -1
- {machineconfig-4.97.dist-info → machineconfig-4.99.dist-info}/RECORD +54 -55
- machineconfig/cluster/templates/utils.py +0 -51
- /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-4.97.dist-info → machineconfig-4.99.dist-info}/WHEEL +0 -0
- {machineconfig-4.97.dist-info → machineconfig-4.99.dist-info}/entry_points.txt +0 -0
- {machineconfig-4.97.dist-info → machineconfig-4.99.dist-info}/top_level.txt +0 -0
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
# ⏱️ Total execution time: {delta}
|
|
128
128
|
# 🔍 Error message: {params.error_message}
|
|
129
129
|
# 📂 Results located at: {res_folder.collapseuser().as_posix()}
|
|
130
|
-
#
|
|
130
|
+
# ════════════════════════════════════════════════════════════════
|
|
131
131
|
# """)
|
|
132
132
|
|
|
133
133
|
# # Capture exec_times as string for the readme
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
import platform
|
|
4
4
|
import subprocess
|
|
5
5
|
from typing import Optional
|
|
6
|
+
|
|
7
|
+
from rich.console import Console
|
|
8
|
+
from rich.panel import Panel
|
|
9
|
+
|
|
6
10
|
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
7
11
|
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
8
12
|
|
|
@@ -27,72 +31,97 @@ config_dict: InstallerData = {
|
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
|
|
34
|
+
console = Console()
|
|
35
|
+
|
|
36
|
+
|
|
30
37
|
def main(version: Optional[str]):
|
|
31
|
-
print(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
""
|
|
38
|
+
console.print(
|
|
39
|
+
Panel.fit(
|
|
40
|
+
"\n".join(
|
|
41
|
+
[
|
|
42
|
+
"[bold magenta]GitHub CLI Installer[/bold magenta]",
|
|
43
|
+
f"💻 Platform: {platform.system()}",
|
|
44
|
+
f"🔄 Version: {version or 'latest'}",
|
|
45
|
+
]
|
|
46
|
+
),
|
|
47
|
+
title="🔱 GitHub CLI",
|
|
48
|
+
border_style="magenta",
|
|
49
|
+
padding=(1, 2),
|
|
50
|
+
)
|
|
51
|
+
)
|
|
38
52
|
|
|
39
53
|
_ = version
|
|
40
54
|
inst = Installer(installer_data=config_dict)
|
|
41
|
-
print("
|
|
55
|
+
console.print("[bold cyan]📦 INSTALLATION | Installing GitHub CLI base package...[/bold cyan]")
|
|
42
56
|
inst.install(version=version)
|
|
43
57
|
|
|
44
|
-
print(
|
|
45
|
-
|
|
46
|
-
🤖 GITHUB COPILOT | Setting up GitHub Copilot CLI extension
|
|
47
|
-
|
|
48
|
-
""
|
|
58
|
+
console.print(
|
|
59
|
+
Panel.fit(
|
|
60
|
+
"🤖 GITHUB COPILOT | Setting up GitHub Copilot CLI extension",
|
|
61
|
+
title="Extension Setup",
|
|
62
|
+
border_style="cyan",
|
|
63
|
+
)
|
|
64
|
+
)
|
|
49
65
|
|
|
50
66
|
if platform.system() == "Windows":
|
|
51
|
-
print(
|
|
52
|
-
|
|
53
|
-
""
|
|
67
|
+
console.print(
|
|
68
|
+
Panel.fit(
|
|
69
|
+
"🪟 WINDOWS SETUP | Configuring GitHub CLI for Windows...",
|
|
70
|
+
border_style="blue",
|
|
71
|
+
title="Platform Setup",
|
|
72
|
+
)
|
|
73
|
+
)
|
|
54
74
|
program = "gh extension install github/gh-copilot"
|
|
55
75
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
56
76
|
system_name = "LINUX" if platform.system() == "Linux" else "MACOS"
|
|
57
|
-
print(
|
|
58
|
-
|
|
59
|
-
""
|
|
77
|
+
console.print(
|
|
78
|
+
Panel.fit(
|
|
79
|
+
f"🐧 {system_name} SETUP | Configuring GitHub CLI for {platform.system()}...",
|
|
80
|
+
border_style="blue",
|
|
81
|
+
title="Platform Setup",
|
|
82
|
+
)
|
|
83
|
+
)
|
|
60
84
|
program = """
|
|
61
85
|
gh extension install github/gh-copilot
|
|
62
86
|
"""
|
|
63
87
|
else:
|
|
64
88
|
error_msg = f"Unsupported platform: {platform.system()}"
|
|
65
|
-
print(
|
|
66
|
-
|
|
67
|
-
❌ ERROR | {error_msg}
|
|
68
|
-
|
|
69
|
-
""
|
|
89
|
+
console.print(
|
|
90
|
+
Panel.fit(
|
|
91
|
+
f"❌ ERROR | {error_msg}",
|
|
92
|
+
title="Unsupported Platform",
|
|
93
|
+
border_style="red",
|
|
94
|
+
)
|
|
95
|
+
)
|
|
70
96
|
raise NotImplementedError(error_msg)
|
|
71
97
|
|
|
72
98
|
program += """
|
|
73
99
|
gh auth login --with-token $HOME/dotfiles/creds/git/gh_token.txt
|
|
74
100
|
"""
|
|
75
|
-
print(""
|
|
76
|
-
🔐 AUTHENTICATION | Setting up GitHub authentication with token...
|
|
77
|
-
""")
|
|
101
|
+
console.print("[bold]🔐 AUTHENTICATION | Setting up GitHub authentication with token...[/bold]")
|
|
78
102
|
|
|
79
|
-
print(""
|
|
80
|
-
🔄 EXECUTING | Running GitHub Copilot extension installation and authentication...
|
|
81
|
-
""")
|
|
103
|
+
console.print("[bold]🔄 EXECUTING | Running GitHub Copilot extension installation and authentication...[/bold]")
|
|
82
104
|
try:
|
|
83
105
|
subprocess.run(program, shell=True, text=True, check=True)
|
|
84
|
-
print("✅ Command executed successfully")
|
|
106
|
+
console.print("[green]✅ Command executed successfully[/green]")
|
|
85
107
|
except subprocess.CalledProcessError as e:
|
|
86
|
-
print(f"❌ Command failed with exit code {e.returncode}")
|
|
108
|
+
console.print(f"❌ [red]Command failed with exit code {e.returncode}[/red]")
|
|
87
109
|
raise
|
|
88
110
|
|
|
89
|
-
print(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
""
|
|
111
|
+
console.print(
|
|
112
|
+
Panel.fit(
|
|
113
|
+
"\n".join(
|
|
114
|
+
[
|
|
115
|
+
"✅ SUCCESS | GitHub CLI installation completed",
|
|
116
|
+
"🚀 GitHub Copilot CLI extension installed",
|
|
117
|
+
"🔑 Authentication configured with token",
|
|
118
|
+
]
|
|
119
|
+
),
|
|
120
|
+
title="Installation Complete",
|
|
121
|
+
border_style="green",
|
|
122
|
+
padding=(1, 2),
|
|
123
|
+
)
|
|
124
|
+
)
|
|
96
125
|
|
|
97
126
|
|
|
98
127
|
if __name__ == "__main__":
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Installers do not add runtime files to the machine, hence this script.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
5
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
6
6
|
from machineconfig.utils.installer_utils.installer_abc import WINDOWS_INSTALL_PATH
|
|
7
7
|
from typing import Optional
|
|
8
8
|
import platform
|
|
@@ -6,7 +6,7 @@ from rich import box
|
|
|
6
6
|
from rich.console import Console
|
|
7
7
|
from rich.panel import Panel
|
|
8
8
|
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
9
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
9
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
# config_dict: InstallerData = {
|
|
@@ -4,37 +4,61 @@ import platform
|
|
|
4
4
|
import subprocess
|
|
5
5
|
from typing import Optional
|
|
6
6
|
|
|
7
|
+
from rich.console import Console
|
|
8
|
+
from rich.panel import Panel
|
|
9
|
+
|
|
7
10
|
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
8
11
|
|
|
9
12
|
|
|
10
13
|
# config_dict: InstallerData = {"appName": "Wezterm", "repoURL": "CMD", "doc": "Modern, GPU-accelerated terminal emulator"}
|
|
11
14
|
|
|
12
15
|
|
|
16
|
+
console = Console()
|
|
17
|
+
|
|
18
|
+
|
|
13
19
|
def main(installer_data: InstallerData, version: Optional[str]):
|
|
14
20
|
_ = installer_data
|
|
15
|
-
print(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
""
|
|
21
|
+
console.print(
|
|
22
|
+
Panel.fit(
|
|
23
|
+
"\n".join(
|
|
24
|
+
[
|
|
25
|
+
"🖥️ WEZTERM INSTALLER | Modern, GPU-accelerated terminal emulator",
|
|
26
|
+
f"💻 Platform: {platform.system()}",
|
|
27
|
+
f"🔄 Version: {version or 'latest'}",
|
|
28
|
+
]
|
|
29
|
+
),
|
|
30
|
+
title="WezTerm Setup",
|
|
31
|
+
border_style="magenta",
|
|
32
|
+
padding=(1, 2),
|
|
33
|
+
)
|
|
34
|
+
)
|
|
22
35
|
|
|
23
36
|
_ = version
|
|
24
37
|
if platform.system() == "Windows":
|
|
25
38
|
error_msg = "WezTerm installation not supported on Windows through this installer"
|
|
26
|
-
print(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
""
|
|
39
|
+
console.print(
|
|
40
|
+
Panel.fit(
|
|
41
|
+
"\n".join(
|
|
42
|
+
[
|
|
43
|
+
f"❌ ERROR | {error_msg}",
|
|
44
|
+
"💡 TIP: Please download and install manually from the WezTerm website",
|
|
45
|
+
]
|
|
46
|
+
),
|
|
47
|
+
title="Unsupported Platform",
|
|
48
|
+
border_style="red",
|
|
49
|
+
padding=(1, 2),
|
|
50
|
+
)
|
|
51
|
+
)
|
|
32
52
|
raise NotImplementedError(error_msg)
|
|
33
53
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
34
54
|
system_name = "LINUX" if platform.system() == "Linux" else "MACOS"
|
|
35
|
-
print(
|
|
36
|
-
|
|
37
|
-
""
|
|
55
|
+
console.print(
|
|
56
|
+
Panel.fit(
|
|
57
|
+
f"🐧 {system_name} SETUP | Installing WezTerm terminal emulator...",
|
|
58
|
+
title="Platform Setup",
|
|
59
|
+
border_style="cyan",
|
|
60
|
+
)
|
|
61
|
+
)
|
|
38
62
|
import machineconfig.jobs.installer as module
|
|
39
63
|
from pathlib import Path
|
|
40
64
|
|
|
@@ -44,31 +68,40 @@ def main(installer_data: InstallerData, version: Optional[str]):
|
|
|
44
68
|
program = "brew install --cask wezterm"
|
|
45
69
|
else:
|
|
46
70
|
error_msg = f"Unsupported platform: {platform.system()}"
|
|
47
|
-
print(
|
|
48
|
-
|
|
49
|
-
❌ ERROR | {error_msg}
|
|
50
|
-
|
|
51
|
-
""
|
|
71
|
+
console.print(
|
|
72
|
+
Panel.fit(
|
|
73
|
+
f"❌ ERROR | {error_msg}",
|
|
74
|
+
title="Unsupported Platform",
|
|
75
|
+
border_style="red",
|
|
76
|
+
)
|
|
77
|
+
)
|
|
52
78
|
raise NotImplementedError(error_msg)
|
|
53
79
|
|
|
54
|
-
print(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
""
|
|
80
|
+
console.print(
|
|
81
|
+
Panel(
|
|
82
|
+
"\n".join(
|
|
83
|
+
[
|
|
84
|
+
"ℹ️ INFO | WezTerm Features:",
|
|
85
|
+
"⚡ GPU-accelerated rendering",
|
|
86
|
+
"🎨 Full color emoji support",
|
|
87
|
+
"🧩 Multiplexing with panes and tabs",
|
|
88
|
+
"⚙️ Lua configuration",
|
|
89
|
+
"📦 Cross-platform support",
|
|
90
|
+
"🔌 Plugin system",
|
|
91
|
+
]
|
|
92
|
+
),
|
|
93
|
+
title="Why WezTerm?",
|
|
94
|
+
border_style="magenta",
|
|
95
|
+
padding=(1, 2),
|
|
96
|
+
)
|
|
97
|
+
)
|
|
65
98
|
|
|
66
|
-
print("🔄 EXECUTING | Running WezTerm installation...")
|
|
99
|
+
console.print("[bold]🔄 EXECUTING | Running WezTerm installation...[/bold]")
|
|
67
100
|
try:
|
|
68
101
|
subprocess.run(program, shell=True, text=True, check=True)
|
|
69
|
-
print("✅ WezTerm installation completed successfully")
|
|
102
|
+
console.print("[green]✅ WezTerm installation completed successfully[/green]")
|
|
70
103
|
except subprocess.CalledProcessError as e:
|
|
71
|
-
print(f"❌ Installation failed with exit code {e.returncode}")
|
|
104
|
+
console.print(f"❌ [red]Installation failed with exit code {e.returncode}[/red]")
|
|
72
105
|
raise
|
|
73
106
|
|
|
74
107
|
|
|
@@ -44,8 +44,9 @@ PACKAGES_BROWSERS = [
|
|
|
44
44
|
]
|
|
45
45
|
|
|
46
46
|
# Code Editors & IDEs - Code editing tools
|
|
47
|
+
# NOTE: Entries must match the corresponding `appName` in installer_data.json for filtering to work.
|
|
47
48
|
PACKAGES_CODE_EDITORS = [
|
|
48
|
-
"
|
|
49
|
+
"code",
|
|
49
50
|
"Cursor",
|
|
50
51
|
"lvim",
|
|
51
52
|
]
|
machineconfig/profile/create.py
CHANGED
|
@@ -5,8 +5,11 @@ This script Takes away all config files from the computer, place them in one dir
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
from rich.console import Console
|
|
8
|
+
from rich.panel import Panel
|
|
9
|
+
from rich.pretty import Pretty
|
|
10
|
+
from rich.text import Text
|
|
8
11
|
|
|
9
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
12
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
10
13
|
from machineconfig.utils.links import symlink_func, symlink_copy
|
|
11
14
|
from machineconfig.utils.options import choose_from_options
|
|
12
15
|
from machineconfig.utils.source_of_truth import LIBRARY_ROOT, REPO_ROOT
|
|
@@ -23,6 +26,8 @@ system = platform.system() # Linux or Windows
|
|
|
23
26
|
ERROR_LIST: list[Any] = [] # append to this after every exception captured.
|
|
24
27
|
SYSTEM = system.lower()
|
|
25
28
|
|
|
29
|
+
console = Console()
|
|
30
|
+
|
|
26
31
|
|
|
27
32
|
def get_other_systems(current_system: str) -> list[str]:
|
|
28
33
|
all_systems = ["linux", "windows", "darwin"]
|
|
@@ -76,17 +81,28 @@ def apply_mapper(choice: Optional[str] = None):
|
|
|
76
81
|
else:
|
|
77
82
|
is_admin = False
|
|
78
83
|
if not is_admin:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
warning_body = "\n".join([
|
|
85
|
+
"[bold yellow]Administrator privileges required[/]",
|
|
86
|
+
"Run the terminal as admin and try again to avoid repeated elevation prompts.",
|
|
87
|
+
])
|
|
88
|
+
console.print(
|
|
89
|
+
Panel.fit(
|
|
90
|
+
warning_body,
|
|
91
|
+
title="⚠️ Permission Needed",
|
|
92
|
+
border_style="yellow",
|
|
93
|
+
padding=(1, 2),
|
|
94
|
+
)
|
|
95
|
+
)
|
|
84
96
|
raise RuntimeError("Run terminal as admin and try again, otherwise, there will be too many popups for admin requests and no chance to terminate the program.")
|
|
85
97
|
elif choice_selected == "all":
|
|
86
|
-
print(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
""
|
|
98
|
+
console.print(
|
|
99
|
+
Panel(
|
|
100
|
+
Pretty(program_keys),
|
|
101
|
+
title="🔍 Processing All Program Keys",
|
|
102
|
+
border_style="cyan",
|
|
103
|
+
padding=(1, 2),
|
|
104
|
+
)
|
|
105
|
+
)
|
|
90
106
|
pass # i.e. program_keys = program_keys
|
|
91
107
|
else:
|
|
92
108
|
program_keys = [choice_selected]
|
|
@@ -94,7 +110,7 @@ def apply_mapper(choice: Optional[str] = None):
|
|
|
94
110
|
program_keys = choice_selected
|
|
95
111
|
|
|
96
112
|
for program_key in program_keys:
|
|
97
|
-
|
|
113
|
+
console.rule(f"🔄 Processing [bold]{program_key}[/] symlinks", style="cyan")
|
|
98
114
|
for file_key, file_map in symlink_mapper[program_key].items():
|
|
99
115
|
this = PathExtended(file_map["this"])
|
|
100
116
|
to_this = PathExtended(file_map["to_this"].replace("REPO_ROOT", REPO_ROOT.as_posix()).replace("LIBRARY_ROOT", LIBRARY_ROOT.as_posix()))
|
|
@@ -103,67 +119,70 @@ def apply_mapper(choice: Optional[str] = None):
|
|
|
103
119
|
for a_target in to_this.expanduser().search("*"):
|
|
104
120
|
symlink_func(this=this.joinpath(a_target.name), to_this=a_target, prioritize_to_this=prioritize_to_this)
|
|
105
121
|
except Exception as ex:
|
|
106
|
-
print(f"❌ Config error: {program_key} | {file_key} | missing keys 'this ==> to_this'. {ex}")
|
|
122
|
+
console.print(f"❌ [red]Config error[/red]: {program_key} | {file_key} | missing keys 'this ==> to_this'. {ex}")
|
|
107
123
|
if "copy" in file_map:
|
|
108
124
|
try:
|
|
109
125
|
symlink_copy(this=this, to_this=to_this, prioritize_to_this=prioritize_to_this)
|
|
110
126
|
except Exception as ex:
|
|
111
|
-
print(f"❌ Config error: {program_key} | {file_key} | {ex}")
|
|
127
|
+
console.print(f"❌ [red]Config error[/red]: {program_key} | {file_key} | {ex}")
|
|
112
128
|
else:
|
|
113
129
|
try:
|
|
114
130
|
symlink_func(this=this, to_this=to_this, prioritize_to_this=prioritize_to_this)
|
|
115
131
|
except Exception as ex:
|
|
116
|
-
print(f"❌ Config error: {program_key} | {file_key} | missing keys 'this ==> to_this'. {ex}")
|
|
132
|
+
console.print(f"❌ [red]Config error[/red]: {program_key} | {file_key} | missing keys 'this ==> to_this'. {ex}")
|
|
117
133
|
|
|
118
134
|
if program_key == "ssh" and system == "Linux": # permissions of ~/dotfiles/.ssh should be adjusted
|
|
119
135
|
try:
|
|
120
|
-
print("\n🔒 Setting secure permissions for SSH files...")
|
|
136
|
+
console.print("\n[bold]🔒 Setting secure permissions for SSH files...[/bold]")
|
|
121
137
|
subprocess.run("chmod 700 ~/.ssh/", check=True)
|
|
122
138
|
subprocess.run("chmod 700 ~/dotfiles/creds/.ssh/", check=True) # may require sudo
|
|
123
139
|
subprocess.run("chmod 600 ~/dotfiles/creds/.ssh/*", check=True)
|
|
124
|
-
print("✅ SSH permissions set successfully")
|
|
140
|
+
console.print("[green]✅ SSH permissions set successfully[/green]")
|
|
125
141
|
except Exception as e:
|
|
126
142
|
ERROR_LIST.append(e)
|
|
127
|
-
print(f"❌ Error setting SSH permissions: {e}")
|
|
143
|
+
console.print(f"❌ [red]Error setting SSH permissions[/red]: {e}")
|
|
128
144
|
|
|
129
145
|
if system == "Linux":
|
|
130
|
-
print("\n📜 Setting executable permissions for scripts...")
|
|
146
|
+
console.print("\n[bold]📜 Setting executable permissions for scripts...[/bold]")
|
|
131
147
|
subprocess.run(f"chmod +x {LIBRARY_ROOT.joinpath(f'scripts/{system.lower()}')} -R", shell=True, capture_output=True, text=True)
|
|
132
|
-
print("✅ Script permissions updated")
|
|
148
|
+
console.print("[green]✅ Script permissions updated[/green]")
|
|
133
149
|
|
|
134
150
|
if len(ERROR_LIST) > 0:
|
|
135
|
-
print(
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
151
|
+
console.print(
|
|
152
|
+
Panel(
|
|
153
|
+
Pretty(ERROR_LIST),
|
|
154
|
+
title="❗ Errors Encountered During Processing",
|
|
155
|
+
border_style="red",
|
|
156
|
+
padding=(1, 2),
|
|
157
|
+
)
|
|
158
|
+
)
|
|
142
159
|
else:
|
|
143
|
-
print(
|
|
144
|
-
|
|
145
|
-
✅ All symlinks created successfully!
|
|
146
|
-
|
|
147
|
-
""
|
|
160
|
+
console.print(
|
|
161
|
+
Panel.fit(
|
|
162
|
+
Text("✅ All symlinks created successfully!", justify="center"),
|
|
163
|
+
title="Symlink Creation Complete",
|
|
164
|
+
border_style="green",
|
|
165
|
+
)
|
|
166
|
+
)
|
|
148
167
|
|
|
149
168
|
|
|
150
169
|
def main_symlinks():
|
|
151
|
-
console
|
|
152
|
-
print("\n")
|
|
170
|
+
console.print("")
|
|
153
171
|
console.rule("[bold blue]🔗 CREATING SYMLINKS 🔗")
|
|
154
172
|
apply_mapper(choice="all")
|
|
155
173
|
|
|
156
174
|
|
|
157
175
|
def main_profile():
|
|
158
|
-
console
|
|
159
|
-
print("\n")
|
|
176
|
+
console.print("")
|
|
160
177
|
console.rule("[bold green]🐚 CREATING SHELL PROFILE 🐚")
|
|
161
178
|
create_default_shell_profile()
|
|
162
|
-
print(
|
|
163
|
-
|
|
164
|
-
✨ Configuration setup complete! ✨
|
|
165
|
-
|
|
166
|
-
""
|
|
179
|
+
console.print(
|
|
180
|
+
Panel.fit(
|
|
181
|
+
Text("✨ Configuration setup complete! ✨", justify="center"),
|
|
182
|
+
title="Profile Setup",
|
|
183
|
+
border_style="green",
|
|
184
|
+
)
|
|
185
|
+
)
|
|
167
186
|
|
|
168
187
|
|
|
169
188
|
if __name__ == "__main__":
|
machineconfig/profile/shell.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from machineconfig.utils.options import choose_from_options
|
|
4
4
|
from machineconfig.utils.io import read_ini
|
|
5
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
5
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
6
6
|
|
|
7
7
|
import platform
|
|
8
8
|
from typing import Optional, Annotated
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
import git
|
|
5
5
|
from machineconfig.utils.io import read_ini
|
|
6
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
6
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
7
7
|
from machineconfig.utils.terminal import Response
|
|
8
8
|
|
|
9
9
|
from machineconfig.scripts.python.helpers.repo_sync_helpers import fetch_dotfiles
|
|
@@ -6,7 +6,7 @@ croshell
|
|
|
6
6
|
|
|
7
7
|
from typing import Annotated, Optional
|
|
8
8
|
import typer
|
|
9
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
9
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
10
10
|
from machineconfig.utils.accessories import randstr
|
|
11
11
|
|
|
12
12
|
from machineconfig.utils.options import choose_from_options
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""devops with emojis"""
|
|
2
2
|
|
|
3
|
-
import machineconfig.
|
|
3
|
+
import machineconfig.utils.installer_utils.installer as installer_entry_point
|
|
4
4
|
import machineconfig.scripts.python.share_terminal as share_terminal
|
|
5
5
|
import machineconfig.scripts.python.repos as repos
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""ID"""
|
|
2
2
|
|
|
3
3
|
# from platform import system
|
|
4
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
4
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
5
5
|
from machineconfig.utils.options import choose_from_options
|
|
6
6
|
from rich.panel import Panel
|
|
7
7
|
from rich.text import Text
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from platform import system
|
|
4
4
|
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
5
5
|
from machineconfig.utils.options import choose_from_options
|
|
6
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
6
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
7
7
|
from rich.console import Console
|
|
8
8
|
from rich.panel import Panel
|
|
9
9
|
from rich import box # Import box
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# import subprocess
|
|
4
4
|
from machineconfig.utils.io import read_ini
|
|
5
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
5
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
6
6
|
from machineconfig.utils.source_of_truth import LIBRARY_ROOT, DEFAULTS_PATH
|
|
7
7
|
from machineconfig.utils.code import print_code
|
|
8
8
|
from machineconfig.utils.options import choose_cloud_interactively, choose_from_options
|