`homeboy file`
Synopsis
homeboy file <COMMAND>Subcommands
list <project_id> <path>read <project_id> <path>write <project_id> <path> [--apply](reads content from stdin)mkdir <project_id> <path>(create a directory)delete <project_id> <path> [-r|--recursive] [--apply](delete files or directories)rename <project_id> <old_path> <new_path>find <project_id> <path> [options](search for files by name)grep <project_id> <path> <pattern> [options](search file contents)download <project_id> <path> [local_path] [-r|--recursive]copy <source> <destination> [-r|--recursive] [-c|--compress] [--dry-run] [--exclude <pattern>]sync <source> <destination> [-c|--compress] [--dry-run] [--exclude <pattern>]edit <project_id> <file_path> [operations] [-n|--dry-run] [-f|--force]
copy and sync targets use local/path or server_id:/path syntax. sync is recursive and non-deleting by default; it does not expose a delete mode.
write and delete
write and delete default to non-mutating plan output. Pass --apply to perform the remote mutation.
printf 'content' | homeboy file write mysite /tmp/example.txt
printf 'content' | homeboy file write mysite /tmp/example.txt --apply
homeboy file delete mysite /tmp/example.txt
homeboy file delete mysite /tmp/example.txt --applyfind
homeboy file find <project_id> <path> [options]Options:
--name <pattern>: Filename pattern (glob, e.g.,*.php)--type <f|d|l>: File type:f(file),d(directory),l(symlink)--max-depth <n>: Maximum directory depth
Examples:
# Find all PHP files
homeboy file find mysite /var/www --name "*.php"
# Find directories named "cache"
homeboy file find mysite /var/www --name "cache" --type d
# Find files in top 2 levels only
homeboy file find mysite /var/www --name "*.log" --max-depth 2grep
homeboy file grep <project_id> <path> <pattern> [options]Options:
--name <glob>: Filter files by name pattern (e.g.,*.php)--max-depth <n>: Maximum directory depth-i, --ignore-case: Case insensitive search
Examples:
# Find "TODO" in PHP files
homeboy file grep mysite /var/www "TODO" --name "*.php"
# Case-insensitive search
homeboy file grep mysite /var/www "error" -i
# Search with depth limit
homeboy file grep mysite /var/www "add_action" --name "*.php" --max-depth 3copy and sync
homeboy file copy ./report.json prod:/tmp/report.json --dry-run
homeboy file copy ./dump.sql prod:/tmp/dump.sql --compress --dry-run
homeboy file copy prod:/tmp/dump.sql ./dump.sql --dry-run
homeboy file copy old:/var/www/uploads new:/var/www/uploads --recursive --exclude cache --dry-run
homeboy file sync ./uploads prod:/var/www/uploads --exclude cache --dry-runNotes:
copypreserves the old local↔remote and remote↔remote transfer target syntax.- Use
file copy <local> <server>:<path>for local-to-server copies. syncis directory-oriented and recursive, but does not delete files from the destination.
edit
homeboy file edit <project_id> <file_path> [operations]Operations:
--replace-line <n> --replace-line-content <content>: replace one line by number.--insert-after <n> --insert-after-content <content>: insert content after a line.--insert-before <n> --insert-before-content <content>: insert content before a line.--delete-line <n>: delete one line by number.--delete-lines <start> <end>: delete an inclusive line range.--replace-pattern <pattern> --replace-pattern-content <content>: replace a unique pattern match.--replace-all-pattern <pattern> --replace-all-content <content>: replace all pattern matches.--delete-pattern <pattern>: delete the line or content matched by a pattern operation.--append <content>: append content to the file.--prepend <content>: prepend content to the file.
Flags:
-n,--dry-run: show changes without applying them.-f,--force: apply even when a pattern operation has multiple matches.
Examples:
homeboy file edit mysite /var/www/wp-config.php
--replace-pattern "WP_DEBUG', false"
--replace-pattern-content "WP_DEBUG', true"
--dry-run
homeboy file edit mysite /var/www/.maintenance --append "enabled"JSON output
Note: all command output is wrapped in the global JSON envelope described in the JSON output contract.
homeboy filereturns one of several output types as thedatapayload.
Standard operations (list, read, write, mkdir, delete, rename)
Note: all command output is wrapped in the global JSON envelope described in the JSON output contract. homeboy file returns one of several output types as the data payload.
command:file.list|file.read|file.write|file.mkdir|file.delete|file.renameproject_idbase_path: project base path if configuredpath/old_path/new_path: resolved full remote pathsrecursive: present for deleteentries: forlist(parsed fromls -la)content: forreadbytes_written: forwrite(number of bytes written after stripping one trailingnif present)dry_run,action_required: for guardedwriteanddeleteplansstdout,stderr: included for error context when applicableexit_code,success
Transfer output
Note: all command output is wrapped in the global JSON envelope described in the JSON output contract. homeboy file returns one of several output types as the data payload.
sourcedestinationmethod:scp,cat-pipe, ortar-pipedirection:push,pull, orserver-to-serverrecursivecompresssuccesserrordry_run
Fields:
namepathis_directorysizepermissions(permission bits excluding the leading file type)
Find output
copy and sync return the shared transfer payload:
command:file.findproject_idbase_path: project base path if configuredpath: search pathpattern: name pattern if specifiedmatches: array of matching file pathsmatch_count: number of matches
Grep output
List entries (entries[]):
command:file.grepproject_idbase_path: project base path if configuredpath: search pathpattern: search patternmatches: array of match objectsmatch_count: number of matches
Fields:
file: file pathline: line numbercontent: matching line content
Edit output
Fields:
command:file.editproject_idbase_path: project base path if configuredpath: edited file pathchanges_made: array of line change recordschange_count: number of changes made or plannedsuccesserror: error string when editing failed
Exit code
Match objects (matches[]):