machineconfig 6.77__py3-none-any.whl → 6.79__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/boxes.py +61 -0
- machineconfig/jobs/installer/installer_data.json +43 -9
- machineconfig/jobs/installer/package_groups.py +6 -5
- machineconfig/scripts/linux/mcfgs +29 -5
- machineconfig/scripts/python/ai/initai.py +0 -18
- machineconfig/scripts/python/croshell.py +6 -6
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/fire_jobs.py +15 -1
- machineconfig/scripts/python/helpers_devops/cli_config.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -7
- machineconfig/scripts/python/helpers_devops/cli_self.py +3 -3
- machineconfig/scripts/python/helpers_devops/cli_utils.py +88 -9
- machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py +15 -1
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +1 -0
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +1 -1
- machineconfig/scripts/python/nw/mount_nfs +1 -1
- machineconfig/scripts/python/utils.py +10 -4
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
- machineconfig/setup_linux/web_shortcuts/interactive.sh +1 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +1 -1
- machineconfig/utils/code.py +1 -1
- machineconfig/utils/meta.py +10 -3
- machineconfig/utils/ssh.py +1 -1
- machineconfig/utils/upgrade_packages.py +1 -4
- {machineconfig-6.77.dist-info → machineconfig-6.79.dist-info}/METADATA +1 -1
- {machineconfig-6.77.dist-info → machineconfig-6.79.dist-info}/RECORD +37 -42
- {machineconfig-6.77.dist-info → machineconfig-6.79.dist-info}/entry_points.txt +1 -1
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -16
- machineconfig/jobs/python/__init__.py +0 -0
- machineconfig/jobs/python/python_ve_symlink.py +0 -37
- machineconfig/jobs/python/vscode/api.py +0 -57
- machineconfig/jobs/windows/msc/cli_agents.bat +0 -0
- machineconfig/jobs/windows/msc/cli_agents.ps1 +0 -0
- /machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +0 -0
- /machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +0 -0
- /machineconfig/jobs/{windows/archive → installer/powershell_scripts}/archive_pygraphviz.ps1 +0 -0
- /machineconfig/jobs/{windows/archive → installer/powershell_scripts}/openssh-server_add_key.ps1 +0 -0
- /machineconfig/jobs/{windows/archive → installer/powershell_scripts}/openssh-server_copy-ssh-id.ps1 +0 -0
- /machineconfig/scripts/python/{entry.py → mcfg.py} +0 -0
- /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
- /machineconfig/setup_linux/{nix → others}/cli_installation.sh +0 -0
- {machineconfig-6.77.dist-info → machineconfig-6.79.dist-info}/WHEEL +0 -0
- {machineconfig-6.77.dist-info → machineconfig-6.79.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import platform
|
|
4
|
+
from typing import Optional
|
|
5
|
+
|
|
6
|
+
from rich.console import Console
|
|
7
|
+
from rich.panel import Panel
|
|
8
|
+
from machineconfig.utils.installer_utils.installer_abc import WINDOWS_INSTALL_PATH
|
|
9
|
+
|
|
10
|
+
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
11
|
+
from machineconfig.utils.schemas.installer.installer_types import InstallerData
|
|
12
|
+
|
|
13
|
+
installer_data_modified: InstallerData = {
|
|
14
|
+
"appName": "boxes",
|
|
15
|
+
"repoURL": "https://github.com/ascii-boxes/boxes",
|
|
16
|
+
"doc": "📦 ASCI draws boxes around text.",
|
|
17
|
+
"fileNamePattern": {
|
|
18
|
+
"amd64": {
|
|
19
|
+
"windows": "boxes-{version}-intel-win32.zip",
|
|
20
|
+
"linux": None,
|
|
21
|
+
"macos": None
|
|
22
|
+
},
|
|
23
|
+
"arm64": {
|
|
24
|
+
"linux": None,
|
|
25
|
+
"macos": None,
|
|
26
|
+
"windows": None
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
def main(installer_data: InstallerData, version: Optional[str] = None) -> None:
|
|
32
|
+
console = Console()
|
|
33
|
+
_ = installer_data
|
|
34
|
+
console.print(
|
|
35
|
+
Panel.fit(
|
|
36
|
+
"\n".join([f"🖥️ Platform: {platform.system()}", f"🔄 Version: {'latest' if version is None else version}"]),
|
|
37
|
+
title="📦 Boxes Installer",
|
|
38
|
+
border_style="blue",
|
|
39
|
+
)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
installer = Installer(installer_data=installer_data_modified)
|
|
43
|
+
downloaded, _version_to_be_installed = installer.download(version=version)
|
|
44
|
+
decomp_path = downloaded.decompress()
|
|
45
|
+
from pathlib import Path
|
|
46
|
+
for item in decomp_path.rglob("*"):
|
|
47
|
+
if "boxes.exe" in item.name:
|
|
48
|
+
dest_exe = Path(WINDOWS_INSTALL_PATH) / "boxes.exe"
|
|
49
|
+
if dest_exe.exists():
|
|
50
|
+
dest_exe.unlink()
|
|
51
|
+
item.rename(dest_exe)
|
|
52
|
+
if "boxes.cfg" in item.name:
|
|
53
|
+
dest_cfg = Path(WINDOWS_INSTALL_PATH) / "boxes.cfg"
|
|
54
|
+
if dest_cfg.exists():
|
|
55
|
+
dest_cfg.unlink()
|
|
56
|
+
item.rename(dest_cfg)
|
|
57
|
+
console.print("📦 Boxes downloaded and decompressed.", style="bold green")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
if __name__ == "__main__":
|
|
61
|
+
pass
|
|
@@ -173,11 +173,11 @@
|
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
175
|
"appName": "boxes",
|
|
176
|
-
"repoURL": "
|
|
176
|
+
"repoURL": "CMD",
|
|
177
177
|
"doc": "📦 ASCI draws boxes around text.",
|
|
178
178
|
"fileNamePattern": {
|
|
179
179
|
"amd64": {
|
|
180
|
-
"windows": "boxes
|
|
180
|
+
"windows": "boxes.py",
|
|
181
181
|
"linux": null,
|
|
182
182
|
"macos": null
|
|
183
183
|
},
|
|
@@ -1208,6 +1208,40 @@
|
|
|
1208
1208
|
}
|
|
1209
1209
|
}
|
|
1210
1210
|
},
|
|
1211
|
+
{
|
|
1212
|
+
"appName": "pgweb",
|
|
1213
|
+
"repoURL": "https://github.com/sosedoff/pgweb/",
|
|
1214
|
+
"doc": "🗃️ Web-based PostgreSQL database browser written in Go",
|
|
1215
|
+
"fileNamePattern": {
|
|
1216
|
+
"amd64": {
|
|
1217
|
+
"linux": "pgweb-linux-amd64.zip",
|
|
1218
|
+
"macos": "pgweb_darwin_amd64.zip",
|
|
1219
|
+
"windows": "pgweb_windows_amd64.zip"
|
|
1220
|
+
},
|
|
1221
|
+
"arm64": {
|
|
1222
|
+
"linux": "pgweb-linux-arm64.zip",
|
|
1223
|
+
"macos": "pgweb_darwin_arm64.zip",
|
|
1224
|
+
"windows": "pgweb_windows_arm64.zip"
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
"appName": "dbgate",
|
|
1230
|
+
"repoURL": "https://github.com/dbgate/dbgate",
|
|
1231
|
+
"doc": "🗃️ Cross-platform database manager for developers and database administrators",
|
|
1232
|
+
"fileNamePattern": {
|
|
1233
|
+
"amd64": {
|
|
1234
|
+
"linux": "dbgate-{version}-linux_x64.tar.gz",
|
|
1235
|
+
"macos": "dbgate-{version}-mac_x64.zip",
|
|
1236
|
+
"windows": "dbgate-windows-latest.zip"
|
|
1237
|
+
},
|
|
1238
|
+
"arm64": {
|
|
1239
|
+
"linux": "dbgate-{version}-linux_arm64.tar.gz",
|
|
1240
|
+
"macos": "dbgate-{version}-mac_arm64.zip",
|
|
1241
|
+
"windows": "dbgate-windows-latest-arm64.exe"
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1244
|
+
},
|
|
1211
1245
|
{
|
|
1212
1246
|
"appName": "duckdb",
|
|
1213
1247
|
"repoURL": "https://github.com/duckdb/duckdb",
|
|
@@ -2184,14 +2218,14 @@
|
|
|
2184
2218
|
"doc": "Kilocode agent extension in the terminal",
|
|
2185
2219
|
"fileNamePattern": {
|
|
2186
2220
|
"amd64": {
|
|
2187
|
-
"linux": "npm install -g @kilocode/cli
|
|
2188
|
-
"windows": "npm install -g @kilocode/cli
|
|
2189
|
-
"macos": "npm install -g @kilocode/cli
|
|
2221
|
+
"linux": "npm install -g @kilocode/cli",
|
|
2222
|
+
"windows": "npm install -g @kilocode/cli",
|
|
2223
|
+
"macos": "npm install -g @kilocode/cli"
|
|
2190
2224
|
},
|
|
2191
2225
|
"arm64": {
|
|
2192
|
-
"linux": "npm install -g @kilocode/cli
|
|
2193
|
-
"windows": "npm install -g @kilocode/cli
|
|
2194
|
-
"macos": "npm install -g @kilocode/cli
|
|
2226
|
+
"linux": "npm install -g @kilocode/cli",
|
|
2227
|
+
"windows": "npm install -g @kilocode/cli",
|
|
2228
|
+
"macos": "npm install -g @kilocode/cli"
|
|
2195
2229
|
}
|
|
2196
2230
|
}
|
|
2197
2231
|
},
|
|
@@ -2247,7 +2281,7 @@
|
|
|
2247
2281
|
}
|
|
2248
2282
|
},
|
|
2249
2283
|
{
|
|
2250
|
-
"appName": "opencode
|
|
2284
|
+
"appName": "opencode",
|
|
2251
2285
|
"repoURL": "CMD",
|
|
2252
2286
|
"doc": "Terminal-based CLI agents and tools for productivity and coding.",
|
|
2253
2287
|
"fileNamePattern": {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from typing import Literal, TypeAlias, Union
|
|
2
2
|
|
|
3
3
|
# AI/LLM Tools - AI-powered coding and chat assistants
|
|
4
|
-
|
|
4
|
+
AGENTS = [
|
|
5
5
|
"aider",
|
|
6
|
-
"
|
|
6
|
+
"copilot",
|
|
7
7
|
"gemini",
|
|
8
8
|
"crush",
|
|
9
9
|
"opencode-ai",
|
|
@@ -14,6 +14,8 @@ BUNDLE_AI = [
|
|
|
14
14
|
"qwen-code",
|
|
15
15
|
"cursor-cli",
|
|
16
16
|
"droid",
|
|
17
|
+
"kilocode",
|
|
18
|
+
"cline",
|
|
17
19
|
"auggie",
|
|
18
20
|
]
|
|
19
21
|
|
|
@@ -217,7 +219,7 @@ PACKAGES_TERMINAL_SHELL = [
|
|
|
217
219
|
PACKAGE_GROUPS: TypeAlias = Literal[
|
|
218
220
|
"ESSENTIAL",
|
|
219
221
|
"DEV",
|
|
220
|
-
"
|
|
222
|
+
"AGENTS",
|
|
221
223
|
"TUNNELING",
|
|
222
224
|
"TERMINAL_EMULATORS",
|
|
223
225
|
"BROWSERS",
|
|
@@ -249,7 +251,6 @@ ESSENTIAL = [
|
|
|
249
251
|
*PACKAGES_SYSTEM_MONITORS,
|
|
250
252
|
*PACKAGES_TERMINAL_SHELL,
|
|
251
253
|
*PACKAGES_FILE,
|
|
252
|
-
*BUNDLE_AI,
|
|
253
254
|
]
|
|
254
255
|
DEV = [
|
|
255
256
|
*PACKAGES_TERMINAL_EMULATORS,
|
|
@@ -267,7 +268,7 @@ DEV = [
|
|
|
267
268
|
PACKAGE_GROUP2NAMES: dict[PACKAGE_GROUPS, list[str]] = {
|
|
268
269
|
"ESSENTIAL": ESSENTIAL,
|
|
269
270
|
"DEV": DEV,
|
|
270
|
-
"
|
|
271
|
+
"AGENTS": AGENTS,
|
|
271
272
|
"TERMINAL_EMULATORS": PACKAGES_TERMINAL_EMULATORS,
|
|
272
273
|
"BROWSERS": PACKAGES_BROWSERS,
|
|
273
274
|
"CODE_EDITORS": PACKAGES_CODE_EDITORS,
|
|
@@ -1,14 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
1
3
|
|
|
4
|
+
RANDOM_NAME=$(date +%s%N | sha256sum | head -c 16)
|
|
5
|
+
OP_DIR="$HOME/tmp_results/tmp_scripts/machineconfig"
|
|
6
|
+
OP_PROGRAM_PATH="$OP_DIR/${RANDOM_NAME}.sh"
|
|
7
|
+
export OP_PROGRAM_PATH
|
|
2
8
|
|
|
9
|
+
# ANSI color/style codes
|
|
10
|
+
BOLD="\033[1m"
|
|
11
|
+
RESET="\033[0m"
|
|
12
|
+
GREEN="\033[32m"
|
|
13
|
+
YELLOW="\033[33m"
|
|
14
|
+
BLUE="\033[34m"
|
|
15
|
+
RED="\033[31m"
|
|
3
16
|
|
|
4
|
-
|
|
5
|
-
|
|
17
|
+
timestamp=$(date -u +"%Y-%m-%d %H:%M:%SZ")
|
|
18
|
+
|
|
19
|
+
printf "%b\n" "${BOLD}${BLUE}🛠️ machineconfig — running mcfg${RESET}"
|
|
20
|
+
printf "%b\n" "${BLUE}Timestamp:${RESET} ${timestamp}"
|
|
21
|
+
printf "%b\n" "${BLUE}Op program path:${RESET} ${OP_PROGRAM_PATH}"
|
|
6
22
|
|
|
23
|
+
# Forward arguments to the mcfg command
|
|
7
24
|
mcfg "$@"
|
|
8
25
|
|
|
9
26
|
if [[ -f "$OP_PROGRAM_PATH" ]]; then
|
|
10
|
-
|
|
11
|
-
|
|
27
|
+
printf "%b\n" "${GREEN}✅ Found op program:${RESET} ${OP_PROGRAM_PATH}"
|
|
28
|
+
printf "%b\n" "${GREEN}▶ Running...${RESET}"
|
|
29
|
+
. "$OP_PROGRAM_PATH"
|
|
30
|
+
status=$?
|
|
31
|
+
if [[ $status -eq 0 ]]; then
|
|
32
|
+
printf "%b\n" "${GREEN}✅ Completed successfully (exit ${status})${RESET}"
|
|
33
|
+
else
|
|
34
|
+
printf "%b\n" "${YELLOW}⚠️ Program exited with status ${status}${RESET}"
|
|
35
|
+
fi
|
|
12
36
|
else
|
|
13
|
-
|
|
37
|
+
printf "%b\n" "${YELLOW}⚠️ No op program found at: ${OP_PROGRAM_PATH}${RESET}"
|
|
14
38
|
fi
|
|
@@ -15,24 +15,6 @@ def add_ai_configs(repo_root: Path) -> None:
|
|
|
15
15
|
repo_root_resolved = get_repo_root(repo_root)
|
|
16
16
|
if repo_root_resolved is not None:
|
|
17
17
|
repo_root = repo_root_resolved # this means you can run the command from any subdirectory of the repo.
|
|
18
|
-
|
|
19
|
-
# if repo_root.joinpath("pyproject.toml").exists() is False:
|
|
20
|
-
# uv_init = input(f"{repo_root} does not seem to be a python project (no pyproject.toml found), would you like to initialize one? (y/n) ")
|
|
21
|
-
# if uv_init.strip().lower() == "y":
|
|
22
|
-
# command_to_run = """
|
|
23
|
-
# uv init --python 3.13
|
|
24
|
-
# uv venv
|
|
25
|
-
# uv add --upgrade-package pylint pyright mypy pyrefly ty --dev # linters and type checkers
|
|
26
|
-
# uv add --upgrade-package pytest --dev
|
|
27
|
-
# uv add typer --dev
|
|
28
|
-
|
|
29
|
-
# """
|
|
30
|
-
# from machineconfig.utils.code import run_shell_script
|
|
31
|
-
# run_shell_script(command_to_run)
|
|
32
|
-
# else:
|
|
33
|
-
# print("Terminating initai ...")
|
|
34
|
-
# return
|
|
35
|
-
|
|
36
18
|
dot_ai_dir = repo_root.joinpath(".ai")
|
|
37
19
|
dot_ai_dir.mkdir(parents=True, exist_ok=True)
|
|
38
20
|
dot_scripts_dir = repo_root.joinpath(".scripts")
|
|
@@ -125,16 +125,16 @@ def croshell(
|
|
|
125
125
|
pass
|
|
126
126
|
if visidata:
|
|
127
127
|
if file_obj.suffix == ".json":
|
|
128
|
-
fire_line = f"uv run --with visidata vd {str(file_obj)}"
|
|
128
|
+
fire_line = f"uv run --python 3.14 --with visidata vd {str(file_obj)}"
|
|
129
129
|
else:
|
|
130
|
-
fire_line = f"uv run --with visidata,pyarrow vd {str(file_obj)}"
|
|
130
|
+
fire_line = f"uv run --python 3.14 --with visidata,pyarrow vd {str(file_obj)}"
|
|
131
131
|
elif marimo:
|
|
132
132
|
if Path.home().joinpath("code/machineconfig").exists(): requirements = f"""--with marimo --project "{str(Path.home().joinpath("code/machineconfig"))}" """
|
|
133
|
-
else: requirements = """--with "marimo,machineconfig[plot]>=6.57" """
|
|
133
|
+
else: requirements = """--python 3.14 --with "marimo,machineconfig[plot]>=6.57" """
|
|
134
134
|
fire_line = f"""
|
|
135
135
|
cd {str(pyfile.parent)}
|
|
136
|
-
uv run --with "marimo" marimo convert {pyfile.name} -o marimo_nb.py
|
|
137
|
-
uv run
|
|
136
|
+
uv run --python 3.14 --with "marimo" marimo convert {pyfile.name} -o marimo_nb.py
|
|
137
|
+
uv run {requirements} marimo edit --host 0.0.0.0 marimo_nb.py
|
|
138
138
|
"""
|
|
139
139
|
elif jupyter:
|
|
140
140
|
if Path.home().joinpath("code/machineconfig").exists(): requirements = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with jupyterlab """
|
|
@@ -153,7 +153,7 @@ code --new-window {str(pyfile)}
|
|
|
153
153
|
if interpreter == "ipython": profile = f" --profile {ipython_profile} --no-banner"
|
|
154
154
|
else: profile = ""
|
|
155
155
|
if Path.home().joinpath("code/machineconfig").exists(): ve_line = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" """
|
|
156
|
-
else: ve_line = """--with "machineconfig[plot]>=6.57" """
|
|
156
|
+
else: ve_line = """--python 3.14 --with "machineconfig[plot]>=6.57" """
|
|
157
157
|
# ve_path_maybe, ipython_profile_maybe = get_ve_path_and_ipython_profile(Path.cwd())
|
|
158
158
|
# --python 3.14
|
|
159
159
|
fire_line = f"uv run {ve_line} {interpreter} {interactivity} {profile} {str(pyfile)}"
|
|
@@ -42,6 +42,18 @@ def route(args: FireJobArgs, fire_args: str = "") -> None:
|
|
|
42
42
|
if ipy_profile is None:
|
|
43
43
|
ipy_profile = "default"
|
|
44
44
|
|
|
45
|
+
if args.marimo:
|
|
46
|
+
tmp_dir = PathExtended.tmp().joinpath(f"tmp_scripts/marimo/{choice_file.stem}_{randstr()}")
|
|
47
|
+
tmp_dir.mkdir(parents=True, exist_ok=True)
|
|
48
|
+
script = f"""
|
|
49
|
+
cd {tmp_dir}
|
|
50
|
+
uv run --python 3.14 --with marimo marimo convert {choice_file} -o marimo_nb.py
|
|
51
|
+
uv run --project {repo_root} --with marimo marimo edit --host 0.0.0.0 marimo_nb.py
|
|
52
|
+
"""
|
|
53
|
+
from machineconfig.utils.code import exit_then_run_shell_script
|
|
54
|
+
print(f"🚀 Launching Marimo notebook for `{choice_file}`...")
|
|
55
|
+
exit_then_run_shell_script(script)
|
|
56
|
+
return
|
|
45
57
|
|
|
46
58
|
# ========================= preparing kwargs_dict
|
|
47
59
|
if choice_file.suffix == ".py":
|
|
@@ -129,7 +141,7 @@ except ImportError as _ex:
|
|
|
129
141
|
elif args.module:
|
|
130
142
|
# both selected function and kwargs are mentioned in the made up script, therefore no need for fire module.
|
|
131
143
|
command = f"{exe} {choice_file} "
|
|
132
|
-
elif choice_function is not None:
|
|
144
|
+
elif choice_function is not None and choice_file.suffix == ".py":
|
|
133
145
|
command = f"{exe} -m fire {choice_file} {choice_function} {fire_args}"
|
|
134
146
|
elif args.streamlit:
|
|
135
147
|
# for .streamlit config to work, it needs to be in the current directory.
|
|
@@ -214,6 +226,7 @@ def fire(
|
|
|
214
226
|
choose_function: Annotated[bool, typer.Option("--choose-function", "-c", help="Choose function interactively")] = False,
|
|
215
227
|
loop: Annotated[bool, typer.Option("--loop", "-l", help="Infinite recursion (runs again after completion/interruption)")] = False,
|
|
216
228
|
jupyter: Annotated[bool, typer.Option("--jupyter", "-j", help="Open in a jupyter notebook")] = False,
|
|
229
|
+
marimo: Annotated[bool, typer.Option("--marimo", "-M", help="Open in a marimo notebook")] = False,
|
|
217
230
|
module: Annotated[bool, typer.Option("--module", "-m", help="Launch the main file")] = False,
|
|
218
231
|
optimized: Annotated[bool, typer.Option("--optimized", "-O", help="Run the optimized version of the function")] = False,
|
|
219
232
|
zellij_tab: Annotated[Optional[str], typer.Option("--zellij-tab", "-z", help="Open in a new zellij tab")] = None,
|
|
@@ -244,6 +257,7 @@ def fire(
|
|
|
244
257
|
choose_function=choose_function,
|
|
245
258
|
loop=loop,
|
|
246
259
|
jupyter=jupyter,
|
|
260
|
+
marimo=marimo,
|
|
247
261
|
submit_to_cloud=submit_to_cloud,
|
|
248
262
|
remote=remote,
|
|
249
263
|
module=module,
|
|
@@ -46,7 +46,7 @@ def path():
|
|
|
46
46
|
uv_with = ["textual"]
|
|
47
47
|
uv_project_dir = None
|
|
48
48
|
if not Path.home().joinpath("code/machineconfig").exists():
|
|
49
|
-
uv_with.append("machineconfig>=6.
|
|
49
|
+
uv_with.append("machineconfig>=6.79")
|
|
50
50
|
else:
|
|
51
51
|
uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
|
|
52
52
|
run_shell_script(get_uv_command_executing_python_script(python_script=path.read_text(encoding="utf-8"), uv_with=uv_with, uv_project_dir=uv_project_dir)[0])
|
|
@@ -5,13 +5,6 @@ from typing import Annotated
|
|
|
5
5
|
import typer
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
# @app.command()
|
|
9
|
-
# def symlinks_new():
|
|
10
|
-
# """🆕 SYMLINKS new. consider moving to the new config command, then may be merge it with the dotfile subcommand"""
|
|
11
|
-
# import machineconfig.jobs.python.python_ve_symlink as helper
|
|
12
|
-
# helper.main()
|
|
13
|
-
|
|
14
|
-
|
|
15
8
|
def main(
|
|
16
9
|
file: Annotated[str, typer.Argument(help="file/folder path.")],
|
|
17
10
|
overwrite: Annotated[bool, typer.Option("--overwrite", "-o", help="Overwrite.")] = False,
|
|
@@ -41,9 +41,9 @@ def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-n
|
|
|
41
41
|
else:
|
|
42
42
|
import platform
|
|
43
43
|
if platform.system() == "Windows":
|
|
44
|
-
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.
|
|
44
|
+
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.79" """)
|
|
45
45
|
else:
|
|
46
|
-
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.
|
|
46
|
+
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.79" """)
|
|
47
47
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
48
48
|
if not no_copy_assets:
|
|
49
49
|
create_default_shell_profile() # involves copying assets too
|
|
@@ -68,7 +68,7 @@ def navigate():
|
|
|
68
68
|
path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
|
|
69
69
|
from machineconfig.utils.code import run_shell_script
|
|
70
70
|
if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
|
|
71
|
-
else: executable = """--with "machineconfig>=6.
|
|
71
|
+
else: executable = """--with "machineconfig>=6.79,textual" """
|
|
72
72
|
run_shell_script(f"""uv run {executable} {path}""")
|
|
73
73
|
|
|
74
74
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
import typer
|
|
4
|
-
from typing import Annotated, Optional, TypedDict
|
|
4
|
+
from typing import Annotated, Literal, Optional, TypedDict
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
import subprocess
|
|
7
|
-
import requests
|
|
8
6
|
|
|
9
7
|
|
|
10
8
|
def download(
|
|
@@ -17,7 +15,8 @@ def download(
|
|
|
17
15
|
raise typer.Exit(code=1)
|
|
18
16
|
typer.echo(f"📥 Downloading from: {url}")
|
|
19
17
|
download_path = Path(output) if output else Path(url.split("/")[-1])
|
|
20
|
-
|
|
18
|
+
import requests
|
|
19
|
+
import subprocess
|
|
21
20
|
try:
|
|
22
21
|
response = requests.get(url, allow_redirects=True, stream=True, timeout=60)
|
|
23
22
|
response.raise_for_status()
|
|
@@ -79,15 +78,14 @@ def download(
|
|
|
79
78
|
|
|
80
79
|
|
|
81
80
|
def merge_pdfs(
|
|
82
|
-
|
|
83
|
-
pdf2: Annotated[str, typer.Argument(..., help="Path to the second PDF file.")],
|
|
81
|
+
pdfs: Annotated[list[str], typer.Argument(..., help="Paths to the PDF files to merge.")],
|
|
84
82
|
output: Annotated[Optional[str], typer.Option("--output", "-o", help="Output merged PDF file path.")] = None,
|
|
85
83
|
compress: Annotated[bool, typer.Option("--compress", "-c", help="Compress the output PDF.")] = False,
|
|
86
84
|
) -> None:
|
|
87
|
-
def merge_pdfs_internal(
|
|
85
|
+
def merge_pdfs_internal(pdfs: list[str], output: str | None, compress: bool) -> None:
|
|
88
86
|
from pypdf import PdfReader, PdfWriter
|
|
89
87
|
writer = PdfWriter()
|
|
90
|
-
for pdf_path in
|
|
88
|
+
for pdf_path in pdfs:
|
|
91
89
|
reader = PdfReader(pdf_path)
|
|
92
90
|
for page in reader.pages:
|
|
93
91
|
writer.add_page(page)
|
|
@@ -111,12 +109,64 @@ def merge_pdfs(
|
|
|
111
109
|
writer.write(output_path)
|
|
112
110
|
print(f"✅ Merged PDF saved to: {output_path}")
|
|
113
111
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
114
|
-
code = lambda_to_python_script(lambda : merge_pdfs_internal(
|
|
112
|
+
code = lambda_to_python_script(lambda : merge_pdfs_internal(pdfs=pdfs, output=output, compress=compress), in_global=True, import_module=False)
|
|
115
113
|
from machineconfig.utils.code import run_shell_script, get_uv_command_executing_python_script
|
|
116
114
|
uv_command, _py_file = get_uv_command_executing_python_script(python_script=code, uv_with=["pypdf"], uv_project_dir=None)
|
|
117
115
|
run_shell_script(uv_command)
|
|
118
116
|
|
|
119
117
|
|
|
118
|
+
def compress_pdf(
|
|
119
|
+
pdf_input: Annotated[str, typer.Argument(..., help="Path to the input PDF file to compress.")],
|
|
120
|
+
output: Annotated[Optional[str], typer.Option("--output", "-o", help="Output compressed PDF file path.")] = None,
|
|
121
|
+
quality: Annotated[int, typer.Option("--quality", "-q", help="JPEG quality for image compression (0-100, 0=no change, 100=best).")] = 85,
|
|
122
|
+
image_dpi: Annotated[int, typer.Option("--image-dpi", "-d", help="Target DPI for image resampling. If set, images above this DPI will be downsampled.")] = 0,
|
|
123
|
+
# remove_images: Annotated[bool, typer.Option("--remove-images", "-r", help="Remove all images from the PDF.")] = False,
|
|
124
|
+
compress_streams: Annotated[bool, typer.Option("--compress-streams", "-c", help="Compress uncompressed streams.")] = True,
|
|
125
|
+
use_objstms: Annotated[bool, typer.Option("--object-streams", "-s", help="Use object streams for additional compression.")] = True,
|
|
126
|
+
) -> None:
|
|
127
|
+
def compress_pdf_internal(pdf_input: str, output: str | None, quality: int, image_dpi: int, compress_streams: bool, use_objstms: bool) -> None:
|
|
128
|
+
import pymupdf
|
|
129
|
+
from pathlib import Path
|
|
130
|
+
output_path = output if output else pdf_input.replace(".pdf", "_compressed.pdf")
|
|
131
|
+
doc = pymupdf.open(pdf_input)
|
|
132
|
+
try:
|
|
133
|
+
# if remove_images:
|
|
134
|
+
# for page in doc:
|
|
135
|
+
# page.remove_images()
|
|
136
|
+
if quality > 0 or image_dpi > 0:
|
|
137
|
+
doc.rewrite_images(
|
|
138
|
+
dpi_threshold=image_dpi if image_dpi > 0 else None,
|
|
139
|
+
dpi_target=max(72, image_dpi - 10) if image_dpi > 72 else 72,
|
|
140
|
+
quality=quality,
|
|
141
|
+
lossy=True,
|
|
142
|
+
lossless=True,
|
|
143
|
+
)
|
|
144
|
+
doc.save(
|
|
145
|
+
output_path,
|
|
146
|
+
deflate=compress_streams,
|
|
147
|
+
garbage=3,
|
|
148
|
+
use_objstms=1 if use_objstms else 0,
|
|
149
|
+
)
|
|
150
|
+
input_size = Path(pdf_input).stat().st_size
|
|
151
|
+
output_size = Path(output_path).stat().st_size
|
|
152
|
+
ratio = (1 - output_size / input_size) * 100
|
|
153
|
+
print(f"✅ Compressed PDF saved to: {output_path}")
|
|
154
|
+
print(f" Original: {input_size / 1024 / 1024:.2f} MB")
|
|
155
|
+
print(f" Compressed: {output_size / 1024 / 1024:.2f} MB")
|
|
156
|
+
print(f" Reduction: {ratio:.1f}%")
|
|
157
|
+
finally:
|
|
158
|
+
doc.close()
|
|
159
|
+
from machineconfig.utils.meta import lambda_to_python_script
|
|
160
|
+
code = lambda_to_python_script(
|
|
161
|
+
lambda: compress_pdf_internal(pdf_input=pdf_input, output=output, quality=quality, image_dpi=image_dpi, compress_streams=compress_streams, use_objstms=use_objstms),
|
|
162
|
+
in_global=True,
|
|
163
|
+
import_module=False,
|
|
164
|
+
)
|
|
165
|
+
from machineconfig.utils.code import run_shell_script, get_uv_command_executing_python_script
|
|
166
|
+
uv_command, _py_file = get_uv_command_executing_python_script(python_script=code, uv_with=["pymupdf"], uv_project_dir=None)
|
|
167
|
+
run_shell_script(uv_command)
|
|
168
|
+
|
|
169
|
+
|
|
120
170
|
class MachineSpecs(TypedDict):
|
|
121
171
|
system: str
|
|
122
172
|
distro: str
|
|
@@ -140,3 +190,32 @@ def get_machine_specs() -> MachineSpecs:
|
|
|
140
190
|
import json
|
|
141
191
|
path.write_text(json.dumps(specs, indent=4), encoding="utf-8")
|
|
142
192
|
return specs
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def init_project(python: Annotated[Literal["3.13", "3.14"], typer.Option("--python", "-p", help="Python version for the uv virtual environment.")]= "3.13") -> None:
|
|
196
|
+
_ = python
|
|
197
|
+
repo_root = Path.cwd()
|
|
198
|
+
if not (repo_root / "pyproject.toml").exists():
|
|
199
|
+
typer.echo("❌ Error: pyproject.toml not found.", err=True)
|
|
200
|
+
raise typer.Exit(code=1)
|
|
201
|
+
print(f"Adding group `plot` with common data science and plotting packages...")
|
|
202
|
+
script = """
|
|
203
|
+
uv add --group plot \
|
|
204
|
+
# Data & computation
|
|
205
|
+
numpy pandas polars duckdb-engine python-magic \
|
|
206
|
+
# Plotting / visualization
|
|
207
|
+
matplotlib plotly kaleido \
|
|
208
|
+
# Notebooks / interactive
|
|
209
|
+
ipython ipykernel jupyterlab nbformat marimo \
|
|
210
|
+
# Code analysis / type checking / linting
|
|
211
|
+
mypy pyright ruff pylint pyrefly \
|
|
212
|
+
# Packaging / build / dev
|
|
213
|
+
cleanpy \
|
|
214
|
+
# CLI / debugging / utilities
|
|
215
|
+
ipdb pudb \
|
|
216
|
+
# Type hints for packages
|
|
217
|
+
types-python-dateutil types-pyyaml types-requests types-tqdm \
|
|
218
|
+
types-mysqlclient types-paramiko types-pytz types-sqlalchemy types-toml types-urllib3 \
|
|
219
|
+
"""
|
|
220
|
+
from machineconfig.utils.code import run_shell_script
|
|
221
|
+
run_shell_script(script)
|
|
@@ -2,7 +2,21 @@
|
|
|
2
2
|
from typing import Literal, TypeAlias, TypedDict
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
# Vscode extensions for AI-assisted coding.
|
|
6
|
+
# Github copilot
|
|
7
|
+
# Roo
|
|
8
|
+
# Cline
|
|
9
|
+
# Kilocode
|
|
10
|
+
# Continue
|
|
11
|
+
# CodeGPT
|
|
12
|
+
# qodo (and cli)
|
|
13
|
+
|
|
14
|
+
# Editors based on AI
|
|
15
|
+
# Kiro
|
|
16
|
+
# Cursor
|
|
17
|
+
# Warp
|
|
18
|
+
|
|
19
|
+
AGENTS: TypeAlias = Literal["cursor-agent", "gemini", "qwen-code", "copilot", "crush", "q", "opencode", "kilocode", "cline", "auggie", "warp", "droid"]
|
|
6
20
|
HOST: TypeAlias = Literal["local", "docker"]
|
|
7
21
|
PROVIDER: TypeAlias = Literal["azure", "google", "aws", "openai", "anthropic", "openrouter", "xai"]
|
|
8
22
|
MODEL: TypeAlias = Literal["zai/glm-4.6", "anthropic/sonnet-4.5", "google/gemini-2.5-pro", "openai/gpt-5-codex",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# mkdir ~/data/local
|
|
6
6
|
# sudo mount -o nolock,noatime,nodiratime,proto=tcp,timeo=600,retrans=2,noac alex-p51s-5:/home/alex/data/local ./data/local
|
|
7
7
|
|
|
8
|
-
uv run --python 3.14 --with "machineconfig>=6.
|
|
8
|
+
uv run --python 3.14 --with "machineconfig>=6.79" python -m machineconfig.scripts.python.mount_nfs
|
|
9
9
|
# Check if remote server is reachable and share folder exists
|
|
10
10
|
if ! ping -c 1 "$remote_server" &> /dev/null; then
|
|
11
11
|
echo "💥 Error: Remote server $remote_server is not reachable."
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
from machineconfig.scripts.python.helpers_devops.cli_utils import download, merge_pdfs, get_machine_specs
|
|
3
|
+
from machineconfig.scripts.python.helpers_devops.cli_utils import download, merge_pdfs, get_machine_specs, init_project, compress_pdf
|
|
4
4
|
import typer
|
|
5
5
|
from typing import Annotated, Optional
|
|
6
6
|
from pathlib import Path
|
|
@@ -47,13 +47,19 @@ def get_app() -> typer.Typer:
|
|
|
47
47
|
app.command(name="k", no_args_is_help=False, help="Choose a process to kill", hidden=True)(kill_process)
|
|
48
48
|
app.command(name="download", no_args_is_help=True, help="[d] Download a file from a URL and optionally decompress it.")(download)
|
|
49
49
|
app.command(name="d", no_args_is_help=True, hidden=True)(download)
|
|
50
|
-
app.command(name="merge-pdfs", no_args_is_help=True, help="[m] Merge two PDF files into one.")(merge_pdfs)
|
|
51
|
-
app.command(name="m", no_args_is_help=True, hidden=True)(merge_pdfs)
|
|
52
50
|
app.command(name="get-machine-specs", no_args_is_help=False, help="[g] Get machine specifications.")(get_machine_specs)
|
|
53
51
|
app.command(name="g", no_args_is_help=False, hidden=True)(get_machine_specs)
|
|
54
|
-
|
|
52
|
+
app.command(name="init-project", no_args_is_help=False, help="[i] Initialize a project with a uv virtual environment and install dev packages.")(init_project)
|
|
53
|
+
app.command(name="i", no_args_is_help=False, hidden=True)(init_project)
|
|
55
54
|
|
|
55
|
+
app.command(name="pdf-merge", no_args_is_help=True, help="[pm] Merge two PDF files into one.")(merge_pdfs)
|
|
56
|
+
app.command(name="pm", no_args_is_help=True, hidden=True)(merge_pdfs)
|
|
57
|
+
app.command(name="pdf-compress", no_args_is_help=True, help="[pc] Compress a PDF file.")(compress_pdf)
|
|
58
|
+
app.command(name="pc", no_args_is_help=True, hidden=True)(compress_pdf)
|
|
59
|
+
return app
|
|
56
60
|
|
|
61
|
+
# def func():
|
|
62
|
+
# import pycr
|
|
57
63
|
|
|
58
64
|
def main():
|
|
59
65
|
app = get_app()
|
|
@@ -7,7 +7,7 @@ $user = ''
|
|
|
7
7
|
$sharePath = ''
|
|
8
8
|
$driveLetter = ''
|
|
9
9
|
|
|
10
|
-
uv run --python 3.14 --with "machineconfig>=6.
|
|
10
|
+
uv run --python 3.14 --with "machineconfig>=6.79" python -m machineconfig.scripts.python.mount_ssh
|
|
11
11
|
|
|
12
12
|
net use T: \\sshfs.kr\$user@$host.local
|
|
13
13
|
# this worked: net use T: \\sshfs\alex@alex-p51s-5.local
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
. <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
|
|
3
3
|
mcfg() {
|
|
4
|
-
"$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.
|
|
4
|
+
"$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.79" mcfg "$@"
|
|
5
5
|
}
|
|
6
6
|
alias d="mcfg devops"
|
|
7
7
|
alias c="mcfg cloud"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
|
|
4
4
|
function mcfg {
|
|
5
|
-
& "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.
|
|
5
|
+
& "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.79" mcfg $args
|
|
6
6
|
}
|
|
7
7
|
function d { mcfg devops @args }
|
|
8
8
|
function c { mcfg cloud @args }
|
machineconfig/utils/code.py
CHANGED
|
@@ -43,7 +43,7 @@ def run_lambda_function(lmb: Callable[[], Any], uv_with: Optional[list[str]], uv
|
|
|
43
43
|
code = lambda_to_python_script(lmb, in_global=True, import_module=False)
|
|
44
44
|
uv_command, _py_file = get_uv_command_executing_python_script(python_script=code, uv_with=uv_with, uv_project_dir=uv_project_dir)
|
|
45
45
|
run_shell_script(uv_command)
|
|
46
|
-
def
|
|
46
|
+
def run_python_script_in_marimo(py_script: str, uv_project_with: Optional[str]):
|
|
47
47
|
tmp_dir = Path.home().joinpath("tmp_results", "tmp_scripts", "marimo", randstr())
|
|
48
48
|
tmp_dir.mkdir(parents=True, exist_ok=True)
|
|
49
49
|
pyfile = tmp_dir / "marimo_db_explore.py"
|
machineconfig/utils/meta.py
CHANGED
|
@@ -225,10 +225,17 @@ def lambda_to_python_script(lmb: Callable[[], Any], in_global: bool, import_modu
|
|
|
225
225
|
header = f"def {func_name}{new_sig}:\n"
|
|
226
226
|
result_text = header + body_text
|
|
227
227
|
|
|
228
|
-
if
|
|
229
|
-
|
|
230
|
-
|
|
228
|
+
if in_global:
|
|
229
|
+
lines = result_text.splitlines()
|
|
230
|
+
if lines[-1].startswith("return "):
|
|
231
|
+
lines[-1] = lines[-1].replace("return ", "# return ", 1)
|
|
232
|
+
result_text = "\n".join(lines)
|
|
233
|
+
if "Optional[" in result_text or "Any" in result_text or "Union[" in result_text or "Literal[" in result_text:
|
|
234
|
+
result_text = "from typing import *\n\n" + result_text
|
|
231
235
|
|
|
236
|
+
if import_prefix:
|
|
237
|
+
result_text = f"{import_prefix}{result_text}"
|
|
238
|
+
return result_text
|
|
232
239
|
|
|
233
240
|
if __name__ == "__main__":
|
|
234
241
|
pass
|
machineconfig/utils/ssh.py
CHANGED
|
@@ -8,7 +8,7 @@ from machineconfig.utils.terminal import Response
|
|
|
8
8
|
from machineconfig.utils.accessories import pprint, randstr
|
|
9
9
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
10
10
|
UV_RUN_CMD = "$HOME/.local/bin/uv run" if platform.system() != "Windows" else """& "$env:USERPROFILE/.local/bin/uv" run"""
|
|
11
|
-
MACHINECONFIG_VERSION = "machineconfig>=6.
|
|
11
|
+
MACHINECONFIG_VERSION = "machineconfig>=6.79"
|
|
12
12
|
DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
|
|
13
13
|
|
|
14
14
|
class SSH:
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
"""
|
|
2
3
|
|
|
3
4
|
Generate uv add commands from pyproject.toml dependency groups.
|
|
@@ -8,10 +9,6 @@ rm ./uv.lock
|
|
|
8
9
|
rm -rfd .venv
|
|
9
10
|
uv venv --python 3.13
|
|
10
11
|
uv init
|
|
11
|
-
# Install main dependencies
|
|
12
|
-
uv add aiohttp aiosqlite asyncpg authlib binance-connector binance-futures-connector boto3 ccxt crocodile dataclasses-json exchanges httpx ipykernel ipython lightgbm machineconfig matplotlib mypy nbformat numba numpy objgraph onnx onnxruntime onnxscript orjson pandas "pandera[mypy]" plotext plotly polars prophet psycopg2-binary pybit pyright pyyaml "redis[hiredis]" requests rich ruff scikit-learn scipy shap skforecast sqlalchemy sqlmodel streamlit streamlit-option-menu ta tenacity tqdm visidata websockets wrapt-timeout-decorator
|
|
13
|
-
# Install dev dependencies
|
|
14
|
-
uv add --dev kaleido torch torchaudio torchinfo torchview torchvision types-python-dateutil types-pyyaml types-requests types-tqdm
|
|
15
12
|
|
|
16
13
|
"""
|
|
17
14
|
|
|
@@ -47,8 +47,9 @@ machineconfig/cluster/templates/cli_trogon.py,sha256=PFWGy8SFYIhT9r3ZV4oIEYfImsQ
|
|
|
47
47
|
machineconfig/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
48
|
machineconfig/jobs/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
49
|
machineconfig/jobs/installer/check_installations.py,sha256=hkHmmT7Bx3_QWRn2v8dCKOzAapFzqHRzbe-Q08GLnKE,10743
|
|
50
|
-
machineconfig/jobs/installer/installer_data.json,sha256=
|
|
51
|
-
machineconfig/jobs/installer/package_groups.py,sha256=
|
|
50
|
+
machineconfig/jobs/installer/installer_data.json,sha256=O2IuDvPApr1cCGG_HyVJfhT5exd2wmZmxyV81_WRXhQ,78081
|
|
51
|
+
machineconfig/jobs/installer/package_groups.py,sha256=CvSJogQgnz5HZfGS9DoCoPfmv0qUinLfh76zw4x58Q8,5262
|
|
52
|
+
machineconfig/jobs/installer/custom/boxes.py,sha256=ws8QRbDn48oKhbQntr54I0nSfkwINbprjTy0HOpuX40,1974
|
|
52
53
|
machineconfig/jobs/installer/custom/gh.py,sha256=gn7TUSrsLx7uqFqj1Z-iYglS0EYBSgtJ9jWHxaJIfXM,4119
|
|
53
54
|
machineconfig/jobs/installer/custom/hx.py,sha256=YQClQXqWtGvon8BLFGf1Fp20JPkHgZeEZ6ebmCJQQfI,5838
|
|
54
55
|
machineconfig/jobs/installer/custom_dev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -70,7 +71,9 @@ machineconfig/jobs/installer/linux_scripts/brave.sh,sha256=_al_D5iZSwtlDRTeqjjK3
|
|
|
70
71
|
machineconfig/jobs/installer/linux_scripts/docker.sh,sha256=4NYWXCdvh6qlggVVH7FGe6jWkYuWoaJoDwLJvI4oRNQ,4471
|
|
71
72
|
machineconfig/jobs/installer/linux_scripts/docker_start.sh,sha256=8L2fLex6PU8nCpBii7yT8w4CvULZ9_JcDvxdCGJQ6cU,894
|
|
72
73
|
machineconfig/jobs/installer/linux_scripts/edge.sh,sha256=f1UI2Z2s0ToZ-QGlzkS1ThcRsTz5tMHOjxSFqfHK9SQ,1319
|
|
74
|
+
machineconfig/jobs/installer/linux_scripts/lid.sh,sha256=nUw870lc5p8GA8KT3JI29ob2wKSVKzCvOHIxEjoSTOA,864
|
|
73
75
|
machineconfig/jobs/installer/linux_scripts/nerdfont.sh,sha256=ute9wl4BcqHUqavVHWJlnMcmugdb50LbnUVlU0cUVso,1475
|
|
76
|
+
machineconfig/jobs/installer/linux_scripts/network.sh,sha256=j3kRV2mFEZK05XL2UdR9ssW2hkLH5rOYM7LU539UUEE,1358
|
|
74
77
|
machineconfig/jobs/installer/linux_scripts/ngrok.sh,sha256=K-t62nhnAHxhppTmqjubIJRHozkNHfBxXGbn1Oz3w-A,287
|
|
75
78
|
machineconfig/jobs/installer/linux_scripts/pgsql.sh,sha256=FbIteF6RVCcDdHl8seFFO7FuAX9siZpkwr9WVeKn5NA,1655
|
|
76
79
|
machineconfig/jobs/installer/linux_scripts/q.sh,sha256=lPSHBeZm4z6xv5K3cYPiOkK0A-LaNSNJN2ysVb1Qa9Y,261
|
|
@@ -79,18 +82,10 @@ machineconfig/jobs/installer/linux_scripts/timescaledb.sh,sha256=PTvo7KBpyxmWdpV
|
|
|
79
82
|
machineconfig/jobs/installer/linux_scripts/vscode.sh,sha256=fI6lNCWUjlstNE319Y-rUtimvLLb9GcNh3z9t1KRaaE,4541
|
|
80
83
|
machineconfig/jobs/installer/linux_scripts/warp-cli.sh,sha256=dnMHZjyyYARwKFa1XZbIonLntIHTRGROyr2v4Eodd6s,2157
|
|
81
84
|
machineconfig/jobs/installer/linux_scripts/wezterm.sh,sha256=hZBS0CopWr-VrGhFSVjoWATFzHqCt6V41_N8bImAQRc,1294
|
|
85
|
+
machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1,sha256=UbOApUB0UiAHANOnGFHIP3zY_UCtWBhT5I6vqPhwqgE,618
|
|
82
86
|
machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1,sha256=JsQfGAMkvirhiUmBNOifMlbum2PfHSs0-Akgj-J-WZw,3177
|
|
83
|
-
machineconfig/jobs/
|
|
84
|
-
machineconfig/jobs/
|
|
85
|
-
machineconfig/jobs/linux/msc/network.sh,sha256=j3kRV2mFEZK05XL2UdR9ssW2hkLH5rOYM7LU539UUEE,1358
|
|
86
|
-
machineconfig/jobs/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
|
-
machineconfig/jobs/python/python_ve_symlink.py,sha256=Mw2SK_TDLK5Ct_mEESh_Pd-Rn-B1oBSp7a_9y_eZbqw,1140
|
|
88
|
-
machineconfig/jobs/python/vscode/api.py,sha256=Et0G-VUj13D1rshYMdDrw_CUYSO7Q6XRrEQO0WjVIKU,1683
|
|
89
|
-
machineconfig/jobs/windows/archive/archive_pygraphviz.ps1,sha256=UbOApUB0UiAHANOnGFHIP3zY_UCtWBhT5I6vqPhwqgE,618
|
|
90
|
-
machineconfig/jobs/windows/archive/openssh-server_add_key.ps1,sha256=91cL3K4H2saAuzOS1GxGicpc64ZDpgvPY39YPBWyxZI,269
|
|
91
|
-
machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1,sha256=-7pElYiGFXUvO4dp6rW0LXmNo65h3hFTHJWyHbmO3Xc,745
|
|
92
|
-
machineconfig/jobs/windows/msc/cli_agents.bat,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
|
-
machineconfig/jobs/windows/msc/cli_agents.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
|
+
machineconfig/jobs/installer/powershell_scripts/openssh-server_add_key.ps1,sha256=91cL3K4H2saAuzOS1GxGicpc64ZDpgvPY39YPBWyxZI,269
|
|
88
|
+
machineconfig/jobs/installer/powershell_scripts/openssh-server_copy-ssh-id.ps1,sha256=-7pElYiGFXUvO4dp6rW0LXmNo65h3hFTHJWyHbmO3Xc,745
|
|
94
89
|
machineconfig/profile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
95
90
|
machineconfig/profile/backup.toml,sha256=Hb25sIdKVvLqOF62NgiOpGZxd45I6IhsNHu623RtfQQ,766
|
|
96
91
|
machineconfig/profile/bash_shell_profiles.md,sha256=mio0xkMTwO-F3fikWIfgcdQaPCmQrmkxJMNtZsTe9TI,514
|
|
@@ -111,7 +106,7 @@ machineconfig/scripts/linux/fzfag,sha256=x0rX7vM_YjKLZ822D2Xh0HdaTj5kR_gG3g_5_w6
|
|
|
111
106
|
machineconfig/scripts/linux/fzffg,sha256=jjeeyFkWmBbwH2taRqC3EOzZep2KR-ZYoI4UI-5kHqg,1090
|
|
112
107
|
machineconfig/scripts/linux/fzfg,sha256=ClGnJZUsIk4y0qs3W5iXGo-nd0FaqAHMsnh8uoXQFy8,1190
|
|
113
108
|
machineconfig/scripts/linux/fzfrga,sha256=xSdws6ae28ZXkkqz_uupZ0MYw_vxE2qpLT2DLS3WITM,460
|
|
114
|
-
machineconfig/scripts/linux/mcfgs,sha256=
|
|
109
|
+
machineconfig/scripts/linux/mcfgs,sha256=l8xt5BLEmN_Xa7OD9ZgpPc85hG4R1cM5CIRFYQi2VjI,1125
|
|
115
110
|
machineconfig/scripts/linux/skrg,sha256=JgQJGwxaChr148bDnpTB0rrqZMe2o2zGSDA9x_oUhWM,133
|
|
116
111
|
machineconfig/scripts/linux/warp-cli.sh,sha256=shFFZ9viet_DSEEHT8kxlGRHoJpO6o85pKYnc3rIkaA,3868
|
|
117
112
|
machineconfig/scripts/linux/z_ls,sha256=h5YJYfnJrmtLe4c2iKk5aZdaK_Zeaj3CpQX8SSr7fr0,3310
|
|
@@ -123,18 +118,18 @@ machineconfig/scripts/linux/other/switch_ip,sha256=NQfeKMBSbFY3eP6M-BadD-TQo5qMP
|
|
|
123
118
|
machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
124
119
|
machineconfig/scripts/python/agents.py,sha256=gGeeWCI0AN_DyDJ3G5KR9qSsXv8zkUd5dBRRWqz-dQE,10722
|
|
125
120
|
machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yyeehw_cU8,1263
|
|
126
|
-
machineconfig/scripts/python/croshell.py,sha256=
|
|
121
|
+
machineconfig/scripts/python/croshell.py,sha256=QyQbVboNqDQHJkUeSsJvdT212t4TW46yat3GBzneqsQ,8649
|
|
127
122
|
machineconfig/scripts/python/devops.py,sha256=Lv4d-UlyOREj4VTcu_pxswYo54Mawe3XGeKjreGQDYg,2222
|
|
128
123
|
machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
|
|
129
|
-
machineconfig/scripts/python/
|
|
130
|
-
machineconfig/scripts/python/fire_jobs.py,sha256=7L9g4NCr-0gGw3XGNvRCtu77fpfTrTTXMWZ_R4EoSlc,13912
|
|
124
|
+
machineconfig/scripts/python/fire_jobs.py,sha256=UrxCwFKg7ZtBYKFpsSHe62ngcpmHFomSxFWDLnM7CmQ,14645
|
|
131
125
|
machineconfig/scripts/python/ftpx.py,sha256=A13hL_tDYfcsaK9PkshK-0lrUS6KPhPCtwqWtLSo6IM,9764
|
|
132
126
|
machineconfig/scripts/python/interactive.py,sha256=zt3g6nGKR_Y5A57UnR4Y5-JpLzrpnCOSaqU1bnaikK0,11666
|
|
127
|
+
machineconfig/scripts/python/mcfg.py,sha256=TB5lZDZDImGqX4_mMSEv4ZoFigIPA0RXn-9H2cmPS6g,2457
|
|
133
128
|
machineconfig/scripts/python/sessions.py,sha256=JfN8M7r7f8DkfiGJ4jz2NfXvABm90nOZJmLGxPgw_2M,9518
|
|
134
|
-
machineconfig/scripts/python/utils.py,sha256=
|
|
129
|
+
machineconfig/scripts/python/utils.py,sha256=Pdk75UjapwE3gou-CMHtqqPhNhpPZP2t1Pm1LPbam-Y,3280
|
|
135
130
|
machineconfig/scripts/python/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
136
131
|
machineconfig/scripts/python/ai/generate_files.py,sha256=VfjKdwgF8O6E4oiRtfWNliibLmmwGe7f9ld6wpOsXTw,14498
|
|
137
|
-
machineconfig/scripts/python/ai/initai.py,sha256=
|
|
132
|
+
machineconfig/scripts/python/ai/initai.py,sha256=P4-NCLJPWeNef_k-l4TQ92AB1Xm1k3xzdqSBIjmevnQ,1573
|
|
138
133
|
machineconfig/scripts/python/ai/vscode_tasks.py,sha256=61wMMIhtNTUO8Zvl8IziEdyadzgi5H0h8ACwq3cw6Ho,1255
|
|
139
134
|
machineconfig/scripts/python/ai/command_runner/command_runner.sh,sha256=PRaQyeI3lDi3s8pm_0xZc71gRvUFO0bEt8o1g1rwwD4,761
|
|
140
135
|
machineconfig/scripts/python/ai/command_runner/prompt.txt,sha256=-2NFBMf-8yk5pOe-3LBX3RTIhqIZHJS_m-v4k-j9sWI,779
|
|
@@ -164,7 +159,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
|
|
|
164
159
|
machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
165
160
|
machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
|
|
166
161
|
machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
|
|
167
|
-
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=
|
|
162
|
+
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=Uo1YkX85ebzWSDInbudXg2rJ-qbMk0WszicY5u4ZND8,6932
|
|
168
163
|
machineconfig/scripts/python/helpers_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
169
164
|
machineconfig/scripts/python/helpers_cloud/cloud_copy.py,sha256=OV1w3ajFVFs6FJytjIPOntYB_aW2ywGohKi73V4Dm2Y,8691
|
|
170
165
|
machineconfig/scripts/python/helpers_cloud/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAsPT-Xl3RG9-yBed71a2tu9Pig,4914
|
|
@@ -180,15 +175,15 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
|
|
|
180
175
|
machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
181
176
|
machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
|
|
182
177
|
machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
183
|
-
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=
|
|
184
|
-
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=
|
|
178
|
+
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=_xa_QKyCE-HFrMNO2xSFQ7hReI1Kaon4tDAEa9ahyjY,7218
|
|
179
|
+
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=fluxRtD6hlbh131_RmeKr2Dy8tZpeC4H9-wp2sYt0dM,2486
|
|
185
180
|
machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
|
|
186
181
|
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=B5Xa9pV5MdC4vPo3EmKaHvNMlThsY3c5F92YPE5j3rI,4176
|
|
187
182
|
machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
|
|
188
|
-
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=
|
|
183
|
+
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=JN_3naxPT76qTUWl4TwbAs89Wr8XIiMudM2yoYGFDrg,6225
|
|
189
184
|
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=q9pFJ6AxPuygMr3onMNOKEuuQHbVE_6Qoyo7xRT5FX0,4196
|
|
190
185
|
machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
|
|
191
|
-
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=
|
|
186
|
+
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=KGIU1uTWC4g3kvBBkGrM-TtmcR8V1jTxVMGKXDSLnLA,10183
|
|
192
187
|
machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Dn8luB6QJzxKiiFSC-NMqiYddWZoca3A8eOjMYZDzTc,5598
|
|
193
188
|
machineconfig/scripts/python/helpers_devops/devops_status.py,sha256=PJVPhfhXq8der6Xd-_fjZfnizfM-RGfJApkRGhGBmNo,20525
|
|
194
189
|
machineconfig/scripts/python/helpers_devops/devops_update_repos.py,sha256=kSln8_-Wn7Qu0NaKdt-QTN_bBVyTIAWHH8xVYKK-vCM,10133
|
|
@@ -200,7 +195,7 @@ machineconfig/scripts/python/helpers_devops/themes/choose_wezterm_theme.py,sha25
|
|
|
200
195
|
machineconfig/scripts/python/helpers_fire/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
196
|
machineconfig/scripts/python/helpers_fire/fire_agents_help_launch.py,sha256=GBhi9WvmQDwJOcF3sjvge5x5U7TUokcVo4K4CbEm-OI,5619
|
|
202
197
|
machineconfig/scripts/python/helpers_fire/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
|
|
203
|
-
machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py,sha256=
|
|
198
|
+
machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py,sha256=umX-Na6W_8kGZX7ccElnvGP8yxJ8prGBiG3-dO9vXJ0,1304
|
|
204
199
|
machineconfig/scripts/python/helpers_fire/fire_agents_load_balancer.py,sha256=mpqx3uaQdBXYieuvhdK-qsvLepf9oIMo3pwPj9mSEDI,1079
|
|
205
200
|
machineconfig/scripts/python/helpers_fire/helpers4.py,sha256=iKR5vVJygaDIpFXhcdma9jOpyxKtUhmqcmalFxJmY0w,4749
|
|
206
201
|
machineconfig/scripts/python/helpers_fire/prompt.txt,sha256=Ni6r-Dh0Ez2XwfOZl3MOMDhfn6BJ2z4IdK3wFvA3c_o,116
|
|
@@ -214,7 +209,7 @@ machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py,sha2
|
|
|
214
209
|
machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py,sha256=uh0Blj_EHnUbLPqmqgc67HwaVuz5CllC3q2ILEtG7sU,1694
|
|
215
210
|
machineconfig/scripts/python/helpers_fire_command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
216
211
|
machineconfig/scripts/python/helpers_fire_command/cloud_manager.py,sha256=YN0DYLzPKtMBaks-EAVwFmkCu3XeHWMr1D21uqX5dDk,3429
|
|
217
|
-
machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py,sha256=
|
|
212
|
+
machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py,sha256=teioVhLI-skNpbYOJGo7WJEnz_FHzyidHff174CZSg8,4359
|
|
218
213
|
machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py,sha256=4MrlCVijbx7GQyAN9s5LDh-7heSjMXYrXdqiP6uC3ug,5378
|
|
219
214
|
machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
220
215
|
machineconfig/scripts/python/helpers_navigator/__init__.py,sha256=5qPsu5ztoj0gkrioY0Yg0GTZ9JAn6SG2gAk-6DpuQ00,764
|
|
@@ -226,7 +221,7 @@ machineconfig/scripts/python/helpers_navigator/main_app.py,sha256=R1vOBMUKaiFHOg
|
|
|
226
221
|
machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wdm7YpDBtfhwcPnSqDPFrV2LqbcSBWMT4,414
|
|
227
222
|
machineconfig/scripts/python/helpers_repos/action.py,sha256=9AxWy8mB9HFeV5t11-qD_l-KA5jkUmm0pXVKT1L6-Qk,14894
|
|
228
223
|
machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
|
|
229
|
-
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=
|
|
224
|
+
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=l1OXbC4QNme2xDytBIbEFX7KNZSTuPsOW9BnnooJEww,10450
|
|
230
225
|
machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
|
|
231
226
|
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=vSDtrF4829jziwp6WZmGt9G8MJ9jY4hfXqtf0vhkYSE,607
|
|
232
227
|
machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
|
|
@@ -242,7 +237,7 @@ machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdC
|
|
|
242
237
|
machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
|
|
243
238
|
machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=CkIl85hZLtG9k7yXLSzqi88YrilHV4hIUWHAPBwxWjw,8922
|
|
244
239
|
machineconfig/scripts/python/nw/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
|
|
245
|
-
machineconfig/scripts/python/nw/mount_nfs,sha256=
|
|
240
|
+
machineconfig/scripts/python/nw/mount_nfs,sha256=6OpFOWk5LlT2dmMmqENudAqmMNGGAm8mZxCrV-o8MfY,1855
|
|
246
241
|
machineconfig/scripts/python/nw/mount_nfs.py,sha256=lOMDY4RS7tx8gsCazVR5tNNwFbaRyO2PJlnwBCDQgCM,3573
|
|
247
242
|
machineconfig/scripts/python/nw/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
|
|
248
243
|
machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
|
|
@@ -260,7 +255,7 @@ machineconfig/scripts/windows/mcfgs.ps1,sha256=uuK5pEz38D3_SOjfhbvkDT8Kt4I62YhNz
|
|
|
260
255
|
machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
|
|
261
256
|
machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
|
|
262
257
|
machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
|
|
263
|
-
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=
|
|
258
|
+
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=ds2EyRuM3e5SI7-XX9sX2Tr_27yO3yfPVjvnofpeIcU,322
|
|
264
259
|
machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
|
|
265
260
|
machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
|
|
266
261
|
machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
|
|
@@ -372,12 +367,12 @@ machineconfig/setup_linux/apps.sh,sha256=XOEzhuwYNat83ybamUdnVhDaGf2wlQiT5wVNvz2
|
|
|
372
367
|
machineconfig/setup_linux/apps_desktop.sh,sha256=L2b_pcw3GiQdoAaoMO7J4bVvUoG5Pnuy9kDhV8JqprU,3325
|
|
373
368
|
machineconfig/setup_linux/apps_gui.sh,sha256=lFPYq7H2bRogPwW6QoEuSr9GnTjHS-jRM_eYg2rjOmM,2301
|
|
374
369
|
machineconfig/setup_linux/uv.sh,sha256=cyegPmMMB7B3OnVx9KxZiU1JQU3Z_oqboUgwzmW2W40,487
|
|
375
|
-
machineconfig/setup_linux/
|
|
370
|
+
machineconfig/setup_linux/others/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
|
|
371
|
+
machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE31BXDP0Fmeta4--gpr-zJZlY,4010
|
|
376
372
|
machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
|
|
377
373
|
machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
|
|
378
374
|
machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
|
|
379
|
-
machineconfig/setup_linux/web_shortcuts/
|
|
380
|
-
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=YJYDhHa9D_vm8QURMPVHJJHKeFVX1lsZfJ4FUVnZzQA,464
|
|
375
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=g-MVdfkpU98FApzB2EGb_K2t6iU1UrEW-aDKdVP6OsI,464
|
|
381
376
|
machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
|
|
382
377
|
machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
|
|
383
378
|
machineconfig/setup_mac/uv.sh,sha256=CSN8oCBKS-LK1vJJqYOhAMcrouTf4Q_F3cpplc_ddMA,1157
|
|
@@ -391,16 +386,16 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
|
|
|
391
386
|
machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
|
|
392
387
|
machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
|
|
393
388
|
machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
|
|
394
|
-
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=
|
|
389
|
+
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=ySfDew5rnUoW48kZbQFq1RWDSCHm26KNNnu_4ythKNI,581
|
|
395
390
|
machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
396
391
|
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
|
|
397
392
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
398
393
|
machineconfig/utils/accessories.py,sha256=Rs8R0GUb2Ub6YimkgXHnI02CShS5BKlrZdCigVxfPlk,4339
|
|
399
|
-
machineconfig/utils/code.py,sha256=
|
|
394
|
+
machineconfig/utils/code.py,sha256=2hz171Uw706QGbvup0X7RUH0L_0ELRBekKjco71hFEQ,5493
|
|
400
395
|
machineconfig/utils/installer.py,sha256=UzI_DtTcKbgvkAkWkNLAPUtx-RVqITHCpvZyLiCpD9g,10377
|
|
401
396
|
machineconfig/utils/io.py,sha256=4dSieoqZO8Vvi4vW8lLoITDHBvmFp4dtl3kyeZHQ6Co,2528
|
|
402
397
|
machineconfig/utils/links.py,sha256=KM6vIn3hag9FYEzLSHP5MAM9tU_RStw2mCq2_OvmmZA,23672
|
|
403
|
-
machineconfig/utils/meta.py,sha256=
|
|
398
|
+
machineconfig/utils/meta.py,sha256=RXbq3_DSFAFNAEt9GjWqP2TjCWUs0v7gAkKCgRpdwO8,9853
|
|
404
399
|
machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
|
|
405
400
|
machineconfig/utils/options.py,sha256=vUO4Kej-vDOv64wHr2HNDyu6PATURpjd7xp6N8OOoJg,7083
|
|
406
401
|
machineconfig/utils/path_extended.py,sha256=WyJwoHnXdvSQQJ-yrxTX78FpqYmgVeKDYpNEB9UsRck,53223
|
|
@@ -409,10 +404,10 @@ machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,
|
|
|
409
404
|
machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
|
|
410
405
|
machineconfig/utils/scheduling.py,sha256=6x5zLA7sY5gohrEtN6zGrXIqNFasMoyBfwLcOjrjiME,11109
|
|
411
406
|
machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
|
|
412
|
-
machineconfig/utils/ssh.py,sha256=
|
|
407
|
+
machineconfig/utils/ssh.py,sha256=lnGtFWzD7kPRVRvLrxU_ZQHqscRwMqbCThd8IR58jfM,38991
|
|
413
408
|
machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
|
|
414
409
|
machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
|
|
415
|
-
machineconfig/utils/upgrade_packages.py,sha256=
|
|
410
|
+
machineconfig/utils/upgrade_packages.py,sha256=TCohwiwc0btSsInOloxDVuk5i88yc1vBK8RZcoMWoUw,3425
|
|
416
411
|
machineconfig/utils/ve.py,sha256=L-6PBXnQGXThiwWgheJMQoisAZOZA6SVCbGw2J-GFnI,2414
|
|
417
412
|
machineconfig/utils/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
418
413
|
machineconfig/utils/cloud/onedrive/README.md,sha256=i20oRG110AN0yLF3DARHfWXDJjPBiSgWI8CP2HQAqrk,3774
|
|
@@ -438,8 +433,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
|
|
|
438
433
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
439
434
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
440
435
|
machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
441
|
-
machineconfig-6.
|
|
442
|
-
machineconfig-6.
|
|
443
|
-
machineconfig-6.
|
|
444
|
-
machineconfig-6.
|
|
445
|
-
machineconfig-6.
|
|
436
|
+
machineconfig-6.79.dist-info/METADATA,sha256=pLf4KEFUES6kyMpjq-biKf-5-FcWJanWwE8KcflCGdM,2928
|
|
437
|
+
machineconfig-6.79.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
438
|
+
machineconfig-6.79.dist-info/entry_points.txt,sha256=2OetLXw0yXtfG6MmJXbzZipCQfPueeM3oMgTORSEfYs,465
|
|
439
|
+
machineconfig-6.79.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
440
|
+
machineconfig-6.79.dist-info/RECORD,,
|
|
@@ -5,6 +5,6 @@ croshell = machineconfig.scripts.python.croshell:main
|
|
|
5
5
|
devops = machineconfig.scripts.python.devops:main
|
|
6
6
|
fire = machineconfig.scripts.python.fire_jobs:main
|
|
7
7
|
ftpx = machineconfig.scripts.python.ftpx:main
|
|
8
|
-
mcfg = machineconfig.scripts.python.
|
|
8
|
+
mcfg = machineconfig.scripts.python.mcfg:main
|
|
9
9
|
sessions = machineconfig.scripts.python.sessions:main
|
|
10
10
|
utils = machineconfig.scripts.python.utils:main
|
|
File without changes
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"""Symlinks"""
|
|
2
|
-
|
|
3
|
-
from rich import box
|
|
4
|
-
from rich.console import Console
|
|
5
|
-
from rich.panel import Panel
|
|
6
|
-
|
|
7
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def main() -> None:
|
|
11
|
-
console = Console()
|
|
12
|
-
console.print(
|
|
13
|
-
Panel.fit(
|
|
14
|
-
"\n".join(["Create symlinks for virtual environments"]),
|
|
15
|
-
title="🔗 Symlink Creator",
|
|
16
|
-
border_style="cyan",
|
|
17
|
-
box=box.ROUNDED,
|
|
18
|
-
)
|
|
19
|
-
)
|
|
20
|
-
target = PathExtended(input("🎯 Symlink to which target? ")).expanduser().absolute()
|
|
21
|
-
source = input(f"📍 Symlink from which source? [default to: CWD/{target.name}] ") or PathExtended.cwd().joinpath(target.name)
|
|
22
|
-
if isinstance(source, str):
|
|
23
|
-
source = PathExtended(source).expanduser().absolute()
|
|
24
|
-
source.symlink_to(target, overwrite=True)
|
|
25
|
-
console.print(
|
|
26
|
-
Panel.fit(
|
|
27
|
-
"\n".join([f"📍 Source: {source}", f"🎯 Target: {target}"]),
|
|
28
|
-
title="✅ Symlink Created",
|
|
29
|
-
border_style="green",
|
|
30
|
-
box=box.ROUNDED,
|
|
31
|
-
)
|
|
32
|
-
)
|
|
33
|
-
console.print("🔗 Finished creating symlink.", style="bold cyan")
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if __name__ == "__main__":
|
|
37
|
-
pass
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
from typing import Annotated
|
|
3
|
-
|
|
4
|
-
import typer
|
|
5
|
-
from rich import box
|
|
6
|
-
from rich.console import Console
|
|
7
|
-
from rich.panel import Panel
|
|
8
|
-
from rich.syntax import Syntax
|
|
9
|
-
|
|
10
|
-
from machineconfig.utils.accessories import randstr
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def open_file_in_new_instance(file_path: str):
|
|
14
|
-
import git
|
|
15
|
-
|
|
16
|
-
repo = git.Repo(search_parent_directories=True)
|
|
17
|
-
repo_path = repo.working_tree_dir
|
|
18
|
-
# Ensure repo_path is not None before passing to Path
|
|
19
|
-
repo_name = Path(repo_path if repo_path is not None else ".").name
|
|
20
|
-
repo_copy_name = f"{repo_name}_{randstr(5)}"
|
|
21
|
-
copy_path = Path.home().joinpath(".config", "machingconfig", "vscode_api", repo_name, repo_copy_name)
|
|
22
|
-
copy_path.parent.mkdir(parents=True, exist_ok=True)
|
|
23
|
-
code = f"""
|
|
24
|
-
ln -s {repo_path} {copy_path}
|
|
25
|
-
cd {copy_path}
|
|
26
|
-
code --profile bitProfile --new-window {file_path}
|
|
27
|
-
"""
|
|
28
|
-
console = Console()
|
|
29
|
-
panel = Panel(
|
|
30
|
-
Syntax(code, lexer="bash"),
|
|
31
|
-
title="🔍 VS CODE API | Opening file in new instance",
|
|
32
|
-
subtitle=f"📂 {file_path}",
|
|
33
|
-
border_style="bright_blue",
|
|
34
|
-
box=box.DOUBLE,
|
|
35
|
-
padding=(1, 2),
|
|
36
|
-
)
|
|
37
|
-
console.print(panel)
|
|
38
|
-
|
|
39
|
-
code_path = Path.home().joinpath(".config", "machingconfig", "vscode_api", "code_temp")
|
|
40
|
-
code_path.parent.mkdir(parents=True, exist_ok=True)
|
|
41
|
-
code_path.write_text(code, encoding="utf-8")
|
|
42
|
-
code_path.chmod(0o755)
|
|
43
|
-
import subprocess
|
|
44
|
-
|
|
45
|
-
subprocess.run([str(code_path)], shell=True, check=True)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
def main(file_path: Annotated[str, typer.Argument(help="Path to the file to open")]) -> None:
|
|
49
|
-
open_file_in_new_instance(file_path)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def arg_parser() -> None:
|
|
53
|
-
typer.run(main)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if __name__ == "__main__":
|
|
57
|
-
arg_parser()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/machineconfig/jobs/{windows/archive → installer/powershell_scripts}/openssh-server_add_key.ps1
RENAMED
|
File without changes
|
/machineconfig/jobs/{windows/archive → installer/powershell_scripts}/openssh-server_copy-ssh-id.ps1
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|