machineconfig 5.84__py3-none-any.whl → 5.85__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.

@@ -33,8 +33,9 @@ config2 = {this = '~/.cli-m365-all-connections.json', to_this = '~/dotfiles/cred
33
33
  config3 = {this = '~/.cli-m365-connection.json', to_this = '~/dotfiles/creds/tokens/.cli-m365-connection.json'}
34
34
  # config2 = {this = '~/.cli-m365-tokens.json', to_this = '~/dotfiles/creds/tokens/.cli-m365-tokens.json'}
35
35
 
36
- [bash_linux]
37
- bashrc = {this = '~/.inputrc', to_this = '~/dotfiles/shells/bash/.inputrc'}
36
+ # [bash_linux]
37
+ # bashrc = {this = '~/.inputrc', to_this = '~/dotfiles/shells/bash/.inputrc'}
38
+
38
39
  [remmina]
39
40
  data = {this = '~/.var/app/org.remmina.Remmina/data/remmina', to_this = '~/dotfiles/creds/RDP/remmina/data/remmina'}
40
41
 
@@ -51,7 +51,7 @@ def pwsh_theme():
51
51
  import subprocess
52
52
  subprocess.run(["pwsh", "-File", str(file)])
53
53
 
54
- def copy_assets(which: Literal["scripts", "settings", "both"] = typer.Option(..., "--which", "-w", help="Which assets to copy")):
54
+ def copy_assets(which: Literal["scripts", "settings", "both"] = typer.Argument(..., help="Which assets to copy")):
55
55
  """🔗 Copy asset files from library to machine."""
56
56
  import machineconfig.profile.create_helper as create_helper
57
57
  match which:
@@ -64,18 +64,18 @@ def copy_assets(which: Literal["scripts", "settings", "both"] = typer.Option(...
64
64
 
65
65
  def get_app():
66
66
  config_apps = typer.Typer(help="⚙️ [c] configuration subcommands", no_args_is_help=True)
67
- config_apps.command("private", no_args_is_help=True, help="🔗 [p] Manage private configuration files.")(private)
68
- config_apps.command("p", no_args_is_help=True, help="Manage private configuration files.", hidden=True)(private)
69
- config_apps.command("public", no_args_is_help=True, help="🔗 [u] Manage public configuration files.")(public)
70
- config_apps.command("u", no_args_is_help=True, help="Manage public configuration files.", hidden=True)(public)
67
+ config_apps.command("private", no_args_is_help=True, help="🔗 [v] Manage private configuration files.")(private)
68
+ config_apps.command("v", no_args_is_help=True, hidden=True)(private)
69
+ config_apps.command("public", no_args_is_help=True, help="🔗 [b] Manage public configuration files.")(public)
70
+ config_apps.command("b", no_args_is_help=True, help="Manage public configuration files.", hidden=True)(public)
71
71
  config_apps.command("dotfile", no_args_is_help=True, help="🔗 [d] Manage dotfiles.")(dotfile)
72
- config_apps.command("d", no_args_is_help=True, help="Manage dotfiles.", hidden=True)(dotfile)
72
+ config_apps.command("d", no_args_is_help=True, hidden=True)(dotfile)
73
73
  config_apps.command("shell", no_args_is_help=False, help="🔗 [s] Configure your shell profile.")(shell)
74
74
  config_apps.command("s", no_args_is_help=False, help="Configure your shell profile.", hidden=True)(shell)
75
- config_apps.command("path", no_args_is_help=False, help="📚 [a] NAVIGATE PATH variable with TUI")(path)
76
- config_apps.command("a", no_args_is_help=False, help="NAVIGATE PATH variable with TUI", hidden=True)(path)
75
+ config_apps.command("path", no_args_is_help=False, help="📚 [p] NAVIGATE PATH variable with TUI")(path)
76
+ config_apps.command("p", no_args_is_help=False, help="NAVIGATE PATH variable with TUI", hidden=True)(path)
77
77
  config_apps.command("pwsh-theme", no_args_is_help=False, help="🔗 [t] Select powershell prompt theme.")(pwsh_theme)
78
78
  config_apps.command("t", no_args_is_help=True, help="Select powershell prompt theme.", hidden=True)(pwsh_theme)
79
- config_apps.command("copy-assets", no_args_is_help=True, help="🔗 [c] Copy asset files from library to machine.")
79
+ config_apps.command("copy-assets", no_args_is_help=True, help="🔗 [c] Copy asset files from library to machine.", hidden=False)(copy_assets)
80
80
  config_apps.command("c", no_args_is_help=True, help="Copy asset files from library to machine.", hidden=True)(copy_assets)
81
81
  return config_apps
@@ -166,7 +166,7 @@ def get_app():
166
166
  repos_apps.command(name="P", help="Pull changes across repositories", hidden=True)(pull)
167
167
  repos_apps.command(name="commit", help="💾 [c] Commit changes across repositories")(commit)
168
168
  repos_apps.command(name="c", help="Commit changes across repositories", hidden=True)(commit)
169
- repos_apps.command(name="sync", help="🔄 [s] Pull, commit, and push changes across repositories")(sync)
169
+ repos_apps.command(name="sync", help="🔄 [y] Pull, commit, and push changes across repositories")(sync)
170
170
  repos_apps.command(name="s", help="Pull, commit, and push changes across repositories", hidden=True)(sync)
171
171
  repos_apps.command(name="analyze", help="📊 [a] Analyze repository development over time")(analyze)
172
172
  repos_apps.command(name="a", help="Analyze repository development over time", hidden=True)(analyze)
@@ -5,7 +5,18 @@ from typing import Optional
5
5
 
6
6
  def update():
7
7
  """🔄 UPDATE uv and machineconfig"""
8
- code = """
8
+ # from machineconfig.utils.source_of_truth import LIBRARY_ROOT
9
+ # repo_root = LIBRARY_ROOT.parent.parent
10
+ from pathlib import Path
11
+ if Path.home().joinpath("code", "machineconfig").exists():
12
+ code = """
13
+ uv self update
14
+ cd ~/code/machineconfig
15
+ git pull
16
+ uv tool install --upgrade --editable $HOME/code/machineconfig
17
+ """
18
+ else:
19
+ code = """
9
20
  uv self update
10
21
  uv tool install --upgrade machineconfig
11
22
  """
@@ -85,7 +96,7 @@ def get_app():
85
96
  cli_app.command("I", no_args_is_help=False, help="CLONE machienconfig locally and incorporate to shell profile for faster execution and nightly updates.", hidden=True)(install)
86
97
  cli_app.command("navigate", no_args_is_help=False, help="📚 [n] NAVIGATE command structure with TUI")(navigate)
87
98
  cli_app.command("n", no_args_is_help=False, help="NAVIGATE command structure with TUI", hidden=True)(navigate)
88
- cli_app.command("python", no_args_is_help=False, help="🐍 [c] python command/file in the machineconfig environment")(run_python)
99
+ cli_app.command("python", no_args_is_help=False, help="🐍 [c] python command/file in the machineconfig environment", context_settings={"show_help_on_error": True})(run_python)
89
100
  cli_app.command("c", no_args_is_help=False, help="RUN python command/file in the machineconfig environment", hidden=True)(run_python)
90
101
  cli_app.command("readme", no_args_is_help=False, help="📚 [r] render readme markdown in terminal.")(readme)
91
102
  cli_app.command("r", no_args_is_help=False, hidden=True)(readme)
@@ -22,7 +22,7 @@ def _process_single_repo(expanded_path: Path, allow_password_prompt: bool) -> tu
22
22
  try:
23
23
  repo = git.Repo(str(expanded_path), search_parent_directories=True)
24
24
  # Update repository and get detailed results
25
- result = update_repository(repo, allow_password_prompt=allow_password_prompt, auto_sync=True)
25
+ result = update_repository(repo, allow_password_prompt=allow_password_prompt, auto_uv_sync=True)
26
26
 
27
27
  # Keep track of repos with dependency changes for additional uv sync
28
28
  repo_path = None
@@ -11,7 +11,7 @@ AGENTS_DIR="$REPO_ROOT/.ai/agents/$JOB_NAME"
11
11
  LAYOUT_PATH_UNBALANCED="$REPO_ROOT/.ai/agents/$JOB_NAME/layout_unbalanced.json"
12
12
 
13
13
  # agents make-todo --output-path $CONTEXT_PATH
14
- agents create \
14
+ ag create \
15
15
  --context-path "$CONTEXT_PATH" \
16
16
  --tasks-per-prompt 1 \
17
17
  --machine docker \
@@ -27,6 +27,6 @@ agents create \
27
27
  # sessions balance-load $LAYOUT_PATH --max-thresh 6 --breaking-method moreLayouts --thresh-type number --output-path $LAYOUT_BALANCED_PATH
28
28
  # sessions run $LAYOUT_BALANCED_PATH --kill-upon-completion
29
29
 
30
- sessions run $LAYOUT_PATH_UNBALANCED
30
+ ses run $LAYOUT_PATH_UNBALANCED
31
31
 
32
32
  # agents collect $AGENTS_DIR "$REPO_ROOT/.ai/agents/$JOB_NAME/collected.txt"
@@ -1,12 +1,12 @@
1
1
 
2
2
  import typer
3
3
  from typing import Optional, Literal
4
-
4
+ from pathlib import Path
5
5
 
6
6
 
7
7
  def main(
8
8
  cloud: Optional[str] = typer.Option(None, "--cloud", "-c", help="Cloud storage profile name. If not provided, uses default from config."),
9
- repo: Optional[str] = typer.Option(None, "--repo", "-r", help="Path to the local repository. Defaults to current working directory."),
9
+ repo: Optional[str] = typer.Option(Path.cwd().as_posix(), "--repo", "-r", help="Path to the local repository. Defaults to cwd."),
10
10
  message: Optional[str] = typer.Option(None, "--message", "-m", help="Commit message for local changes."),
11
11
  on_conflict: Literal["ask", "push-local-merge", "overwrite-local", "stop-on-conflict", "remove-rclone-conflict"] = typer.Option("ask", "--on-conflict", "-oc", help="Action to take on merge conflict. Default is 'ask'."),
12
12
  pwd: Optional[str] = typer.Option(None, "--password", help="Password for encryption/decryption of the remote repository."),
@@ -154,7 +154,7 @@ def git_action(path: PathExtended, action: GitAction, mess: Optional[str] = None
154
154
  elif action == GitAction.pull:
155
155
  # Use the enhanced update function with uv sync support
156
156
  try:
157
- update_repository(repo, auto_sync=auto_sync, allow_password_prompt=False)
157
+ update_repository(repo, auto_uv_sync=auto_sync, allow_password_prompt=False)
158
158
  print("✅ Pull completed")
159
159
  return GitOperationResult(
160
160
  repo_path=path,
@@ -310,7 +310,7 @@ def print_git_operations_summary(summary: GitOperationSummary, operations_perfor
310
310
  console.print(f"\n[bold green]⚖️ SUMMARY: {total_operations}/{total_operations} operations succeeded (100% success rate)[/bold green]")
311
311
 
312
312
 
313
- def perform_git_operations(repos_root: PathExtended, pull: bool, commit: bool, push: bool, recursive: bool, auto_sync: bool) -> None:
313
+ def perform_git_operations(repos_root: PathExtended, pull: bool, commit: bool, push: bool, recursive: bool, auto_uv_sync: bool) -> None:
314
314
  """Perform git operations on all repositories and provide detailed summary."""
315
315
  print(f"\n🔄 Performing Git actions on repositories @ `{repos_root}`...")
316
316
  summary = GitOperationSummary()
@@ -341,7 +341,7 @@ def perform_git_operations(repos_root: PathExtended, pull: bool, commit: bool, p
341
341
 
342
342
  # Now perform the actual operations
343
343
  if pull:
344
- result = git_action(path=a_path, action=GitAction.pull, r=recursive, auto_sync=auto_sync)
344
+ result = git_action(path=a_path, action=GitAction.pull, r=recursive, auto_sync=auto_uv_sync)
345
345
  summary.pulls_attempted += 1
346
346
  if result.success:
347
347
  summary.pulls_successful += 1
@@ -350,7 +350,7 @@ def perform_git_operations(repos_root: PathExtended, pull: bool, commit: bool, p
350
350
  summary.failed_operations.append(result)
351
351
 
352
352
  if commit:
353
- result = git_action(a_path, action=GitAction.commit, r=recursive, auto_sync=auto_sync)
353
+ result = git_action(a_path, action=GitAction.commit, r=recursive, auto_sync=auto_uv_sync)
354
354
  summary.commits_attempted += 1
355
355
  if result.success:
356
356
  if result.had_changes:
@@ -362,7 +362,7 @@ def perform_git_operations(repos_root: PathExtended, pull: bool, commit: bool, p
362
362
  summary.failed_operations.append(result)
363
363
 
364
364
  if push:
365
- result = git_action(a_path, action=GitAction.push, r=recursive, auto_sync=auto_sync)
365
+ result = git_action(a_path, action=GitAction.push, r=recursive, auto_sync=auto_uv_sync)
366
366
  summary.pushes_attempted += 1
367
367
  if result.success:
368
368
  summary.pushes_successful += 1
@@ -24,7 +24,7 @@ def git_operations(
24
24
  ) -> None:
25
25
 
26
26
  repos_root = resolve_directory(directory)
27
- auto_sync = not no_sync
27
+ auto_uv_sync = not no_sync
28
28
  from machineconfig.scripts.python.repos_helpers.action import perform_git_operations
29
29
  from machineconfig.utils.path_extended import PathExtended
30
30
  perform_git_operations(
@@ -33,7 +33,7 @@ def git_operations(
33
33
  commit=commit,
34
34
  push=push,
35
35
  recursive=recursive,
36
- auto_sync=auto_sync,
36
+ auto_uv_sync=auto_uv_sync,
37
37
  )
38
38
  def resolve_spec_path(directory: Optional[str], cloud: Optional[str]) -> Path:
39
39
  repos_root = resolve_directory(directory)
@@ -65,7 +65,7 @@ def get_file_hash(file_path: Path) -> str | None:
65
65
  return hashlib.sha256(file_path.read_bytes()).hexdigest()
66
66
 
67
67
 
68
- def update_repository(repo: git.Repo, auto_sync: bool, allow_password_prompt: bool) -> RepositoryUpdateResult:
68
+ def update_repository(repo: git.Repo, auto_uv_sync: bool, allow_password_prompt: bool) -> RepositoryUpdateResult:
69
69
  """Update a single repository and return detailed information about what happened."""
70
70
  repo_path = Path(repo.working_dir)
71
71
  print(f"🔄 {'Updating ' + str(repo_path):.^80}")
@@ -253,7 +253,7 @@ def update_repository(repo: git.Repo, auto_sync: bool, allow_password_prompt: bo
253
253
  print(f"✅ Set permissions for {lf_exe_path}")
254
254
 
255
255
  # Run uv sync if dependencies changed and auto_sync is enabled
256
- if result["dependencies_changed"] and auto_sync:
256
+ if result["dependencies_changed"] and auto_uv_sync:
257
257
  result["uv_sync_ran"] = True
258
258
  result["uv_sync_success"] = run_uv_sync(repo_path)
259
259
 
@@ -4,428 +4,7 @@ set icons true # show icons next to files
4
4
  set period 1 # interval to check for directory updates
5
5
  set hidden true # show hidden files by default
6
6
  set incsearch true # jump to first match after each keystroke in search
7
- # LF Configuration File - Updated for latest version
8
- # Based on lf documentation: https://github.com/gokcehan/lf/blob/master/doc.md
9
-
10
- # ============================ OPTIONS ============================================
11
-
12
- # Navigation and display
13
- set scrolloff 10 # space on top and bottom of screen
14
- set relativenumber false # show relative line numbers (complements number)
15
- set number true # show absolute line numbers
16
- set wrapscroll false # scrolling wraps around the file list
17
- set wrapscan true # searching wraps around the file list
18
-
19
- # File display
20
- set hidden true # show hidden files by default
21
- set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml" # additional hidden patterns
22
- set dirfirst true # show directories first
23
- set dironly false # show only directories
24
- set info "size:time" # show file size and modification time
25
- set dircounts false # don't show item counts in directories (performance)
26
- set sizeunits binary # use binary units (1024) instead of decimal (1000)
27
-
28
- # Icons and colors
29
- set icons true # show icons next to files
30
- set drawbox false # don't draw borders around panes
31
- set roundbox false # rounded corners for borders (when drawbox enabled)
32
-
33
- # Search and filtering
34
- set ignorecase true # ignore case in sorting and search
35
- set smartcase true # override ignorecase when pattern has uppercase
36
- set ignoredia true # ignore diacritics in sorting and search
37
- set smartdia false # override ignoredia when pattern has diacritics
38
- set incsearch true # jump to first match after each keystroke in search
39
- set incfilter false # don't apply filter after each keystroke
40
- set filtermethod text # filter method: text, glob, or regex
41
- set searchmethod text # search method: text, glob, or regex
42
- set anchorfind true # find command starts matching from beginning
43
- set findlen 1 # number of characters for find command
44
-
45
- # File operations
46
- set preserve "mode" # preserve file attributes when copying
47
- set dupfilefmt "%f.~%n~" # format for duplicate files
48
- set selmode all # selection mode: all or dir
49
-
50
- # Preview
51
- set preview true # preview files on the right pane
52
- set previewer ~/.config/machineconfig/settings/lf/linux/exe/previewer.sh
53
- set cleaner ~/.config/machineconfig/settings/lf/linux/exe/cleaner.sh
54
- set dirpreviews false # don't preview directories by default
55
-
56
- # Performance and monitoring
57
- set period 0 # disable periodic directory updates (0 = disabled)
58
- set watch false # don't watch filesystem for changes (can be slow)
59
-
60
- # Mouse and interaction
61
- set mouse false # disable mouse support
62
- set showbinds true # show key bindings
63
-
64
- # UI layout
65
- set ratios "1:2:3" # ratio of pane widths
66
-
67
- # Truncation
68
- set truncatechar "~" # character to show when filename is truncated
69
- set truncatepct 100 # percentage of space for filename before extension
70
-
71
- # History and persistence
72
- set history true # save command history
73
-
74
- # Special files and behavior
75
- set ifs "\n" # internal field separator for shell commands
76
- set shell sh # shell to use
77
- set shellflag -c # shell flag
78
- set shellopts "" # shell options
79
- set waitmsg "Press any key to continue"
80
-
81
- # Formatting (colors and styles)
82
- set promptfmt "\033[32;1m%u@%h\033[0m:\033[34;1m%d\033[0m\033[1m%f\033[0m"
83
- set cursoractivefmt "\033[7m"
84
- set cursorparentfmt "\033[7m"
85
- set cursorpreviewfmt "\033[4m"
86
- set numberfmt "\033[33m"
87
- set copyfmt "\033[7;33m"
88
- set cutfmt "\033[7;31m"
89
- set selectfmt "\033[7;35m"
90
- set visualfmt "\033[7;36m"
91
- set errorfmt "\033[7;31;47m"
92
- set borderfmt "\033[0m"
93
- set menufmt "\033[0m"
94
- set menuheaderfmt "\033[1m"
95
- set menuselectfmt "\033[7m"
96
-
97
- # Ruler and status
98
- set rulerfmt " %a| %p| \033[7;31m %m \033[0m| \033[7;33m %c \033[0m| \033[7;35m %s \033[0m| \033[7;36m %v \033[0m| \033[7;34m %f \033[0m| %i/%t"
99
- set statfmt "\033[36m%p\033[0m| %c| %u| %g| %S| %t| -> %l"
100
-
101
- # Sorting
102
- set sortby natural # sort by: natural, name, ext, size, time, atime, btime, ctime
103
- set reverse false # don't reverse sort order
104
-
105
- # Tabstops and display
106
- set tabstop 8 # number of spaces for tab character
107
-
108
- # User options (can be accessed in scripts)
109
- # set user_option value
110
-
111
- # ============================ KEY BINDINGS ============================================
112
-
113
- # Clear default mappings that might conflict
114
- clearmaps
115
-
116
- # Navigation (vim-like)
117
- map <up> up
118
- map <down> down
119
- map <left> updir
120
- map <right> open
121
- map k up
122
- map j down
123
- map h updir
124
- map l open
125
- map gg top
126
- map G bottom
127
- map H high
128
- map M middle
129
- map L low
130
-
131
- # Scrolling
132
- map <c-u> half-up
133
- map <c-d> half-down
134
- map <c-b> page-up
135
- map <c-f> page-down
136
- map <c-y> scroll-up
137
- map <c-e> scroll-down
138
-
139
- # Jumping
140
- map ] jump-next
141
- map [ jump-prev
142
-
143
- # File operations
144
- map y copy
145
- map d cut
146
- map p paste
147
- map c clear
148
- map x delete
149
- map r rename
150
-
151
- # Selection and marking
152
- map v invert
153
- map u unselect
154
- map t tag-toggle
155
- map <space> :toggle; down
156
-
157
- # Search and find
158
- map / search
159
- map ? search-back
160
- map n search-next
161
- map N search-prev
162
- map f find
163
- map F find-back
164
- map ; find-next
165
- map , find-prev
166
-
167
- # Filter
168
- map f filter
169
-
170
- # Marks
171
- map m mark-save
172
- map ' mark-load
173
- map " mark-remove
174
-
175
- # Commands
176
- map : read
177
- map $ shell
178
- map % shell-pipe
179
- map ! shell-wait
180
- map & shell-async
181
-
182
- # Special
183
- map . set hidden!
184
- map zh set hidden!
185
- map zr set reverse!
186
- map zn set info
187
- map zs set info size
188
- map zt set info time
189
- map za set info size:time
190
-
191
- # Sorting shortcuts
192
- map sn :set sortby natural; set info
193
- map ss :set sortby size; set info size
194
- map st :set sortby time; set info time
195
- map sa :set sortby atime; set info atime
196
- map sb :set sortby btime; set info btime
197
- map sc :set sortby ctime; set info ctime
198
- map se :set sortby ext; set info
199
-
200
- # UI
201
- map <c-l> redraw
202
- map <c-r> reload
203
-
204
- # Quit
205
- map q quit
206
- map ZZ quit
207
- map ZQ quit!
208
-
209
- # Help
210
- map <f-1> help
211
-
212
- # ============================ CUSTOM COMMANDS =====================================
213
-
214
- # Open files with appropriate applications
215
- cmd open &{{
216
- case $(file --mime-type -Lb "$f") in
217
- text/*) $EDITOR "$f" ;;
218
- image/*) imv "$f" ;;
219
- video/*) mpv "$f" ;;
220
- audio/*) mpv "$f" ;;
221
- application/pdf) zathura "$f" ;;
222
- *) xdg-open "$f" ;;
223
- esac
224
- }}
225
-
226
- # Enhanced paste with progress
227
- cmd paste &{{
228
- # Use lf's built-in paste but with custom handling if needed
229
- # This is a fallback - lf handles paste internally by default
230
- lf -remote "send $id paste"
231
- }}
232
-
233
- # Enhanced delete with trash
234
- cmd delete &{{
235
- printf "Delete %d files? [y/N] " $(echo "$fx" | wc -l)
236
- read -r ans
237
- [ "$ans" = "y" ] || [ "$ans" = "Y" ] || exit 1
238
-
239
- # Move to trash instead of permanent deletion
240
- mkdir -p ~/.trash
241
- mv "$fx" ~/.trash/
242
- }}
243
-
244
- # Bulk rename with vidir
245
- cmd rename %vidir
246
-
247
- # Create directories
248
- cmd mkdir &{{
249
- printf "Directory name: "
250
- read -r dirname
251
- mkdir -p "$dirname"
252
- }}
253
-
254
- # Create files
255
- cmd mkfile &{{
256
- printf "File name: "
257
- read -r filename
258
- $EDITOR "$filename"
259
- }}
260
-
261
- # Change permissions
262
- cmd chmod %{{
263
- printf "Mode bits: "
264
- read -r mode
265
- chmod "$mode" "$fx"
266
- lf -remote "send $id reload"
267
- }}
268
-
269
- # Directory size calculation
270
- cmd calcdirsize &{{
271
- for dir in "$fx"; do
272
- if [ -d "$dir" ]; then
273
- size=$(du -sh "$dir" | cut -f1)
274
- lf -remote "send $id addcustominfo \"$dir\" \"$size\""
275
- fi
276
- done
277
- }}
278
-
279
- # Git status indicators
280
- cmd git-status &{{
281
- if git rev-parse --git-dir >/dev/null 2>&1; then
282
- for file in "$@"; do
283
- if [ -e "$file" ]; then
284
- status=$(git status --porcelain "$file" 2>/dev/null | head -n1 | cut -c1-2)
285
- [ -n "$status" ] && lf -remote "send $id addcustominfo \"$file\" \"$status\""
286
- fi
287
- done
288
- fi
289
- }}
290
-
291
- # Fuzzy jump with fzf
292
- cmd fzf-jump &{{
293
- dest=$(find . -type d | fzf --height 40% --reverse --header="Jump to directory")
294
- [ -n "$dest" ] && lf -remote "send $id cd \"$dest\""
295
- }}
296
-
297
- # Fuzzy search with ripgrep and fzf
298
- cmd fzf-search &{{
299
- RG_PREFIX="rg --column --line-number --no-heading --color=always --smart-case"
300
- result=$(
301
- FZF_DEFAULT_COMMAND="$RG_PREFIX ''" \
302
- fzf --bind "change:reload:$RG_PREFIX {q} || true" \
303
- --ansi --layout=reverse --header 'Search in files' \
304
- --disabled
305
- )
306
- [ -n "$result" ] && file=$(echo "$result" | cut -d: -f1) && lf -remote "send $id select \"$file\""
307
- }}
308
-
309
- # Zoxide integration
310
- cmd zi &{{
311
- result="$(zoxide query -i)"
312
- [ -n "$result" ] && lf -remote "send $id cd \"$result\""
313
- }}
314
-
315
- # Tere integration (if available)
316
- cmd tere &{{
317
- result="$(tere)"
318
- [ -n "$result" ] && lf -remote "send $id cd \"$result\""
319
- }}
320
-
321
- # Bulk operations
322
- cmd bulk-rename %{{
323
- vidir "$@"
324
- }}
325
-
326
- cmd bulk-chmod %{{
327
- printf "New permissions: "
328
- read -r perms
329
- chmod -R "$perms" "$@"
330
- lf -remote "send $id reload"
331
- }}
332
-
333
- # Archive operations
334
- cmd extract &{{
335
- for file in "$@"; do
336
- case "$file" in
337
- *.tar.bz2|*.tbz2) tar xjf "$file" ;;
338
- *.tar.gz|*.tgz) tar xzf "$file" ;;
339
- *.tar.xz|*.txz) tar xJf "$file" ;;
340
- *.tar.zst) tar --zstd -xf "$file" ;;
341
- *.tar) tar xf "$file" ;;
342
- *.bz2) bunzip2 "$file" ;;
343
- *.gz) gunzip "$file" ;;
344
- *.xz) unxz "$file" ;;
345
- *.zip) unzip "$file" ;;
346
- *.7z) 7z x "$file" ;;
347
- *.rar) unrar x "$file" ;;
348
- *) echo "Unsupported archive: $file" ;;
349
- esac
350
- done
351
- lf -remote "send $id reload"
352
- }}
353
-
354
- cmd compress &{{
355
- printf "Archive name (without extension): "
356
- read -r name
357
- printf "Format (tar.gz/zip/7z): "
358
- read -r format
359
-
360
- case "$format" in
361
- tar.gz) tar czf "$name.tar.gz" "$@" ;;
362
- zip) zip -r "$name.zip" "$@" ;;
363
- 7z) 7z a "$name.7z" "$@" ;;
364
- *) echo "Unsupported format" ;;
365
- esac
366
- lf -remote "send $id reload"
367
- }}
368
-
369
- # ============================ SPECIAL COMMANDS ===================================
370
-
371
- # Directory change hooks
372
- cmd on-cd &{{
373
- # Update terminal title
374
- lf -remote "send $id tty-write \"\033]0;lf: $PWD\007\""
375
- }}
376
-
377
- cmd on-load &git-status
378
-
379
- # ============================ LEGACY/COMPATIBILITY ==============================
380
-
381
- # Old mappings (kept for compatibility but prefer new ones above)
382
- # map Q !~/.config/machineconfig/settings/lf/linux/exe/previewer.sh "$f"
383
- # map I !cat $f | gum pager
384
- # map R $~/scripts/croshell -r $f
385
- # map O $~/scripts/croshell -rj $f
386
-
387
- # Old jump mappings
388
- # map jc cd ~/code
389
- # map jd cd ~/data
390
- # map jD cd ~/Downloads
391
- # map jx cd ~/dotfiles
392
- # map jh cd ~
393
- # map jj $~/scripts/croshell -j --read $f
394
-
395
- # Old operation mappings
396
- # map od cut
397
- # map op paste
398
- # map oy copy
399
- # map oc $echo $f | xclip
400
- # map or rename
401
- # map of reload
402
- # map os mark-save
403
- # map ol mark-load
404
- # map oR mark-remove
405
- # map oD $ouch d $f
406
- # map oC $ouch c $f "$f.zip"
407
- # map oL $ln -s $f ~/tmp_results/tmp_links/$(basename "$f")
408
-
409
- # Old make mappings
410
- # map md mkdir
411
- # map mf mkfile
412
- # map mF sudomkfile
413
- # map mp chmod
414
-
415
- # Old junk mappings
416
- # map <c-f> :fzf_jump
417
- # map gs :fzf_search
418
- # map J broot_jump
419
- # map F fzf_jump
420
-
421
- # Old command definitions (replaced with modern equivalents above)
422
- # cmd fzf_jump ${{ ... }}
423
- # cmd fzf_search ${{ ... }}
424
- # cmd broot_jump ${{ ... }}
425
- # cmd mkdir ${{ ... }}
426
- # cmd mkfile ${{ ... }}
427
- # cmd sudomkfile ${{ ... }}
428
- # cmd chmod ${{ ... }}
7
+ set dircounts true # show number of items in directory instead of sie
429
8
  set info "size" # list directory information on the right
430
9
  set sortby "natural" # don't sort files in any special way
431
10
  # set drawbox true # draw a border around all panes
@@ -435,8 +14,8 @@ set number true # show line numbers
435
14
 
436
15
  set preview true # preview file on the right pane
437
16
  # set previewer chafa --format sixel --work 9 --optimize 9 --stretch --zoom --size 140x80
438
- set previewer ~/.config/machineconfig/settings/lf/linux/exe/previewer.sh
439
- set cleaner ~/.config/machineconfig/settings/lf/linux/exe/cleaner.sh
17
+ set previewer ~/code/machineconfig/src/machineconfig/settings/lf/linux/exe/previewer.sh
18
+ set cleaner ~/code/machineconfig/src/machineconfig/settings/lf/linux/exe/cleaner.sh
440
19
  # set previewer pistol
441
20
 
442
21
  # set sixels true
@@ -469,10 +48,16 @@ set ratios '1:2:3' # ratio of pane widths
469
48
 
470
49
 
471
50
  # test image viewer
472
- map Q !~/.config/machineconfig/settings/lf/linux/exe/previewer.sh "$f"
51
+ map Q !~/code/machineconfig/src/machineconfig/settings/lf/linux/exe/previewer.sh "$f"
473
52
 
474
53
  # key bindings
54
+ map vmap v # default is invert
475
55
  map V invert
56
+ map p
57
+ map x
58
+ map c
59
+ map v
60
+ # map D
476
61
  map D $diskonaut
477
62
  map K $kondo $f
478
63
 
@@ -485,6 +70,7 @@ map <c-u> # half-up
485
70
  # e edit
486
71
  map e # edit modal key.
487
72
  map eh $hx $f
73
+ map eH !source ~/code/machineconfig/.venv/bin/activate;hx $f
488
74
  map en $nano $f
489
75
  map el $lvim $f
490
76
  map ev $nvim $f
@@ -495,11 +81,12 @@ map <enter> open
495
81
 
496
82
 
497
83
  # w shells
84
+ map w
498
85
  map ww bash
499
86
  # map wp $powershell
500
87
  map wr $~/scripts/croshell
501
88
  # map wm $cmd
502
- map i !~/.config/machineconfig/settings/lf/linux/exe/previewer.sh $f
89
+ map i !~/code/machineconfig/src/machineconfig/settings/lf/linux/exe/previewer.sh $f
503
90
  map I !cat $f | gum pager
504
91
  map R $~/scripts/croshell -r $f
505
92
  map O $~/scripts/croshell -rj $f
@@ -509,6 +96,7 @@ map O $~/scripts/croshell -rj $f
509
96
  map c clear
510
97
  map <delete> delete
511
98
 
99
+ map o
512
100
  map od cut
513
101
  map op paste
514
102
  map oy copy
@@ -520,15 +108,18 @@ map ol mark-load
520
108
  map oR mark-remove
521
109
  map oD $ouch d $f
522
110
  map oC $ouch c $f "$f.zip"
523
- map oL $ln -s $f ~/tmp_results/tmp_links/$(basename "$f")
111
+ map oL $ln -s $f $HOME/tmp_results/tmp_links/$(basename "$f")
524
112
 
525
113
  # j jump
114
+ map j
526
115
  map jc cd ~/code
527
116
  map jd cd ~/data
528
117
  map jD cd ~/Downloads
529
118
  map jx cd ~/dotfiles
119
+ # map jm cd ~/code/machineconfig/src/machineconfig
530
120
  map jh cd ~
531
121
  map jj $~/scripts/croshell -j --read $f
122
+ # map jj $lvim ~/code/machineconfig/src/machineconfig/settings/lf/linux/lfrc
532
123
 
533
124
  # from https://github.com/gokcehan/lf/wiki/Integrations#zoxide
534
125
  cmd zi ${{
@@ -544,6 +135,7 @@ cmd ter ${{
544
135
  map T ter #!tere
545
136
 
546
137
  # m make
138
+ map m
547
139
  map md mkdir
548
140
  map mf mkfile
549
141
  map mF sudomkfile
@@ -571,6 +163,10 @@ cmd fzf_jump ${{
571
163
  }}
572
164
 
573
165
 
166
+ cmd fzf2g $(~/scripts/fzf2g.sh $args[1])
167
+ # map F $nano fzf2g $args[1]
168
+
169
+
574
170
  cmd fzf_search ${{
575
171
  res="$( \
576
172
  RG_PREFIX="rg --column --line-number --no-heading --color=always \
@@ -628,4 +224,3 @@ cmd chmod ${{
628
224
 
629
225
  lf -remote 'send reload'
630
226
  }}
631
-
@@ -30,23 +30,31 @@ add_to_path_if_not_already \
30
30
 
31
31
  # set alias l to lsd -la
32
32
  alias l='lsd -la'
33
- alias gcs='gh copilot suggest -t shell'
34
- alias gcg='gh copilot suggest -t git'
35
- alias gce='gh copilot explain'
33
+
34
+ alias d=devops
35
+ alias c=cloud
36
+ alias a=agents
37
+ alias s=sessions
38
+ alias ff=ftpx
39
+ alias f=fire
40
+ alias cs=croshell
41
+
42
+ # alias gcs='gh copilot suggest -t shell'
43
+ # alias gcg='gh copilot suggest -t git'
44
+ # alias gce='gh copilot explain'
36
45
  # Check uniqueness of aliases
37
46
  # type gcs
38
47
  # type gcg
39
48
  # type gce
40
-
41
- gcd() {
42
- x=$(history -p '!!')
43
- y=$(eval "$x" 2>&1)
44
- gh copilot explain "Input command is: $x The output is this: $y"
45
- }
49
+ # gcd() {
50
+ # x=$(history -p '!!')
51
+ # y=$(eval "$x" 2>&1)
52
+ # gh copilot explain "Input command is: $x The output is this: $y"
53
+ # }
46
54
 
47
55
  # 📦 Node Version Manager
48
- export NVM_DIR="$HOME/.nvm"
49
- [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
56
+ # export NVM_DIR="$HOME/.nvm"
57
+ # [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
50
58
  # [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
51
59
 
52
60
 
@@ -37,6 +37,15 @@ Add-ToPathIfNotAlready -Directories @(
37
37
  function lsdla { lsd -la }
38
38
  Set-Alias -Name l -Value lsdla -Option AllScope
39
39
 
40
+ function d { mcfg devops @args }
41
+ function c { mcfg cloud @args }
42
+ function a { mcfg agents @args }
43
+ function s { mcfg sessions @args }
44
+ function ff { mcfg ftpx @args }
45
+ function f { mcfg fire @args }
46
+ function cs { mcfg croshell @args }
47
+
48
+
40
49
  try {
41
50
  Set-Alias -Name gcs -Value {gh copilot suggest -t shell}
42
51
  Set-Alias -Name gcg -Value {gh copilot suggest -t git}
@@ -1,25 +1,13 @@
1
1
  #!/bin/bash
2
2
  . <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
3
- devops() {
4
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=5.84" devops "$@"
5
- }
6
- agents() {
7
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=5.84" agents "$@"
8
- }
9
- cloud() {
10
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=5.84" cloud "$@"
11
- }
12
- croshell() {
13
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=5.84" croshell "$@"
14
- }
15
- fire() {
16
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=5.84" fire "$@"
17
- }
18
- ftpx() {
19
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=5.84" ftpx "$@"
20
- }
21
- sessions() {
22
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=5.84" sessions "$@"
23
- }
24
-
25
- echo "devops command is now defined in this shell session."
3
+ mcfg() {
4
+ "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>="mcfg 5.84" mcfg "$@"
5
+ }
6
+ alias d="mcfg devops"
7
+ alias c="mcfg cloud"
8
+ alias a="mcfg agents"
9
+ alias s="mcfg sessions"
10
+ alias ff="mcfg ftpx"
11
+ alias f="mcfg fire"
12
+ alias cs="mcfg croshell"
13
+ echo "mcfg command is now defined in this shell session."
@@ -1,31 +1,14 @@
1
1
 
2
2
 
3
3
  iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
4
- function devops {
5
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.84" devops $args
6
- }
7
-
8
- function cloud {
9
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.84" cloud $args
10
- }
11
-
12
- function croshell {
13
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.84" croshell $args
14
- }
15
-
16
- function agents {
17
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.84" agents $args
18
- }
19
-
20
- function fire {
21
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.84" fire $args
22
- }
23
-
24
- function ftpx {
25
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.84" ftpx $args
26
- }
27
-
28
- function sessions {
29
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.84" sessions $args
30
- }
31
-
4
+ function mcfg {
5
+ & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=5.84" mcfg $args
6
+ }
7
+ function d { mcfg devops @args }
8
+ function c { mcfg cloud @args }
9
+ function a { mcfg agents @args }
10
+ function s { mcfg sessions @args }
11
+ function ff { mcfg ftpx @args }
12
+ function f { mcfg fire @args }
13
+ function cs { mcfg croshell @args }
14
+ Write-Host "mcfg command aliases are now defined in this PowerShell session."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 5.84
3
+ Version: 5.85
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -85,7 +85,6 @@ machineconfig/jobs/linux/msc/network.sh,sha256=j3kRV2mFEZK05XL2UdR9ssW2hkLH5rOYM
85
85
  machineconfig/jobs/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  machineconfig/jobs/python/python_ve_symlink.py,sha256=Mw2SK_TDLK5Ct_mEESh_Pd-Rn-B1oBSp7a_9y_eZbqw,1140
87
87
  machineconfig/jobs/python/vscode/api.py,sha256=Et0G-VUj13D1rshYMdDrw_CUYSO7Q6XRrEQO0WjVIKU,1683
88
- machineconfig/jobs/python/vscode/sync_code.py,sha256=f9hxMg_nkIsC0xvfQMboJbc-Jhap9YQrV7k7a5YSI1c,2333
89
88
  machineconfig/jobs/windows/archive/archive_pygraphviz.ps1,sha256=UbOApUB0UiAHANOnGFHIP3zY_UCtWBhT5I6vqPhwqgE,618
90
89
  machineconfig/jobs/windows/archive/openssh-server_add_key.ps1,sha256=91cL3K4H2saAuzOS1GxGicpc64ZDpgvPY39YPBWyxZI,269
91
90
  machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1,sha256=-7pElYiGFXUvO4dp6rW0LXmNo65h3hFTHJWyHbmO3Xc,745
@@ -98,7 +97,7 @@ machineconfig/profile/create_helper.py,sha256=_iNeuwmcEGTx6sf_f40JKHfOCuJRZQRpyE
98
97
  machineconfig/profile/create_links.py,sha256=K7T2bq08GZP9fo2NzCOE0pojAgQDe0Ofe7fNfbQlQpw,14219
99
98
  machineconfig/profile/create_links_export.py,sha256=OEmuJE-F7FZX5xvOl1rqJzHg_BWtPKCiWdrq4RPOobs,3173
100
99
  machineconfig/profile/create_shell_profile.py,sha256=ifsEAK90ovvY7ftyxuY5-Xh8f2JuQYX7IMYUXp6x2Sw,9538
101
- machineconfig/profile/mapper.toml,sha256=Rh-GZFn6HSIc9PxD6qqnjcY6QnMbuJaXBtI2SSNBXx4,12352
100
+ machineconfig/profile/mapper.toml,sha256=50q2VdR_PNLXGljH47R2cxuJvzlJQnq7lkJ05TMtJ5Q,12357
102
101
  machineconfig/profile/records/generic/shares.toml,sha256=FduDztfyQtZcr5bfx-RSKhEEweweQSWfVXkKWnx8hCY,143
103
102
  machineconfig/profile/records/linux/apps_summary_report.csv,sha256=pw9djvaRUPalKDLn2sl3odcbD2_Zx3aEupsQ8UPfaaY,2738
104
103
  machineconfig/profile/records/linux/apps_summary_report.md,sha256=l77oofA6Rliql0ZgKGIZi8bstFoGyyGTxeS8p2PtOj0,5634
@@ -174,17 +173,17 @@ machineconfig/scripts/python/croshell_helpers/start_slidev.py,sha256=HfJReOusTPh
174
173
  machineconfig/scripts/python/croshell_helpers/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
175
174
  machineconfig/scripts/python/croshell_helpers/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
176
175
  machineconfig/scripts/python/devops_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
- machineconfig/scripts/python/devops_helpers/cli_config.py,sha256=1T8_BTtGcUBxKAvEgBAKnZ4xB_5hiqXla6JktqHgNKQ,5332
176
+ machineconfig/scripts/python/devops_helpers/cli_config.py,sha256=91D4Hdk_ZhDtlJctBJ-gnVbbDCjyS9f7LE-MjRyRpkA,5276
178
177
  machineconfig/scripts/python/devops_helpers/cli_config_dotfile.py,sha256=rjTys4FNf9_feP9flWM7Zvq17dxWmetSiGaHPxp25nk,2737
179
178
  machineconfig/scripts/python/devops_helpers/cli_data.py,sha256=kvJ7g2CccjjXIhCwdu_Vlif8JHC0qUoLjuGcTSqT-IU,514
180
179
  machineconfig/scripts/python/devops_helpers/cli_nw.py,sha256=3KyzyoEyiLFrKxB5abkUq8UI3PoHWcI9PyczHf0YcSY,4023
181
- machineconfig/scripts/python/devops_helpers/cli_repos.py,sha256=HJH5ZBob_Uzhc3fDgG9riOeW6YEJt88xTjQYcEUPmUY,12015
182
- machineconfig/scripts/python/devops_helpers/cli_self.py,sha256=eVGCoSmj24U6T0pqDkXw5GYdIasyCiMyHqMVkDuXB7Y,4531
180
+ machineconfig/scripts/python/devops_helpers/cli_repos.py,sha256=3d6UV39na-uAJC7dKqwnO79AKIeiVDie1_IPhk6SMNs,12015
181
+ machineconfig/scripts/python/devops_helpers/cli_self.py,sha256=MvSfth2XILXHt_BWO9SeFKI9TCX-pUb8d-o0avNzVPc,4949
183
182
  machineconfig/scripts/python/devops_helpers/cli_share_server.py,sha256=285OzxttCx7YsrpOkaapMKP1eVGHmG5TkkaSQnY7i3c,3976
184
183
  machineconfig/scripts/python/devops_helpers/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
185
184
  machineconfig/scripts/python/devops_helpers/devops_backup_retrieve.py,sha256=nK47Rc7gQuDCnkk6_sW1y82gBnDJ9TdHU8XwMPFBK9c,5591
186
185
  machineconfig/scripts/python/devops_helpers/devops_status.py,sha256=PJVPhfhXq8der6Xd-_fjZfnizfM-RGfJApkRGhGBmNo,20525
187
- machineconfig/scripts/python/devops_helpers/devops_update_repos.py,sha256=qYS3vT-VECxXI4MXgmRMHAqbVX19aj0U_zobhyM_nGI,10130
186
+ machineconfig/scripts/python/devops_helpers/devops_update_repos.py,sha256=TLYhvMMDJCqLNsv1h4a0MtxYqQHWkRRvKnERyXd8MAs,10133
188
187
  machineconfig/scripts/python/devops_helpers/themes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
188
  machineconfig/scripts/python/devops_helpers/themes/choose_pwsh_theme.ps1,sha256=58gFOeynADHLTdk8zqEnndBtyNGrln0jvpo76O0UWTw,3136
190
189
  machineconfig/scripts/python/devops_helpers/themes/choose_wezterm_theme.py,sha256=pRXAGe2IpysYshsaF8CKEwHI8EGPtLcM8PtiAqM7vmM,3425
@@ -206,7 +205,7 @@ machineconfig/scripts/python/helpers_fire/fire_agents_load_balancer.py,sha256=mp
206
205
  machineconfig/scripts/python/helpers_fire/helpers4.py,sha256=iKR5vVJygaDIpFXhcdma9jOpyxKtUhmqcmalFxJmY0w,4749
207
206
  machineconfig/scripts/python/helpers_fire/prompt.txt,sha256=Ni6r-Dh0Ez2XwfOZl3MOMDhfn6BJ2z4IdK3wFvA3c_o,116
208
207
  machineconfig/scripts/python/helpers_fire/template.ps1,sha256=NWkYlM4_l9eT52lS9NdOxmEn548gyy-bl1Q3AU3YKxY,1085
209
- machineconfig/scripts/python/helpers_fire/template.sh,sha256=ohK-hlH4IdUl827CacLmMLB8i5OgmY6q00ETd7bN9GQ,1172
208
+ machineconfig/scripts/python/helpers_fire/template.sh,sha256=Pzmjzf7TTTkUDiEp3rMky0QesF8qHdS4gvLzbzfyKwI,1163
210
209
  machineconfig/scripts/python/helpers_fire/agentic_frameworks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
210
  machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.json,sha256=YGuJF-qlMjhICPf0QnNfQlGNPsYrJJDlNcgmes0TFhM,252
212
211
  machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py,sha256=NRcnjVu4-_6UqWdeRH4A2g79QIAOwnqVtiqOwn7qzlE,1614
@@ -221,7 +220,7 @@ machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py,
221
220
  machineconfig/scripts/python/helpers_repos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
221
  machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=XGwZYoSEt6e1Q2wyU-fH76I9lNgeSX8AEqw3Lmhj5CQ,9609
223
222
  machineconfig/scripts/python/helpers_repos/grource.py,sha256=IywQ1NDPcLXM5Tr9xhmq4tHfYspLRs3pF20LP2TlgIQ,14595
224
- machineconfig/scripts/python/helpers_repos/secure_repo.py,sha256=g0o3SHBwicro1K51IY1Wg0_rkBJQ3esHPcsfNHu4Q8A,1005
223
+ machineconfig/scripts/python/helpers_repos/secure_repo.py,sha256=HWSCmSzSwmevDmnXO8iTm6l2Yhyt2G3E_MN63SHsyUM,1024
225
224
  machineconfig/scripts/python/nw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
225
  machineconfig/scripts/python/nw/add_ssh_key.py,sha256=dYOK9vCB6I9YSeCLO7Hid1IaFjiEs9n_gugDSddtGU8,9298
227
226
  machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
@@ -237,14 +236,14 @@ machineconfig/scripts/python/nw/onetimeshare.py,sha256=xRd8by6qUm-od2Umty2MYsXyJ
237
236
  machineconfig/scripts/python/nw/ssh_debug_linux.py,sha256=VSFhyzYQeLIoSwsUFJFW1Wc89DinrpZ_YxyYB2Ndy-4,30966
238
237
  machineconfig/scripts/python/nw/wifi_conn.py,sha256=4GdLhgma9GRmZ6OFg3oxOX-qY3sr45njPckozlpM_A0,15566
239
238
  machineconfig/scripts/python/nw/wsl_windows_transfer.py,sha256=1ab9l-8MtAxofW5nGH9G2-BjlszaiLETu6WBECcNNhA,3546
240
- machineconfig/scripts/python/repos_helpers/action.py,sha256=t6x9K43Uy7r5aRpdODfsN-5UoMrYXEG2cVw-Y8l9prw,14847
239
+ machineconfig/scripts/python/repos_helpers/action.py,sha256=pl0U53FAGoH2yk-CGNIy3aggImXY5ZVz28-XVFHDvfA,14862
241
240
  machineconfig/scripts/python/repos_helpers/clone.py,sha256=9vGb9NCXT0lkerPzOJjmFfhU8LSzE-_1LDvjkhgnal0,5461
242
241
  machineconfig/scripts/python/repos_helpers/count_lines.py,sha256=ZLEajCLmlFFY969BehabqGOB9_kkpATO3Lt09L7KULk,15968
243
242
  machineconfig/scripts/python/repos_helpers/count_lines_frontend.py,sha256=LuA4Tigy9eaBfdv2Y4Dnv0a8N0XikIUa-of9yR9LKqQ,568
244
- machineconfig/scripts/python/repos_helpers/entrypoint.py,sha256=C-_D03abE0TkVCJ4jZoliUMAhRRkZ77mcwMoPOuieJQ,2827
243
+ machineconfig/scripts/python/repos_helpers/entrypoint.py,sha256=UagEar85QCAXX7oOqJjDJp2Vds5UQxehYPmckL_S0oI,2836
245
244
  machineconfig/scripts/python/repos_helpers/record.py,sha256=3T5VmMbvywScZhTW2j4cGLK0T2LSWxKfnXkRTxkuLP4,10994
246
245
  machineconfig/scripts/python/repos_helpers/sync.py,sha256=CLLWy2n2gY9beXPF-mblOQ6R7cKoenkJjMiX7tHQsBk,3091
247
- machineconfig/scripts/python/repos_helpers/update.py,sha256=_WLveSUgcBufq9T9fn5pM_1EeyD30umFlqmy9hEmk44,11054
246
+ machineconfig/scripts/python/repos_helpers/update.py,sha256=cUIMUMm-50HrY6fzxSMZnFplhToVjVPZMm1j_otTha4,11060
248
247
  machineconfig/scripts/python/sessions_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
249
248
  machineconfig/scripts/python/sessions_helpers/sessions_multiprocess.py,sha256=6bmF1TOxzivNAIu8zsA9pu-f-RcYZLgdD4livjAf6ac,3069
250
249
  machineconfig/scripts/windows/fzfb.ps1,sha256=Bmngm2aY8hnPa3iKAOK6EPDYdKzGLUc81wYOnJhNoqg,149
@@ -271,7 +270,7 @@ machineconfig/settings/keyboard/espanso/match/base.yml,sha256=A0QcNSzbdqSUNh42Wq
271
270
  machineconfig/settings/keyboard/kanata/kanata.kbd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
272
271
  machineconfig/settings/lf/linux/colors,sha256=uSW9O3CkiVomxK8-JN8hQRcM71yADuOSjichbfBFTpg,4148
273
272
  machineconfig/settings/lf/linux/icons,sha256=liVoi5nOaxFyujil2z7Pcu8l5dG7_uurJ9IJD36jVhI,7147
274
- machineconfig/settings/lf/linux/lfrc,sha256=tLsoQtPm73qQy9jwjAcRFuZNQHNmR1dTXHVsa5iqby8,16270
273
+ machineconfig/settings/lf/linux/lfrc,sha256=GC19HaiJoSjDXihE7hfxrLLoXk4gt5osndt55XLE7f4,5417
275
274
  machineconfig/settings/lf/linux/autocall/delete.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
276
275
  machineconfig/settings/lf/linux/autocall/on-cd.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
277
276
  machineconfig/settings/lf/linux/autocall/on-quit.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -323,7 +322,7 @@ machineconfig/settings/rofi/config.rasi,sha256=nDX5B8wdXQYF1fwiOTBRJUI4l_gQbYaLa
323
322
  machineconfig/settings/rofi/config_default.rasi,sha256=rTfKnC-bZuWX1l-lWQACCUOE1ShhkfykAxtXX9PlQHE,4694
324
323
  machineconfig/settings/shells/alacritty/alacritty.toml,sha256=EbL-2Y4QunW1pvRWB2yuLCw8MMPONheJr5LFoWRieUQ,871
325
324
  machineconfig/settings/shells/alacritty/alacritty.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
326
- machineconfig/settings/shells/bash/init.sh,sha256=cWksbJL0HBIBudVJV9GIYhbxjpGCAz7zdiQX6CAprwY,2136
325
+ machineconfig/settings/shells/bash/init.sh,sha256=QK7RIX4LZRSFiaxKjwTijl4_QPRGtxJuLBvaZzCve8s,2263
327
326
  machineconfig/settings/shells/hyper/.hyper.js,sha256=h-HqeYlvPvPD4Ee7828Cxo87uVkzbMGJFqXTZIWoegw,8884
328
327
  machineconfig/settings/shells/ipy/profiles/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
328
  machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -331,7 +330,7 @@ machineconfig/settings/shells/ipy/profiles/default/startup/playext.py,sha256=OJ3
331
330
  machineconfig/settings/shells/kitty/kitty.conf,sha256=lDdx-dUX3jbKGb3BkS2f2TOpmgGiS-CI-_-lFvhD5A4,52870
332
331
  machineconfig/settings/shells/nushell/config.nu,sha256=ug0E0NXNlCzgStScFN6VTsAkUaOTPJZB69P-LS5L2VE,1047
333
332
  machineconfig/settings/shells/nushell/env.nu,sha256=4VmaXb-qP6qnMD5TPzkXMLFNlB5QC4l9HEzCvXZE2GQ,315
334
- machineconfig/settings/shells/pwsh/init.ps1,sha256=FIVE6cDyh4MPhVR-Jaht9YlgKfbknklGp7pl_atRUCo,2449
333
+ machineconfig/settings/shells/pwsh/init.ps1,sha256=Srm187Y0ht_qGjI6QAyLcnmz-6jI3BdBGrtG5-V_e7g,2683
335
334
  machineconfig/settings/shells/pwsh/profile.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
336
335
  machineconfig/settings/shells/starship/starship.toml,sha256=5rQTY7ZpKnrnhgu2Y9OJKUYMz5lPLIftO1p1VRuVZwQ,1150
337
336
  machineconfig/settings/shells/vtm/settings.xml,sha256=5TNXd-i0eUGo2w3tuhY9aOkwoJdqih8_HO_U6uL2Dts,18262
@@ -368,7 +367,7 @@ machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKG
368
367
  machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
369
368
  machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
370
369
  machineconfig/setup_linux/web_shortcuts/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
371
- machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=8ElVbJO7SFOZ9dMouN5Ai_wvBPZJ8kv_r4z1_hSsJ7w,880
370
+ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=Rl_1taVURx4PTBhbhQSh1m18k0qMAeFUtCardPqv5dw,448
372
371
  machineconfig/setup_windows/__init__.py,sha256=NnSVZkIBoxoMgkj-_KAqGonH3YziBIWXOKDEcmNAGTY,386
373
372
  machineconfig/setup_windows/apps.ps1,sha256=G5GqZ9G0aiQr_A-HaahtRdzpaTTdW6n3DRKMZWDTSPc,11214
374
373
  machineconfig/setup_windows/uv.ps1,sha256=ukk1Abh-q-RfpoEqI2XTE2dcQJmHk0VFF6WqkK3TW8Q,350
@@ -378,7 +377,7 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
378
377
  machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
379
378
  machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
380
379
  machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
381
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=y-QzocdFk3797EgqO2QierRzLbDM2379LLQ8q4It9Cc,919
380
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=7hQu8ywh0Cq258OK2rBE0X1dbNrXsaZ5SIQ7yLUZJj4,548
382
381
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
383
382
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
384
383
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -421,8 +420,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
421
420
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
422
421
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
423
422
  machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
424
- machineconfig-5.84.dist-info/METADATA,sha256=4K8XT7il2Jha9zmrIQsGCjLFToSy2TYBVXVYygYFbOo,3013
425
- machineconfig-5.84.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
426
- machineconfig-5.84.dist-info/entry_points.txt,sha256=M0jwN_brZdXWhmNVeXLvdKxfkv8WhhXFZYcuKBA9qnk,418
427
- machineconfig-5.84.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
428
- machineconfig-5.84.dist-info/RECORD,,
423
+ machineconfig-5.85.dist-info/METADATA,sha256=V5Ii7caCguM7B3mjgF1SIWJ-qFMzHGqM7VPmqRtV2JY,3013
424
+ machineconfig-5.85.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
425
+ machineconfig-5.85.dist-info/entry_points.txt,sha256=M0jwN_brZdXWhmNVeXLvdKxfkv8WhhXFZYcuKBA9qnk,418
426
+ machineconfig-5.85.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
427
+ machineconfig-5.85.dist-info/RECORD,,
@@ -1,73 +0,0 @@
1
- from pathlib import Path
2
- from configparser import SectionProxy
3
- from rich import box
4
- from rich.console import Console
5
- from rich.panel import Panel
6
- from rich.syntax import Syntax
7
- from machineconfig.utils.io import read_ini
8
-
9
- config = read_ini(Path.home().joinpath(".ssh", "config"))
10
-
11
-
12
- def sync_remote(machine_name: str) -> None:
13
- console = Console()
14
- console.print(
15
- Panel.fit(
16
- "\n".join([f"🖥️ Target machine: {machine_name}"]),
17
- title="🔄 Sync Remote",
18
- border_style="cyan",
19
- box=box.ROUNDED,
20
- )
21
- )
22
-
23
- machine_config: SectionProxy | None = None
24
- if machine_name in config:
25
- machine_config = config[machine_name]
26
-
27
- if machine_config is None:
28
- error_msg = f"Machine {machine_name} not found in SSH config."
29
- console.print(
30
- Panel.fit(
31
- "\n".join([error_msg]),
32
- title="❌ Error",
33
- subtitle="⚠️ Unknown target machine",
34
- border_style="red",
35
- box=box.ROUNDED,
36
- )
37
- )
38
- raise ValueError(error_msg)
39
-
40
- code = f"""
41
- ssh -o "HostName={machine_config["HostName"]}" -o "User={machine_config["User"]}" -o "ProxyCommand=cloudflared access ssh --hostname %h" -o "Port={machine_config["Port"]}" -o "RequestTTY=yes" -o "RemoteCommand=devops --which update; bash" {machine_name}
42
- """
43
-
44
- syntax = Syntax(code, "bash", line_numbers=False, word_wrap=True)
45
- console.print(
46
- Panel(
47
- syntax,
48
- title=f"🔄 Sync Command | {machine_name}",
49
- subtitle=f"🌐 Host: {machine_config['HostName']}",
50
- border_style="blue",
51
- box=box.ROUNDED,
52
- )
53
- )
54
-
55
- code_path = Path.home().joinpath(".config", "machingconfig", "vscode_api", "code_temp")
56
- code_path.parent.mkdir(parents=True, exist_ok=True)
57
- code_path.write_text(code, encoding="utf-8")
58
- code_path.chmod(0o755)
59
-
60
- console.print(f"🚀 Executing sync command for {machine_name}...", style="bold yellow")
61
-
62
- import subprocess
63
-
64
- subprocess.run([str(code_path)], shell=True, check=True)
65
-
66
- console.print(
67
- Panel.fit(
68
- "\n".join([f"🖥️ Machine: {machine_name}"]),
69
- title="✅ Sync Completed",
70
- border_style="green",
71
- box=box.ROUNDED,
72
- )
73
- )