machineconfig 6.89__py3-none-any.whl → 6.92__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/hx.py +9 -8
- machineconfig/jobs/installer/installer_data.json +69 -69
- machineconfig/profile/create_links.py +1 -1
- machineconfig/profile/create_links_export.py +2 -2
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_config.py +3 -3
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_nw.py +11 -1
- machineconfig/scripts/python/helpers_devops/cli_self.py +3 -3
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +84 -0
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +1 -1
- machineconfig/scripts/python/nw/mount_nfs +1 -1
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
- machineconfig/settings/marimo/marimo.toml +1 -1
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/shells/pwsh/init.ps1 +18 -18
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/setup_linux/web_shortcuts/interactive.sh +1 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +1 -1
- machineconfig/utils/installer.py +0 -1
- machineconfig/utils/installer_utils/installer.py +24 -28
- machineconfig/utils/links.py +12 -5
- machineconfig/utils/ssh.py +1 -1
- {machineconfig-6.89.dist-info → machineconfig-6.92.dist-info}/METADATA +1 -1
- {machineconfig-6.89.dist-info → machineconfig-6.92.dist-info}/RECORD +28 -27
- {machineconfig-6.89.dist-info → machineconfig-6.92.dist-info}/WHEEL +0 -0
- {machineconfig-6.89.dist-info → machineconfig-6.92.dist-info}/entry_points.txt +0 -0
- {machineconfig-6.89.dist-info → machineconfig-6.92.dist-info}/top_level.txt +0 -0
|
@@ -20,20 +20,21 @@ config_dict: InstallerData = {
|
|
|
20
20
|
"doc": "Helix is a post-modern modal text editor.",
|
|
21
21
|
"fileNamePattern": {
|
|
22
22
|
"amd64": {
|
|
23
|
-
"linux": "
|
|
24
|
-
"macos": "
|
|
25
|
-
"windows": "
|
|
23
|
+
"linux": "helix-{version}-x86_64-linux.tar.xz",
|
|
24
|
+
"macos": "helix-{version}-x86_64-macos.tar.xz",
|
|
25
|
+
"windows": "helix-{version}-x86_64-windows.zip",
|
|
26
26
|
},
|
|
27
27
|
"arm64": {
|
|
28
|
-
"linux": "
|
|
29
|
-
"macos": "
|
|
30
|
-
"windows": "
|
|
28
|
+
"linux": "helix-{version}-arm64-linux.tar.xz",
|
|
29
|
+
"macos": "helix-{version}-arm64-macos.tar.xz",
|
|
30
|
+
"windows": "helix-{version}-arm64-windows.zip",
|
|
31
31
|
},
|
|
32
32
|
},
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
def main(version: Optional[str], install_lib: bool = False):
|
|
36
|
+
def main(installer_data: InstallerData, version: Optional[str], install_lib: bool = False):
|
|
37
|
+
_ = installer_data
|
|
37
38
|
console = Console()
|
|
38
39
|
|
|
39
40
|
console.print(Panel(f"HELIX EDITOR INSTALLER 🧬\nPlatform: {platform.system()}\nVersion: {'latest' if version is None else version}", title="Installer", expand=False))
|
|
@@ -137,4 +138,4 @@ def main(version: Optional[str], install_lib: bool = False):
|
|
|
137
138
|
|
|
138
139
|
|
|
139
140
|
if __name__ == "__main__":
|
|
140
|
-
|
|
141
|
+
pass
|
|
@@ -1129,13 +1129,13 @@
|
|
|
1129
1129
|
"doc": "🌐 browser in the shell",
|
|
1130
1130
|
"fileNamePattern": {
|
|
1131
1131
|
"amd64": {
|
|
1132
|
-
"linux":
|
|
1133
|
-
"macos":
|
|
1132
|
+
"linux": "browsh-v{version}-linux-amd64",
|
|
1133
|
+
"macos": "browsh-v{version}-darwin-amd64",
|
|
1134
1134
|
"windows": null
|
|
1135
1135
|
},
|
|
1136
1136
|
"arm64": {
|
|
1137
|
-
"linux":
|
|
1138
|
-
"macos":
|
|
1137
|
+
"linux": "browsh-v{version}-linux-arm64",
|
|
1138
|
+
"macos": "browsh-v{version}-darwin-arm64",
|
|
1139
1139
|
"windows": null
|
|
1140
1140
|
}
|
|
1141
1141
|
}
|
|
@@ -1656,9 +1656,9 @@
|
|
|
1656
1656
|
"doc": "📷 qr code scanner",
|
|
1657
1657
|
"fileNamePattern": {
|
|
1658
1658
|
"amd64": {
|
|
1659
|
-
"linux":
|
|
1660
|
-
"macos":
|
|
1661
|
-
"windows":
|
|
1659
|
+
"linux": "qrscan-{version}-x86_64-unknown-linux-gnu.tar.gz",
|
|
1660
|
+
"macos": "qrscan-{version}-x86_64-apple-darwin.tar.gz",
|
|
1661
|
+
"windows": "qrscan-{version}-i686-pc-windows-msvc.zip"
|
|
1662
1662
|
},
|
|
1663
1663
|
"arm64": {
|
|
1664
1664
|
"linux": null,
|
|
@@ -1673,13 +1673,13 @@
|
|
|
1673
1673
|
"doc": "📂 A TUI like winscp",
|
|
1674
1674
|
"fileNamePattern": {
|
|
1675
1675
|
"amd64": {
|
|
1676
|
-
"linux":
|
|
1677
|
-
"macos":
|
|
1676
|
+
"linux": "termscp-{version}-x86_64-unknown-linux-musl.tar.gz",
|
|
1677
|
+
"macos": "termscp-{version}-x86_64-apple-darwin.tar.gz",
|
|
1678
1678
|
"windows": null
|
|
1679
1679
|
},
|
|
1680
1680
|
"arm64": {
|
|
1681
|
-
"linux":
|
|
1682
|
-
"macos":
|
|
1681
|
+
"linux": "termscp-{version}-aarch64-unknown-linux-musl.tar.gz",
|
|
1682
|
+
"macos": "termscp-{version}-aarch64-apple-darwin.tar.gz",
|
|
1683
1683
|
"windows": null
|
|
1684
1684
|
}
|
|
1685
1685
|
}
|
|
@@ -1707,14 +1707,14 @@
|
|
|
1707
1707
|
"doc": "🗂️ filebrowser provides a file managing interface within a specified directory",
|
|
1708
1708
|
"fileNamePattern": {
|
|
1709
1709
|
"amd64": {
|
|
1710
|
-
"linux":
|
|
1711
|
-
"macos":
|
|
1712
|
-
"windows":
|
|
1710
|
+
"linux": "linux-amd64-filebrowser.tar.gz",
|
|
1711
|
+
"macos": "darwin-amd64-filebrowser.tar.gz",
|
|
1712
|
+
"windows": "windows-amd64-filebrowser.zip"
|
|
1713
1713
|
},
|
|
1714
1714
|
"arm64": {
|
|
1715
|
-
"linux":
|
|
1716
|
-
"macos":
|
|
1717
|
-
"windows":
|
|
1715
|
+
"linux": "linux-arm64-filebrowser.tar.gz",
|
|
1716
|
+
"macos": "darwin-arm64-filebrowser.tar.gz",
|
|
1717
|
+
"windows": "windows-arm64-filebrowser.zip"
|
|
1718
1718
|
}
|
|
1719
1719
|
}
|
|
1720
1720
|
},
|
|
@@ -1724,13 +1724,13 @@
|
|
|
1724
1724
|
"doc": "☁️ Self-hosted file management system with muilt-cloud support.",
|
|
1725
1725
|
"fileNamePattern": {
|
|
1726
1726
|
"amd64": {
|
|
1727
|
-
"linux":
|
|
1728
|
-
"macos":
|
|
1727
|
+
"linux": "cloudreve_{version}_linux_amd64.tar.gz",
|
|
1728
|
+
"macos": "cloudreve_{version}_darwin_amd64.tar.gz",
|
|
1729
1729
|
"windows": null
|
|
1730
1730
|
},
|
|
1731
1731
|
"arm64": {
|
|
1732
|
-
"linux":
|
|
1733
|
-
"macos":
|
|
1732
|
+
"linux": "cloudreve_{version}_linux_arm64.tar.gz",
|
|
1733
|
+
"macos": "cloudreve_{version}_darwin_arm64.tar.gz",
|
|
1734
1734
|
"windows": null
|
|
1735
1735
|
}
|
|
1736
1736
|
}
|
|
@@ -1741,13 +1741,13 @@
|
|
|
1741
1741
|
"doc": "💾 backup program that is fast, efficient and secure. It supports the three major operating systems",
|
|
1742
1742
|
"fileNamePattern": {
|
|
1743
1743
|
"amd64": {
|
|
1744
|
-
"linux":
|
|
1745
|
-
"macos":
|
|
1746
|
-
"windows":
|
|
1744
|
+
"linux": "restic_{version}_linux_amd64.bz2",
|
|
1745
|
+
"macos": "restic_{version}_darwin_amd64.bz2",
|
|
1746
|
+
"windows": "restic_{version}_windows_amd64.zip"
|
|
1747
1747
|
},
|
|
1748
1748
|
"arm64": {
|
|
1749
|
-
"linux":
|
|
1750
|
-
"macos":
|
|
1749
|
+
"linux": "restic_{version}_linux_arm64.bz2",
|
|
1750
|
+
"macos": "restic_{version}_darwin_arm64.bz2",
|
|
1751
1751
|
"windows": null
|
|
1752
1752
|
}
|
|
1753
1753
|
}
|
|
@@ -1758,13 +1758,13 @@
|
|
|
1758
1758
|
"doc": "🔄 Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers.",
|
|
1759
1759
|
"fileNamePattern": {
|
|
1760
1760
|
"amd64": {
|
|
1761
|
-
"linux":
|
|
1762
|
-
"macos":
|
|
1763
|
-
"windows":
|
|
1761
|
+
"linux": "syncthing-linux-amd64-v{version}.tar.gz",
|
|
1762
|
+
"macos": "syncthing-osx-amd64-v{version}.tar.gz",
|
|
1763
|
+
"windows": "syncthing-windows-amd64-v{version}.zip"
|
|
1764
1764
|
},
|
|
1765
1765
|
"arm64": {
|
|
1766
|
-
"linux":
|
|
1767
|
-
"macos":
|
|
1766
|
+
"linux": "syncthing-linux-arm64-v{version}.tar.gz",
|
|
1767
|
+
"macos": "syncthing-osx-arm64-v{version}.tar.gz",
|
|
1768
1768
|
"windows": null
|
|
1769
1769
|
}
|
|
1770
1770
|
}
|
|
@@ -1775,13 +1775,13 @@
|
|
|
1775
1775
|
"doc": "🌐 Istio is an open source service mesh that layers transparently onto existing distributed applications",
|
|
1776
1776
|
"fileNamePattern": {
|
|
1777
1777
|
"amd64": {
|
|
1778
|
-
"linux":
|
|
1779
|
-
"macos":
|
|
1778
|
+
"linux": "istio-{version}-linux-amd64.tar.gz",
|
|
1779
|
+
"macos": "istio-{version}-osx-amd64.tar.gz",
|
|
1780
1780
|
"windows": null
|
|
1781
1781
|
},
|
|
1782
1782
|
"arm64": {
|
|
1783
|
-
"linux":
|
|
1784
|
-
"macos":
|
|
1783
|
+
"linux": "istio-{version}-linux-arm64.tar.gz",
|
|
1784
|
+
"macos": "istio-{version}-osx-arm64.tar.gz",
|
|
1785
1785
|
"windows": null
|
|
1786
1786
|
}
|
|
1787
1787
|
}
|
|
@@ -1792,13 +1792,13 @@
|
|
|
1792
1792
|
"doc": "⏲️ Pomodoro timer for the command-line",
|
|
1793
1793
|
"fileNamePattern": {
|
|
1794
1794
|
"amd64": {
|
|
1795
|
-
"linux":
|
|
1796
|
-
"macos":
|
|
1797
|
-
"windows":
|
|
1795
|
+
"linux": "openpomodoro-cli_{version}_linux_x86_64.tar.gz",
|
|
1796
|
+
"macos": "openpomodoro-cli_{version}_darwin_x86_64.tar.gz",
|
|
1797
|
+
"windows": "openpomodoro-cli_{version}_windows_x86_64.zip"
|
|
1798
1798
|
},
|
|
1799
1799
|
"arm64": {
|
|
1800
|
-
"linux":
|
|
1801
|
-
"macos":
|
|
1800
|
+
"linux": "openpomodoro-cli_{version}_linux_aarch64.tar.gz",
|
|
1801
|
+
"macos": "openpomodoro-cli_{version}_darwin_aarch64.tar.gz",
|
|
1802
1802
|
"windows": null
|
|
1803
1803
|
}
|
|
1804
1804
|
}
|
|
@@ -1809,14 +1809,14 @@
|
|
|
1809
1809
|
"doc": "🦀 Rust Language Server (LSP)",
|
|
1810
1810
|
"fileNamePattern": {
|
|
1811
1811
|
"amd64": {
|
|
1812
|
-
"linux":
|
|
1813
|
-
"macos":
|
|
1814
|
-
"windows":
|
|
1812
|
+
"linux": "rust-analyzer-x86_64-unknown-linux-gnu.gz",
|
|
1813
|
+
"macos": "rust-analyzer-x86_64-apple-darwin.gz",
|
|
1814
|
+
"windows": "rust-analyzer-x86_64-pc-windows-msvc.zip"
|
|
1815
1815
|
},
|
|
1816
1816
|
"arm64": {
|
|
1817
|
-
"linux":
|
|
1818
|
-
"macos":
|
|
1819
|
-
"windows":
|
|
1817
|
+
"linux": "rust-analyzer-aarch64-unknown-linux-gnu.gz",
|
|
1818
|
+
"macos": "rust-analyzer-aarch64-apple-darwin.gz",
|
|
1819
|
+
"windows": "rust-analyzer-aarch64-pc-windows-msvc.zip"
|
|
1820
1820
|
}
|
|
1821
1821
|
}
|
|
1822
1822
|
},
|
|
@@ -1826,13 +1826,13 @@
|
|
|
1826
1826
|
"doc": "🧹 cleans projects from litter files.",
|
|
1827
1827
|
"fileNamePattern": {
|
|
1828
1828
|
"amd64": {
|
|
1829
|
-
"linux":
|
|
1830
|
-
"macos":
|
|
1831
|
-
"windows":
|
|
1829
|
+
"linux": "kondo-linux-x86_64.tar.gz",
|
|
1830
|
+
"macos": "kondo-macos-x86_64.tar.gz",
|
|
1831
|
+
"windows": "kondo-windows-x86_64.zip"
|
|
1832
1832
|
},
|
|
1833
1833
|
"arm64": {
|
|
1834
|
-
"linux":
|
|
1835
|
-
"macos":
|
|
1834
|
+
"linux": "kondo-linux-aarch64.tar.gz",
|
|
1835
|
+
"macos": "kondo-macos-aarch64.tar.gz",
|
|
1836
1836
|
"windows": null
|
|
1837
1837
|
}
|
|
1838
1838
|
}
|
|
@@ -1843,13 +1843,13 @@
|
|
|
1843
1843
|
"doc": "📊 Counts the number of lines of code, comments, and blanks in a project.",
|
|
1844
1844
|
"fileNamePattern": {
|
|
1845
1845
|
"amd64": {
|
|
1846
|
-
"linux":
|
|
1847
|
-
"macos":
|
|
1848
|
-
"windows":
|
|
1846
|
+
"linux": "tokei-x86_64-unknown-linux-gnu.tar.gz",
|
|
1847
|
+
"macos": "tokei-x86_64-apple-darwin.tar.gz",
|
|
1848
|
+
"windows": "tokei-x86_64-pc-windows-msvc.zip"
|
|
1849
1849
|
},
|
|
1850
1850
|
"arm64": {
|
|
1851
|
-
"linux":
|
|
1852
|
-
"macos":
|
|
1851
|
+
"linux": "tokei-aarch64-unknown-linux-gnu.tar.gz",
|
|
1852
|
+
"macos": "tokei-aarch64-apple-darwin.tar.gz",
|
|
1853
1853
|
"windows": null
|
|
1854
1854
|
}
|
|
1855
1855
|
}
|
|
@@ -1860,13 +1860,13 @@
|
|
|
1860
1860
|
"doc": "🐙 A simple terminal UI for git commands",
|
|
1861
1861
|
"fileNamePattern": {
|
|
1862
1862
|
"amd64": {
|
|
1863
|
-
"linux":
|
|
1864
|
-
"macos":
|
|
1865
|
-
"windows":
|
|
1863
|
+
"linux": "lazygit_{version}_linux_x86_64.tar.gz",
|
|
1864
|
+
"macos": "lazygit_{version}_darwin_x86_64.tar.gz",
|
|
1865
|
+
"windows": "lazygit_{version}_windows_x86_64.zip"
|
|
1866
1866
|
},
|
|
1867
1867
|
"arm64": {
|
|
1868
|
-
"linux":
|
|
1869
|
-
"macos":
|
|
1868
|
+
"linux": "lazygit_{version}_linux_arm64.tar.gz",
|
|
1869
|
+
"macos": "lazygit_{version}_darwin_arm64.tar.gz",
|
|
1870
1870
|
"windows": null
|
|
1871
1871
|
}
|
|
1872
1872
|
}
|
|
@@ -1911,13 +1911,13 @@
|
|
|
1911
1911
|
"doc": "📊 Git repository summary on your terminal",
|
|
1912
1912
|
"fileNamePattern": {
|
|
1913
1913
|
"amd64": {
|
|
1914
|
-
"linux":
|
|
1915
|
-
"macos":
|
|
1916
|
-
"windows":
|
|
1914
|
+
"linux": "onefetch-{version}-x86_64-unknown-linux-gnu.tar.gz",
|
|
1915
|
+
"macos": "onefetch-{version}-x86_64-apple-darwin.tar.gz",
|
|
1916
|
+
"windows": "onefetch-{version}-x86_64-pc-windows-msvc.zip"
|
|
1917
1917
|
},
|
|
1918
1918
|
"arm64": {
|
|
1919
|
-
"linux":
|
|
1920
|
-
"macos":
|
|
1919
|
+
"linux": "onefetch-{version}-aarch64-unknown-linux-gnu.tar.gz",
|
|
1920
|
+
"macos": "onefetch-{version}-aarch64-apple-darwin.tar.gz",
|
|
1921
1921
|
"windows": null
|
|
1922
1922
|
}
|
|
1923
1923
|
}
|
|
@@ -1945,9 +1945,9 @@
|
|
|
1945
1945
|
"doc": "🎯 A command runner",
|
|
1946
1946
|
"fileNamePattern": {
|
|
1947
1947
|
"amd64": {
|
|
1948
|
-
"linux":
|
|
1949
|
-
"macos":
|
|
1950
|
-
"windows":
|
|
1948
|
+
"linux": "gitcs_linux_amd64",
|
|
1949
|
+
"macos": "gitcs_darwin_amd64",
|
|
1950
|
+
"windows": "gitcs_windows_amd64.exe"
|
|
1951
1951
|
},
|
|
1952
1952
|
"arm64": {
|
|
1953
1953
|
"linux": null,
|
|
@@ -79,7 +79,7 @@ def read_mapper() -> MapperFileData:
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
def apply_mapper(mapper_data: dict[str, list[ConfigMapper]],
|
|
82
|
-
on_conflict: Literal["
|
|
82
|
+
on_conflict: Literal["throw-error", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"],
|
|
83
83
|
method: Literal["symlink", "copy"]
|
|
84
84
|
):
|
|
85
85
|
operation_records: list[OperationRecord] = []
|
|
@@ -4,7 +4,7 @@ from typing import Optional, Literal, Annotated
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
def main_public_from_parser(method: Annotated[Literal["symlink", "copy"], typer.Option(..., help="Method to use for setting up the config file.")],
|
|
7
|
-
on_conflict: Annotated[Literal["
|
|
7
|
+
on_conflict: Annotated[Literal["throw-error", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., help="Action to take on conflict")],
|
|
8
8
|
which: Annotated[Optional[str], typer.Option(..., help="Specific items to process")] = None,
|
|
9
9
|
interactive: Annotated[bool, typer.Option(..., help="Run in interactive mode")] = False):
|
|
10
10
|
"""Terminology:
|
|
@@ -32,7 +32,7 @@ def main_public_from_parser(method: Annotated[Literal["symlink", "copy"], typer.
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
def main_private_from_parser(method: Annotated[Literal["symlink", "copy"], typer.Option(..., help="Method to use for linking files")],
|
|
35
|
-
on_conflict: Annotated[Literal["
|
|
35
|
+
on_conflict: Annotated[Literal["throw-error", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., help="Action to take on conflict")] = "throw-error",
|
|
36
36
|
which: Annotated[Optional[str], typer.Option(..., help="Specific items to process")] = None,
|
|
37
37
|
interactive: Annotated[bool, typer.Option(..., help="Run in interactive mode")] = False):
|
|
38
38
|
from machineconfig.profile.create_links import ConfigMapper, read_mapper
|
|
@@ -7,7 +7,7 @@ import typer
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def private(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for linking files")],
|
|
10
|
-
on_conflict: Annotated[Literal["
|
|
10
|
+
on_conflict: Annotated[Literal["throw-error", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
|
|
11
11
|
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = None,
|
|
12
12
|
interactive: Annotated[bool, typer.Option(..., "--interactive", "-ia", help="Run in interactive mode")] = False):
|
|
13
13
|
"""🔗 Manage private configuration files."""
|
|
@@ -15,7 +15,7 @@ def private(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--m
|
|
|
15
15
|
create_links_export.main_private_from_parser(method=method, on_conflict=on_conflict, which=which, interactive=interactive)
|
|
16
16
|
|
|
17
17
|
def public(method: Annotated[Literal["symlink", "copy"], typer.Option(..., "--method", "-m", help="Method to use for setting up the config file.")],
|
|
18
|
-
on_conflict: Annotated[Literal["
|
|
18
|
+
on_conflict: Annotated[Literal["throw-error", "overwriteDefaultPath", "backupDefaultPath"], typer.Option(..., "--on-conflict", "-o", help="Action to take on conflict")] = "throw-error",
|
|
19
19
|
which: Annotated[Optional[str], typer.Option(..., "--which", "-w", help="Specific items to process")] = None,
|
|
20
20
|
interactive: Annotated[bool, typer.Option(..., "--interactive", "-ia", help="Run in interactive mode")] = False):
|
|
21
21
|
"""🔗 Manage public configuration files."""
|
|
@@ -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.92")
|
|
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])
|
|
@@ -34,7 +34,7 @@ def main(
|
|
|
34
34
|
dest_path.mkdir(parents=True, exist_ok=True)
|
|
35
35
|
new_path = dest_path.joinpath(orig_path.name)
|
|
36
36
|
|
|
37
|
-
symlink_map(config_file_default_path=orig_path, self_managed_config_file_path=new_path, on_conflict="
|
|
37
|
+
symlink_map(config_file_default_path=orig_path, self_managed_config_file_path=new_path, on_conflict="throw-error")
|
|
38
38
|
|
|
39
39
|
console.print(
|
|
40
40
|
Panel(
|
|
@@ -104,8 +104,18 @@ def get_app():
|
|
|
104
104
|
nw_apps = typer.Typer(help="🔐 [n] Network subcommands", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
105
105
|
nw_apps.command(name="share-terminal", help="📡 [t] Share terminal via web browser")(cli_terminal.main)
|
|
106
106
|
nw_apps.command(name="t", help="Share terminal via web browser", hidden=True)(cli_terminal.main)
|
|
107
|
+
|
|
107
108
|
nw_apps.command(name="share-server", help="🌐 [s] Start local/global server to share files/folders via web browser", no_args_is_help=True)(cli_share_server.main)
|
|
108
109
|
nw_apps.command(name="s", help="Start local/global server to share files/folders via web browser", hidden=True, no_args_is_help=True)(cli_share_server.main)
|
|
110
|
+
|
|
111
|
+
# app = cli_share_server.get_share_file_app()
|
|
112
|
+
# nw_apps.add_typer(app, name="share-file", help="📁 [f] Share a file via relay server", no_args_is_help=True)
|
|
113
|
+
# nw_apps.add_typer(app, name="f", help="Share a file via relay server", hidden=True, no_args_is_help=True)
|
|
114
|
+
nw_apps.command(name="send", no_args_is_help=True, hidden=False, help="📁 [sx] send files from here.")(cli_share_server.share_file_send)
|
|
115
|
+
nw_apps.command(name="sx", no_args_is_help=True, hidden=True, help="📁 [sx] send files from here.")(cli_share_server.share_file_send)
|
|
116
|
+
nw_apps.command(name="receive", no_args_is_help=True, hidden=False, help="📁 [rx] receive files to here.")(cli_share_server.share_file_receive)
|
|
117
|
+
nw_apps.command(name="rx", no_args_is_help=True, hidden=True, help="📁 [rx] receive files to here.")(cli_share_server.share_file_receive)
|
|
118
|
+
|
|
109
119
|
nw_apps.command(name="install-ssh-server", help="📡 [i] Install SSH server")(install_ssh_server)
|
|
110
120
|
nw_apps.command(name="i", help="Install SSH server", hidden=True)(install_ssh_server)
|
|
111
121
|
nw_apps.command(name="add-ssh-key", help="🔑 [k] Add SSH public key to this machine", no_args_is_help=True)(add_ssh_key)
|
|
@@ -117,7 +127,7 @@ def get_app():
|
|
|
117
127
|
nw_apps.command(name="debug-ssh", help="🐛 [d] Debug SSH connection")(debug_ssh)
|
|
118
128
|
nw_apps.command(name="d", help="Debug SSH connection", hidden=True)(debug_ssh)
|
|
119
129
|
|
|
120
|
-
nw_apps.command(name="wifi-select", no_args_is_help=True, help="
|
|
130
|
+
nw_apps.command(name="wifi-select", no_args_is_help=True, help="📶 WiFi connection utility.")(wifi_select)
|
|
121
131
|
nw_apps.command(name="w", no_args_is_help=True, hidden=True)(wifi_select)
|
|
122
132
|
|
|
123
133
|
return nw_apps
|
|
@@ -48,9 +48,9 @@ def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-n
|
|
|
48
48
|
else:
|
|
49
49
|
import platform
|
|
50
50
|
if platform.system() == "Windows":
|
|
51
|
-
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.
|
|
51
|
+
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.92" """)
|
|
52
52
|
else:
|
|
53
|
-
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.
|
|
53
|
+
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.92" """)
|
|
54
54
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
55
55
|
if not no_copy_assets:
|
|
56
56
|
create_default_shell_profile() # involves copying assets too
|
|
@@ -75,7 +75,7 @@ def navigate():
|
|
|
75
75
|
path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
|
|
76
76
|
from machineconfig.utils.code import run_shell_script
|
|
77
77
|
if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
|
|
78
|
-
else: executable = """--with "machineconfig>=6.
|
|
78
|
+
else: executable = """--with "machineconfig>=6.92,textual" """
|
|
79
79
|
run_shell_script(f"""uv run {executable} {path}""")
|
|
80
80
|
|
|
81
81
|
|
|
@@ -96,6 +96,90 @@ def main(
|
|
|
96
96
|
p.wait()
|
|
97
97
|
|
|
98
98
|
|
|
99
|
+
def share_file_send(path: Annotated[str, typer.Argument(help="Path to the file or directory to send")]) -> None:
|
|
100
|
+
"""Send a file using croc with relay server."""
|
|
101
|
+
from machineconfig.utils.installer_utils.installer import install_if_missing
|
|
102
|
+
install_if_missing(which="croc")
|
|
103
|
+
# Get relay server IP from environment or use default
|
|
104
|
+
import socket
|
|
105
|
+
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
106
|
+
s.connect(('8.8.8.8',80))
|
|
107
|
+
local_ip_v4 = s.getsockname()[0]
|
|
108
|
+
s.close()
|
|
109
|
+
relay_port = "443"
|
|
110
|
+
import subprocess
|
|
111
|
+
cmd = f"croc --relay {local_ip_v4}:{relay_port} send {path}"
|
|
112
|
+
typer.echo(f"🚀 Sending file: {path}. Use: devops network f")
|
|
113
|
+
subprocess.run(cmd, shell=True)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def share_file_receive(code: Annotated[str, typer.Argument(help="Receive code (format: '7121-donor-olympic-bicycle' or full relay string)")]) -> None:
|
|
117
|
+
"""Receive a file using croc with relay server.
|
|
118
|
+
On the other computer run:
|
|
119
|
+
(For Windows)
|
|
120
|
+
croc --relay 10.17.62.206:443 0782-paris-pencil-torso
|
|
121
|
+
(For Linux/macOS)
|
|
122
|
+
CROC_SECRET="0782-paris-pencil-torso" croc --relay 10.17.62.206:443 """
|
|
123
|
+
from machineconfig.utils.installer_utils.installer import install_if_missing
|
|
124
|
+
install_if_missing(which="croc")
|
|
125
|
+
import subprocess
|
|
126
|
+
import os
|
|
127
|
+
import platform
|
|
128
|
+
import re
|
|
129
|
+
|
|
130
|
+
env = os.environ.copy()
|
|
131
|
+
is_windows = platform.system() == "Windows"
|
|
132
|
+
|
|
133
|
+
# Parse input to extract components
|
|
134
|
+
secret_code: str | None = None
|
|
135
|
+
relay_server: str | None = None
|
|
136
|
+
|
|
137
|
+
# Check if it's Linux/macOS format with CROC_SECRET
|
|
138
|
+
linux_match = re.match(r'CROC_SECRET\s*=\s*["\']?([^"\']+)["\']?\s+croc\s+--relay\s+(\S+)(?:\s+--yes)?', code)
|
|
139
|
+
if linux_match:
|
|
140
|
+
secret_code = linux_match.group(1)
|
|
141
|
+
relay_server = linux_match.group(2)
|
|
142
|
+
else:
|
|
143
|
+
# Check if it's Windows format or partial command
|
|
144
|
+
windows_match = re.match(r'(?:croc\s+)?(?:--relay\s+(\S+)\s+)?([a-z0-9-]+(?:-[a-z0-9-]+){3})(?:\s+--yes)?', code, re.IGNORECASE)
|
|
145
|
+
if windows_match:
|
|
146
|
+
relay_server = windows_match.group(1)
|
|
147
|
+
secret_code = windows_match.group(2)
|
|
148
|
+
else:
|
|
149
|
+
# Fallback: treat entire code as secret if it looks like a code
|
|
150
|
+
code_pattern = r'^[a-z0-9-]+(?:-[a-z0-9-]+){3}$'
|
|
151
|
+
if re.match(code_pattern, code.strip(), re.IGNORECASE):
|
|
152
|
+
secret_code = code.strip()
|
|
153
|
+
|
|
154
|
+
if not secret_code:
|
|
155
|
+
raise ValueError(f"Could not parse croc code from input: {code}")
|
|
156
|
+
|
|
157
|
+
# Build the appropriate command for current OS
|
|
158
|
+
if is_windows:
|
|
159
|
+
# Windows format: croc --relay server:port secret-code --yes
|
|
160
|
+
cmd = "croc"
|
|
161
|
+
if relay_server:
|
|
162
|
+
cmd += f" --relay {relay_server}"
|
|
163
|
+
cmd += f" {secret_code} --yes"
|
|
164
|
+
else:
|
|
165
|
+
# Linux/macOS format: CROC_SECRET="secret-code" croc --relay server:port --yes
|
|
166
|
+
env["CROC_SECRET"] = secret_code
|
|
167
|
+
cmd = "croc"
|
|
168
|
+
if relay_server:
|
|
169
|
+
cmd += f" --relay {relay_server}"
|
|
170
|
+
cmd += " --yes"
|
|
171
|
+
|
|
172
|
+
subprocess.run(cmd, shell=True, env=env)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def get_share_file_app():
|
|
176
|
+
app = typer.Typer(name="share-file", help="Send or receive files using croc with relay server.")
|
|
177
|
+
app.command(name="send", no_args_is_help=True, hidden=False, help="[s] send files from here.")(share_file_send)
|
|
178
|
+
app.command(name="s", no_args_is_help=True, hidden=True, help="[s] send files from here.")(share_file_send)
|
|
179
|
+
app.command(name="receive", no_args_is_help=True, hidden=False, help="[r] receive files to here.")(share_file_receive)
|
|
180
|
+
app.command(name="r", no_args_is_help=True, hidden=True, help="[r] receive files to here.")(share_file_receive)
|
|
181
|
+
return app
|
|
182
|
+
|
|
99
183
|
def main_with_parser():
|
|
100
184
|
typer.run(main)
|
|
101
185
|
|
|
@@ -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.92" 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."
|
|
@@ -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.92" 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
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import marimo
|
|
2
|
+
from typing import Any
|
|
3
|
+
from types import FunctionType
|
|
4
|
+
|
|
5
|
+
app = marimo.App(width="full")
|
|
6
|
+
|
|
7
|
+
@app.cell(hide_code=True)
|
|
8
|
+
def _(mo: Any):
|
|
9
|
+
mo.md(r"""# Globalize Lambda to Python Script""")
|
|
10
|
+
return
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@app.cell
|
|
14
|
+
def _(func: FunctionType):
|
|
15
|
+
# Your snippet code
|
|
16
|
+
from machineconfig.utils.meta import lambda_to_python_script
|
|
17
|
+
exec(
|
|
18
|
+
lambda_to_python_script(
|
|
19
|
+
lambda: func(),
|
|
20
|
+
in_global=True,
|
|
21
|
+
import_module=False,
|
|
22
|
+
),
|
|
23
|
+
)
|
|
24
|
+
return
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@app.cell
|
|
28
|
+
def _():
|
|
29
|
+
import marimo as mo
|
|
30
|
+
return (mo,)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
if __name__ == "__main__":
|
|
34
|
+
app.run()
|
|
@@ -32,30 +32,30 @@ if (Test-Path "$CONFIG_ROOT\scripts\windows\mcfgs.ps1") {
|
|
|
32
32
|
|
|
33
33
|
function lsdla { lsd -la }
|
|
34
34
|
Set-Alias -Name l -Value lsdla -Option AllScope
|
|
35
|
-
function d { warp_in_op_code devops
|
|
36
|
-
function c { warp_in_op_code cloud
|
|
37
|
-
function a { warp_in_op_code agents
|
|
38
|
-
function ss { warp_in_op_code sessions
|
|
39
|
-
function ff { warp_in_op_code ftpx
|
|
40
|
-
function f { warp_in_op_code fire
|
|
41
|
-
function rr { warp_in_op_code croshell
|
|
42
|
-
function u { warp_in_op_code utils
|
|
43
|
-
function t { warp_in_op_code terminal
|
|
35
|
+
function d { warp_in_op_code devops $args }
|
|
36
|
+
function c { warp_in_op_code cloud $args }
|
|
37
|
+
function a { warp_in_op_code agents $args }
|
|
38
|
+
function ss { warp_in_op_code sessions $args }
|
|
39
|
+
function ff { warp_in_op_code ftpx $args }
|
|
40
|
+
function f { warp_in_op_code fire $args }
|
|
41
|
+
function rr { warp_in_op_code croshell $args }
|
|
42
|
+
function u { warp_in_op_code utils $args }
|
|
43
|
+
function t { warp_in_op_code terminal $args }
|
|
44
44
|
|
|
45
45
|
}
|
|
46
46
|
else {
|
|
47
47
|
Write-Host "Missing config files: $CONFIG_ROOT"
|
|
48
48
|
function lsdla { lsd -la }
|
|
49
49
|
Set-Alias -Name l -Value lsdla -Option AllScope
|
|
50
|
-
function d { devops
|
|
51
|
-
function c { cloud
|
|
52
|
-
function a { agents
|
|
53
|
-
function ss { sessions
|
|
54
|
-
function ff { ftpx
|
|
55
|
-
function f { fire
|
|
56
|
-
function rr { croshell
|
|
57
|
-
function u { utils
|
|
58
|
-
function t { terminal
|
|
50
|
+
function d { devops $args }
|
|
51
|
+
function c { cloud $args }
|
|
52
|
+
function a { agents $args }
|
|
53
|
+
function ss { sessions $args }
|
|
54
|
+
function ff { ftpx $args }
|
|
55
|
+
function f { fire $args }
|
|
56
|
+
function rr { croshell $args }
|
|
57
|
+
function u { utils $args }
|
|
58
|
+
function t { terminal $args }
|
|
59
59
|
|
|
60
60
|
}
|
|
61
61
|
|
|
@@ -56,3 +56,19 @@ nu_indicator = ''
|
|
|
56
56
|
unknown_indicator = 'mystery shell'
|
|
57
57
|
style = 'cyan bold'
|
|
58
58
|
disabled = false
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
[git_branch]
|
|
62
|
+
disabled = true
|
|
63
|
+
|
|
64
|
+
[git_commit]
|
|
65
|
+
disabled = true
|
|
66
|
+
|
|
67
|
+
[git_state]
|
|
68
|
+
disabled = true
|
|
69
|
+
|
|
70
|
+
[git_status]
|
|
71
|
+
disabled = true
|
|
72
|
+
|
|
73
|
+
[git_metrics]
|
|
74
|
+
disabled = true
|
|
@@ -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.92" 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.92" mcfg $args
|
|
6
6
|
}
|
|
7
7
|
function d { mcfg devops @args }
|
|
8
8
|
function c { mcfg cloud @args }
|
machineconfig/utils/installer.py
CHANGED
|
@@ -146,7 +146,6 @@ def install_bulk(installers_data: list[InstallerData], safe: bool = False, jobs:
|
|
|
146
146
|
print("🧹 Fresh install requested - clearing version cache...")
|
|
147
147
|
PathExtended(INSTALL_VERSION_ROOT).delete(sure=True)
|
|
148
148
|
print("✅ Version cache cleared")
|
|
149
|
-
|
|
150
149
|
if safe:
|
|
151
150
|
pass
|
|
152
151
|
# print("⚠️ Safe installation mode activated...")
|
|
@@ -11,17 +11,11 @@ from machineconfig.jobs.installer.package_groups import PACKAGE_GROUPS, PACKAGE_
|
|
|
11
11
|
console = Console()
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
def _handle_installer_not_found(search_term: str,
|
|
14
|
+
def _handle_installer_not_found(search_term: str, all_names: list[str]) -> None: # type: ignore
|
|
15
15
|
"""Handle installer not found with friendly suggestions using fuzzy matching."""
|
|
16
16
|
from difflib import get_close_matches
|
|
17
|
-
|
|
18
|
-
all_names = []
|
|
19
|
-
for inst in all_installers:
|
|
20
|
-
exe_name = inst["appName"]
|
|
21
|
-
all_names.append(exe_name)
|
|
22
17
|
close_matches = get_close_matches(search_term, all_names, n=5, cutoff=0.4)
|
|
23
18
|
console.print(f"\n❌ '[red]{search_term}[/red]' was not found.", style="bold")
|
|
24
|
-
|
|
25
19
|
if close_matches:
|
|
26
20
|
console.print("🤔 Did you mean one of these?", style="yellow")
|
|
27
21
|
table = Table(show_header=False, box=None, pad_edge=False)
|
|
@@ -31,18 +25,16 @@ def _handle_installer_not_found(search_term: str, all_installers: list["Installe
|
|
|
31
25
|
else:
|
|
32
26
|
console.print("📋 Here are some available options:", style="blue")
|
|
33
27
|
# Show first 10 installers as examples
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
sample_names
|
|
38
|
-
|
|
28
|
+
if len(all_names) > 10:
|
|
29
|
+
sample_names = all_names[:10]
|
|
30
|
+
else:
|
|
31
|
+
sample_names = all_names
|
|
39
32
|
table = Table(show_header=False, box=None, pad_edge=False)
|
|
40
33
|
for i, name in enumerate(sample_names, 1):
|
|
41
34
|
table.add_row(f"[cyan]{i}.[/cyan]", f"[green]{name}[/green]")
|
|
42
35
|
console.print(table)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
console.print(f" [dim]... and {len(all_installers) - 10} more[/dim]")
|
|
36
|
+
if len(all_names) > 10:
|
|
37
|
+
console.print(f" [dim]... and {len(all_names) - 10} more[/dim]")
|
|
46
38
|
|
|
47
39
|
panel = Panel(f"[bold blue]💡 Use 'ia' to interactively browse all available installers.[/bold blue]\n[bold blue]💡 Use one of the categories: {list(get_args(PACKAGE_GROUPS))}[/bold blue]", title="[yellow]Helpful Tips[/yellow]", border_style="yellow")
|
|
48
40
|
console.print(panel)
|
|
@@ -140,23 +132,28 @@ def install_interactively():
|
|
|
140
132
|
|
|
141
133
|
|
|
142
134
|
def install_group(package_group: str):
|
|
143
|
-
panel = Panel(f"[bold yellow]Installing programs from category: [green]{package_group}[/green][/bold yellow]", title="[bold blue]📦 Category Installation[/bold blue]", border_style="blue", padding=(1, 2))
|
|
144
|
-
console.print(panel)
|
|
145
135
|
from machineconfig.utils.installer import get_installers, install_bulk
|
|
146
136
|
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
147
137
|
if package_group in PACKAGE_GROUP2NAMES:
|
|
138
|
+
panel = Panel(f"[bold yellow]Installing programs from category: [green]{package_group}[/green][/bold yellow]", title="[bold blue]📦 Category Installation[/bold blue]", border_style="blue", padding=(1, 2))
|
|
139
|
+
console.print(panel)
|
|
148
140
|
installers_ = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=[package_group])
|
|
149
141
|
install_bulk(installers_data=installers_)
|
|
142
|
+
return
|
|
143
|
+
options_system = dynamically_extract_installers_system_groups_from_scripts()
|
|
144
|
+
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
145
|
+
from machineconfig.utils.code import run_shell_script
|
|
146
|
+
for an_item in options_system:
|
|
147
|
+
if an_item["appName"] == package_group:
|
|
148
|
+
panel = Panel(f"[bold yellow]Installing programs from category: [green]{package_group}[/green][/bold yellow]", title="[bold blue]📦 Category Installation[/bold blue]", border_style="blue", padding=(1, 2))
|
|
149
|
+
console.print(panel)
|
|
150
|
+
program = an_item["fileNamePattern"][get_normalized_arch()][get_os_name()]
|
|
151
|
+
if program is not None:
|
|
152
|
+
run_shell_script(program)
|
|
153
|
+
break
|
|
150
154
|
else:
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
from machineconfig.utils.code import run_shell_script
|
|
154
|
-
for an_item in options_system:
|
|
155
|
-
if an_item["appName"] == package_group:
|
|
156
|
-
program = an_item["fileNamePattern"][get_normalized_arch()][get_os_name()]
|
|
157
|
-
if program is not None:
|
|
158
|
-
run_shell_script(program)
|
|
159
|
-
break
|
|
155
|
+
console.print(f"❌ [red]Group '{package_group}' not found.[/red]", style="bold")
|
|
156
|
+
_handle_installer_not_found(package_group, all_names=list(PACKAGE_GROUP2NAMES.keys()) + [item['appName'] for item in options_system])
|
|
160
157
|
|
|
161
158
|
|
|
162
159
|
def choose_from_system_package_groups(options_system: dict[str, tuple[str, str]]) -> str:
|
|
@@ -184,7 +181,6 @@ def install_clis(clis_names: list[str]):
|
|
|
184
181
|
from machineconfig.utils.schemas.installer.installer_types import get_normalized_arch, get_os_name
|
|
185
182
|
from machineconfig.utils.installer import get_installers
|
|
186
183
|
from machineconfig.utils.installer_utils.installer_class import Installer
|
|
187
|
-
|
|
188
184
|
total_messages: list[str] = []
|
|
189
185
|
for a_which in clis_names:
|
|
190
186
|
all_installers = get_installers(os=get_os_name(), arch=get_normalized_arch(), which_cats=None)
|
|
@@ -195,7 +191,7 @@ def install_clis(clis_names: list[str]):
|
|
|
195
191
|
selected_installer = installer
|
|
196
192
|
break
|
|
197
193
|
if selected_installer is None:
|
|
198
|
-
_handle_installer_not_found(a_which, all_installers)
|
|
194
|
+
_handle_installer_not_found(a_which, all_names=[inst["appName"] for inst in all_installers])
|
|
199
195
|
return None
|
|
200
196
|
message = Installer(selected_installer).install_robust(version=None) # finish the task
|
|
201
197
|
total_messages.append(message)
|
machineconfig/utils/links.py
CHANGED
|
@@ -96,14 +96,14 @@ def build_links(target_paths: list[tuple[PLike, str]], repo_root: PLike):
|
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
def symlink_map(config_file_default_path: PathExtended, self_managed_config_file_path: PathExtended,
|
|
99
|
-
on_conflict: Literal["
|
|
99
|
+
on_conflict: Literal["throw-error", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"]
|
|
100
100
|
) -> OperationResult:
|
|
101
101
|
"""helper function. creates a symlink from `config_file_default_path` to `self_managed_config_file_path`.
|
|
102
102
|
|
|
103
103
|
Returns a dict with 'action' and 'details' keys describing what was done.
|
|
104
104
|
|
|
105
105
|
on_conflict strategies:
|
|
106
|
-
-
|
|
106
|
+
- throw-error: Raise exception when files differ
|
|
107
107
|
- overwriteSelfManaged: Delete self_managed_config_file_path (self-managed), move config_file_default_path to self_managed_config_file_path, create symlink
|
|
108
108
|
- backupSelfManaged: Backup self_managed_config_file_path (self-managed), move config_file_default_path to self_managed_config_file_path, create symlink
|
|
109
109
|
- overwriteDefaultPath: Delete config_file_default_path (default path), create symlink to self_managed_config_file_path
|
|
@@ -162,7 +162,14 @@ def symlink_map(config_file_default_path: PathExtended, self_managed_config_file
|
|
|
162
162
|
config_file_default_path.delete(sure=True)
|
|
163
163
|
else:
|
|
164
164
|
# Files are different, use on_conflict strategy
|
|
165
|
-
if on_conflict == "
|
|
165
|
+
if on_conflict == "throw-error":
|
|
166
|
+
import subprocess
|
|
167
|
+
command = f"""delta --side-by-side "{config_file_default_path}" "{self_managed_config_file_path}" """
|
|
168
|
+
try:
|
|
169
|
+
console.print(Panel(f"🆘 CONFLICT DETECTED | Showing diff between {config_file_default_path} and {self_managed_config_file_path}", title="Conflict Detected", expand=False))
|
|
170
|
+
subprocess.run(command, shell=True, check=True)
|
|
171
|
+
except Exception:
|
|
172
|
+
console.print(Panel("⚠️ Could not show diff using 'delta'. Please install 'delta' for better diff visualization.", title="Delta Not Found", expand=False))
|
|
166
173
|
raise RuntimeError(f"Conflict detected: {config_file_default_path} and {self_managed_config_file_path} both exist with different content")
|
|
167
174
|
elif on_conflict == "overwriteSelfManaged":
|
|
168
175
|
action_taken = "backing_up_target"
|
|
@@ -235,7 +242,7 @@ def symlink_map(config_file_default_path: PathExtended, self_managed_config_file
|
|
|
235
242
|
return {"action": action_taken, "details": details}
|
|
236
243
|
|
|
237
244
|
|
|
238
|
-
def copy_map(config_file_default_path: PathExtended, self_managed_config_file_path: PathExtended, on_conflict: Literal["
|
|
245
|
+
def copy_map(config_file_default_path: PathExtended, self_managed_config_file_path: PathExtended, on_conflict: Literal["throw-error", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"]) -> OperationResult:
|
|
239
246
|
config_file_default_path = PathExtended(config_file_default_path).expanduser().absolute()
|
|
240
247
|
self_managed_config_file_path = PathExtended(self_managed_config_file_path).expanduser().absolute()
|
|
241
248
|
|
|
@@ -283,7 +290,7 @@ def copy_map(config_file_default_path: PathExtended, self_managed_config_file_pa
|
|
|
283
290
|
else:
|
|
284
291
|
# Files are different, use on_conflict strategy
|
|
285
292
|
match on_conflict:
|
|
286
|
-
case "
|
|
293
|
+
case "throw-error":
|
|
287
294
|
raise RuntimeError(f"Conflict detected: {config_file_default_path} and {self_managed_config_file_path} both exist with different content")
|
|
288
295
|
case "overwriteSelfManaged":
|
|
289
296
|
action_taken = "backing_up_target"
|
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.92"
|
|
12
12
|
DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
|
|
13
13
|
|
|
14
14
|
class SSH:
|
|
@@ -51,11 +51,11 @@ machineconfig/cluster/templates/cli_trogon.py,sha256=PFWGy8SFYIhT9r3ZV4oIEYfImsQ
|
|
|
51
51
|
machineconfig/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
52
|
machineconfig/jobs/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
53
|
machineconfig/jobs/installer/check_installations.py,sha256=hkHmmT7Bx3_QWRn2v8dCKOzAapFzqHRzbe-Q08GLnKE,10743
|
|
54
|
-
machineconfig/jobs/installer/installer_data.json,sha256
|
|
54
|
+
machineconfig/jobs/installer/installer_data.json,sha256=hF8J7-jMOZCOSFMUuko9nIsFi37zKdV9Yg52F6zeGMk,80914
|
|
55
55
|
machineconfig/jobs/installer/package_groups.py,sha256=CvSJogQgnz5HZfGS9DoCoPfmv0qUinLfh76zw4x58Q8,5262
|
|
56
56
|
machineconfig/jobs/installer/custom/boxes.py,sha256=ws8QRbDn48oKhbQntr54I0nSfkwINbprjTy0HOpuX40,1974
|
|
57
57
|
machineconfig/jobs/installer/custom/gh.py,sha256=gn7TUSrsLx7uqFqj1Z-iYglS0EYBSgtJ9jWHxaJIfXM,4119
|
|
58
|
-
machineconfig/jobs/installer/custom/hx.py,sha256=
|
|
58
|
+
machineconfig/jobs/installer/custom/hx.py,sha256=QoTdAtr1AoqQO2bJqyVAZY8kjyWzVBbtUTj6hSd1wOY,5959
|
|
59
59
|
machineconfig/jobs/installer/custom_dev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
60
|
machineconfig/jobs/installer/custom_dev/alacritty.py,sha256=STXertp5pE6VVhcjAfZSKBxAC94S2HAzas646jwd4ow,2754
|
|
61
61
|
machineconfig/jobs/installer/custom_dev/brave.py,sha256=kHgGRwgKrvpIlGzmdnWO6HJnSrnj8RlBEV_1Zz4s_Hw,2829
|
|
@@ -94,8 +94,8 @@ machineconfig/profile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
94
94
|
machineconfig/profile/backup.toml,sha256=Hb25sIdKVvLqOF62NgiOpGZxd45I6IhsNHu623RtfQQ,766
|
|
95
95
|
machineconfig/profile/bash_shell_profiles.md,sha256=mio0xkMTwO-F3fikWIfgcdQaPCmQrmkxJMNtZsTe9TI,514
|
|
96
96
|
machineconfig/profile/create_helper.py,sha256=_iNeuwmcEGTx6sf_f40JKHfOCuJRZQRpyE8Fo_3Q6bI,1519
|
|
97
|
-
machineconfig/profile/create_links.py,sha256=
|
|
98
|
-
machineconfig/profile/create_links_export.py,sha256=
|
|
97
|
+
machineconfig/profile/create_links.py,sha256=Zz9gDtL1C33uQdBzXLMPWq8-7_OklyPQ3FQRsueWO-k,14220
|
|
98
|
+
machineconfig/profile/create_links_export.py,sha256=n5GKQZGd0YytW_YVuau_SL7CTDWuNEe4O9x1yEsHGv8,3297
|
|
99
99
|
machineconfig/profile/create_shell_profile.py,sha256=fib3YOj4QMV4dy7ysJtSzner1x-0nGtnGvnTKGyq578,10280
|
|
100
100
|
machineconfig/profile/mapper.toml,sha256=CGGKi4VbRo1-AuHU7w1g94NbAys0pxn6fI-2l-lUmY0,12469
|
|
101
101
|
machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
|
|
@@ -162,7 +162,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
|
|
|
162
162
|
machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
163
163
|
machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
|
|
164
164
|
machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
|
|
165
|
-
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=
|
|
165
|
+
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=OeBwVcNEx17Fh7ARc4hFCEC4kdzqSfWyyO6hZ_dbGnw,6932
|
|
166
166
|
machineconfig/scripts/python/helpers_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
167
|
machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py,sha256=YD6-rtudHNip8tx85amSmOZZIHBP9khq4az3dF41j6U,5934
|
|
168
168
|
machineconfig/scripts/python/helpers_agents/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
|
|
@@ -192,13 +192,13 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
|
|
|
192
192
|
machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
193
193
|
machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
|
|
194
194
|
machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
195
|
-
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=
|
|
196
|
-
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=
|
|
195
|
+
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=QygQk1aH_n1vzLMmMcsXGsBtQu0F3aY0CTrW9wmAH9A,7222
|
|
196
|
+
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=dduLPmaxOU9eOOy76QTG8Yzi5WQdewbiJ8X615Z19wk,2487
|
|
197
197
|
machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
|
|
198
|
-
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=
|
|
198
|
+
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=9NcVJvPYaUDtmI_DSKthZxR4emMBeNWVM_M5f0YR8EQ,7302
|
|
199
199
|
machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
|
|
200
|
-
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=
|
|
201
|
-
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=
|
|
200
|
+
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=ijJgwxakmij26kcir7Zem54UHiD2PEoFFhmcj6OC9XM,6621
|
|
201
|
+
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=reQNORPFuqGPho_5pcXPRwKp-7lcKk4u4GqwkTW_KFM,7859
|
|
202
202
|
machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
|
|
203
203
|
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=B9pnosujOxZLpwzJO4YAqeO-2rvvOFIZgrUwGREZXfM,11118
|
|
204
204
|
machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Dn8luB6QJzxKiiFSC-NMqiYddWZoca3A8eOjMYZDzTc,5598
|
|
@@ -225,7 +225,7 @@ machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wd
|
|
|
225
225
|
machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
|
|
226
226
|
machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
|
|
227
227
|
machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
|
|
228
|
-
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=
|
|
228
|
+
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=YpRZ7WxCVINHUglX7VMukOEmty20x1xGFb6Sl554JNk,10450
|
|
229
229
|
machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
|
|
230
230
|
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=vSDtrF4829jziwp6WZmGt9G8MJ9jY4hfXqtf0vhkYSE,607
|
|
231
231
|
machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
|
|
@@ -241,7 +241,7 @@ machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdC
|
|
|
241
241
|
machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
|
|
242
242
|
machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=CkIl85hZLtG9k7yXLSzqi88YrilHV4hIUWHAPBwxWjw,8922
|
|
243
243
|
machineconfig/scripts/python/nw/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
|
|
244
|
-
machineconfig/scripts/python/nw/mount_nfs,sha256=
|
|
244
|
+
machineconfig/scripts/python/nw/mount_nfs,sha256=x5_rKgP2Kza6LHCHFJqE0Ej___aUXHs-AwzcIlhYY-g,1855
|
|
245
245
|
machineconfig/scripts/python/nw/mount_nfs.py,sha256=lOMDY4RS7tx8gsCazVR5tNNwFbaRyO2PJlnwBCDQgCM,3573
|
|
246
246
|
machineconfig/scripts/python/nw/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
|
|
247
247
|
machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
|
|
@@ -260,7 +260,7 @@ machineconfig/scripts/windows/term.ps1,sha256=nme_OWis84qN-zI2c0rdysNcDIdoaEKajX
|
|
|
260
260
|
machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
|
|
261
261
|
machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
|
|
262
262
|
machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
|
|
263
|
-
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=
|
|
263
|
+
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=OijoiRRMdxQUKD-spVh_FDdISxj9At5_oeNrUv8Iwug,322
|
|
264
264
|
machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
|
|
265
265
|
machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
|
|
266
266
|
machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
|
|
@@ -320,7 +320,8 @@ machineconfig/settings/lvim/linux/config.lua,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
|
|
|
320
320
|
machineconfig/settings/lvim/windows/config.lua,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
321
321
|
machineconfig/settings/lvim/windows/archive/config_additional.lua,sha256=EM__UsSkXDIIN7tIdMV-tkQV4z_jUmDCmHhjamEyiUA,651
|
|
322
322
|
machineconfig/settings/lvim/windows/lua/user/custom_config.lua,sha256=wbSm8cZubnPfUhYDmd5HKYnVRZUYVj701FBax2ZgjtE,269
|
|
323
|
-
machineconfig/settings/marimo/marimo.toml,sha256=
|
|
323
|
+
machineconfig/settings/marimo/marimo.toml,sha256=tqEKoinBB4KpbOhqMbSjRhNAudpGiT1AvY05f3P2clc,1356
|
|
324
|
+
machineconfig/settings/marimo/snippets/globalize.py,sha256=HAS8A-gm1bW0rO7tF8SSvuE5bJMksfIpgNpMThAfzq4,600
|
|
324
325
|
machineconfig/settings/mprocs/windows/mprocs.yaml,sha256=qn_bPy8eSWMAlhA9PLVO_vxqlSlzzrQ1CldFjSKpLD4,864
|
|
325
326
|
machineconfig/settings/mprocs/windows/other,sha256=gIRC6swgxOmXAWEJPCOKmAdDfmLQ2-Vh9A1vsj0atAY,276
|
|
326
327
|
machineconfig/settings/pistol/pistol.conf,sha256=zjhSJDA3X1TDLRfimnVgJT_Dt54lDJc5hlTBB649d5A,378
|
|
@@ -339,9 +340,9 @@ machineconfig/settings/shells/ipy/profiles/default/startup/playext.py,sha256=OJ3
|
|
|
339
340
|
machineconfig/settings/shells/kitty/kitty.conf,sha256=lDdx-dUX3jbKGb3BkS2f2TOpmgGiS-CI-_-lFvhD5A4,52870
|
|
340
341
|
machineconfig/settings/shells/nushell/config.nu,sha256=xtko80MPteDXuOJmwJHNFhXmfHT6fIBfmTgsF29GiEc,748
|
|
341
342
|
machineconfig/settings/shells/nushell/env.nu,sha256=4VmaXb-qP6qnMD5TPzkXMLFNlB5QC4l9HEzCvXZE2GQ,315
|
|
342
|
-
machineconfig/settings/shells/pwsh/init.ps1,sha256=
|
|
343
|
+
machineconfig/settings/shells/pwsh/init.ps1,sha256=F4rcihit8wkTY28uM2lTpAnLhtYylH1oX2-JBVwU7jk,2758
|
|
343
344
|
machineconfig/settings/shells/pwsh/profile.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
344
|
-
machineconfig/settings/shells/starship/starship.toml,sha256=
|
|
345
|
+
machineconfig/settings/shells/starship/starship.toml,sha256=d5lWKC0AnTcriRAZV1opEZy76QknSpKFgJ3jyW9_vZ0,1305
|
|
345
346
|
machineconfig/settings/shells/vtm/settings.xml,sha256=5TNXd-i0eUGo2w3tuhY9aOkwoJdqih8_HO_U6uL2Dts,18262
|
|
346
347
|
machineconfig/settings/shells/wezterm/wezterm.lua,sha256=ZaUFqVNibGD5cyzlnYhIMAakTig6P7qggi5hvHGASPk,6210
|
|
347
348
|
machineconfig/settings/shells/wt/settings.json,sha256=G3MzbSfkNDoCbFfKKuS5wuSWsMff4oj6s6m-iXryNz8,10353
|
|
@@ -377,7 +378,7 @@ machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE3
|
|
|
377
378
|
machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
|
|
378
379
|
machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
|
|
379
380
|
machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
|
|
380
|
-
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=
|
|
381
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=_wP2n9nlndOZeQXngmzXvTJqevcnZzE-JTk3s7ezcrI,488
|
|
381
382
|
machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
|
|
382
383
|
machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
|
|
383
384
|
machineconfig/setup_mac/apps_gui.sh,sha256=3alvddg918oMlJB2aUWJWpGGoaq5atlxcaOwhnyXlRI,9517
|
|
@@ -392,15 +393,15 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
|
|
|
392
393
|
machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
|
|
393
394
|
machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
|
|
394
395
|
machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
|
|
395
|
-
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=
|
|
396
|
+
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=E1Atk7Cq7gFKoyfTmKThHsjYyMlAj0ikw8mygZXJib4,616
|
|
396
397
|
machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
397
398
|
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
|
|
398
399
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
399
400
|
machineconfig/utils/accessories.py,sha256=Rs8R0GUb2Ub6YimkgXHnI02CShS5BKlrZdCigVxfPlk,4339
|
|
400
401
|
machineconfig/utils/code.py,sha256=3YnLsCWSPyDXHl_OlvPueIYXFv_o_jmc06GkvHAV0mw,6451
|
|
401
|
-
machineconfig/utils/installer.py,sha256=
|
|
402
|
+
machineconfig/utils/installer.py,sha256=1ScBaTe_pRsfTYht9-LXmirgnNizNy8u1GgetUfEDO4,10351
|
|
402
403
|
machineconfig/utils/io.py,sha256=4dSieoqZO8Vvi4vW8lLoITDHBvmFp4dtl3kyeZHQ6Co,2528
|
|
403
|
-
machineconfig/utils/links.py,sha256=
|
|
404
|
+
machineconfig/utils/links.py,sha256=ffc8fwbQ1TVdXYn2J1rq7gCZHidxwCzlSppdyrzq4LA,24382
|
|
404
405
|
machineconfig/utils/meta.py,sha256=4ocYH3Zi6bVN6FVgXoGIfoasV6oxi67I9rQ8hvyYinc,9892
|
|
405
406
|
machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
|
|
406
407
|
machineconfig/utils/options.py,sha256=VWYx3EKJxIp-CJ8gDGYdjclKSc1tMUhyrC8v3seeneo,7447
|
|
@@ -410,7 +411,7 @@ machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,
|
|
|
410
411
|
machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
|
|
411
412
|
machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
|
|
412
413
|
machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
|
|
413
|
-
machineconfig/utils/ssh.py,sha256=
|
|
414
|
+
machineconfig/utils/ssh.py,sha256=o9fIBd2kJ5YWfuuYU82dx8dvzTKGnXZ6uK6txNgDw4U,39008
|
|
414
415
|
machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
|
|
415
416
|
machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
|
|
416
417
|
machineconfig/utils/upgrade_packages.py,sha256=3H-U-Le0kn7ACYf_RHMSDav2UGnWzZEqgaL9bC0Yn4s,3695
|
|
@@ -431,7 +432,7 @@ machineconfig/utils/files/ouch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
|
431
432
|
machineconfig/utils/files/ouch/decompress.py,sha256=7qPaEkMerBBXzeZyFn8hLODHZJv1aty-yGgwBxLgVys,1413
|
|
432
433
|
machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
433
434
|
machineconfig/utils/installer_utils/github_release_bulk.py,sha256=WJf_qZlF02SmIc6C7o1h4Gy4gAaJAfeAS8O9s2Itj-k,6535
|
|
434
|
-
machineconfig/utils/installer_utils/installer.py,sha256=
|
|
435
|
+
machineconfig/utils/installer_utils/installer.py,sha256=HHjegZb8y1wpqe26S7laHc6DkCutfEDN4xe7wyeHV4U,11513
|
|
435
436
|
machineconfig/utils/installer_utils/installer_abc.py,sha256=cXNDIhq1itdGUCxososxfJo029eMlVOj6hu8GY22gC4,11672
|
|
436
437
|
machineconfig/utils/installer_utils/installer_class.py,sha256=t9OlHF3br7zuYuLuO75voedRPrDmo9YOXSDxRNXe3Jk,17188
|
|
437
438
|
machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=d3pwhmE-EuHPxaIoTTZeUdDUEK9QqtimV8zO3vV-7N4,2052
|
|
@@ -439,8 +440,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
|
|
|
439
440
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
440
441
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
441
442
|
machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
442
|
-
machineconfig-6.
|
|
443
|
-
machineconfig-6.
|
|
444
|
-
machineconfig-6.
|
|
445
|
-
machineconfig-6.
|
|
446
|
-
machineconfig-6.
|
|
443
|
+
machineconfig-6.92.dist-info/METADATA,sha256=L8o9zBx9GVMm_RUWgQO_gNAmieK1skgXSZhIHvHP9_o,2928
|
|
444
|
+
machineconfig-6.92.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
445
|
+
machineconfig-6.92.dist-info/entry_points.txt,sha256=uf_ZPJa02_y3Fw5Z7m22cq7PwxhYd1QV2FfPNZTl_dQ,519
|
|
446
|
+
machineconfig-6.92.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
447
|
+
machineconfig-6.92.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|