man page
This commit is contained in:
+155
@@ -0,0 +1,155 @@
|
|||||||
|
.TH DRAWER 1 "2026-05-15" "drawer" "User Commands"
|
||||||
|
.SH NAME
|
||||||
|
drawer \- encrypt and decrypt project directories
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B drawer open
|
||||||
|
.RB [ \-i
|
||||||
|
.IR key ]
|
||||||
|
.RB [ \-f ]
|
||||||
|
.I drawer_file
|
||||||
|
.RI [ target_path ]
|
||||||
|
.br
|
||||||
|
.B drawer close
|
||||||
|
.RB [ \-i
|
||||||
|
.IR key ]
|
||||||
|
.I target_path
|
||||||
|
.RI [ drawer_file ]
|
||||||
|
.br
|
||||||
|
.B drawer info
|
||||||
|
.RB [ \-i
|
||||||
|
.IR key ]
|
||||||
|
.I drawer_file
|
||||||
|
.br
|
||||||
|
.B drawer key
|
||||||
|
.I filename
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.B drawer
|
||||||
|
stores project directories as encrypted archive files called drawers.
|
||||||
|
Each drawer file is a gzip-compressed tar archive encrypted with an
|
||||||
|
SSH public key using the age encryption format.
|
||||||
|
Only the corresponding SSH private key can open it.
|
||||||
|
.PP
|
||||||
|
Drawer files must use the
|
||||||
|
.B .drawer
|
||||||
|
extension.
|
||||||
|
The SSH key to use is specified with
|
||||||
|
.B \-i
|
||||||
|
or the environment variable
|
||||||
|
.BR DRAWER_KEY .
|
||||||
|
.SH SUBCOMMANDS
|
||||||
|
.SS open
|
||||||
|
Decrypt
|
||||||
|
.I drawer_file
|
||||||
|
and expand its contents into
|
||||||
|
.IR target_path .
|
||||||
|
.PP
|
||||||
|
If
|
||||||
|
.I target_path
|
||||||
|
is omitted it is inferred: a single-file drawer extracts to a file
|
||||||
|
named after the stored entry; a directory drawer extracts to a
|
||||||
|
directory named after the drawer file stem.
|
||||||
|
The inferred path is printed to standard output.
|
||||||
|
.PP
|
||||||
|
Fails if
|
||||||
|
.I target_path
|
||||||
|
already exists and is non-empty unless
|
||||||
|
.B \-f
|
||||||
|
is given.
|
||||||
|
.TP
|
||||||
|
.BI \-i " key"
|
||||||
|
Path to the SSH private key. Overrides
|
||||||
|
.BR DRAWER_KEY .
|
||||||
|
.TP
|
||||||
|
.B \-f
|
||||||
|
Force extraction even if
|
||||||
|
.I target_path
|
||||||
|
is non-empty.
|
||||||
|
.SS close
|
||||||
|
Compress and encrypt
|
||||||
|
.I target_path
|
||||||
|
and write the result to
|
||||||
|
.IR drawer_file .
|
||||||
|
.I target_path
|
||||||
|
may be a file or a directory.
|
||||||
|
.PP
|
||||||
|
If
|
||||||
|
.I drawer_file
|
||||||
|
is omitted it defaults to
|
||||||
|
.I target_path
|
||||||
|
with a
|
||||||
|
.B .drawer
|
||||||
|
extension appended.
|
||||||
|
The inferred drawer file path is printed to standard output.
|
||||||
|
.PP
|
||||||
|
Fails if
|
||||||
|
.I drawer_file
|
||||||
|
would be written inside
|
||||||
|
.IR target_path .
|
||||||
|
.TP
|
||||||
|
.BI \-i " key"
|
||||||
|
Path to the SSH private key. Overrides
|
||||||
|
.BR DRAWER_KEY .
|
||||||
|
.SS info
|
||||||
|
Decrypt
|
||||||
|
.I drawer_file
|
||||||
|
and print a one-line summary: whether it contains a single file or a
|
||||||
|
directory, and the size or file count.
|
||||||
|
.TP
|
||||||
|
.BI \-i " key"
|
||||||
|
Path to the SSH private key. Overrides
|
||||||
|
.BR DRAWER_KEY .
|
||||||
|
.SS key
|
||||||
|
Generate a new Ed25519 SSH key and write it to
|
||||||
|
.IR filename .
|
||||||
|
Fails if
|
||||||
|
.I filename
|
||||||
|
already exists or its parent directory does not exist.
|
||||||
|
.SH ENVIRONMENT
|
||||||
|
.TP
|
||||||
|
.B DRAWER_KEY
|
||||||
|
Path to the SSH private key used for encryption and decryption.
|
||||||
|
Overridden by
|
||||||
|
.BR \-i .
|
||||||
|
.SH EXAMPLES
|
||||||
|
Generate a new key:
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
.B drawer key ~/.keys/mykey
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
Close a directory into a drawer (drawer file inferred):
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
.B drawer close ~/projects/myproject
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
Close with an explicit drawer file path:
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
.B drawer close ~/projects/myproject ~/archive/myproject.drawer
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
Open a drawer (target directory inferred):
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
.B drawer open ~/archive/myproject.drawer
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
Open a drawer into an explicit directory:
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
.B drawer open -i ~/.keys/mykey ~/archive/myproject.drawer ~/projects/myproject
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
Show what is inside a drawer:
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
.B drawer info -i ~/.keys/mykey ~/archive/myproject.drawer
|
||||||
|
.RE
|
||||||
|
.SH EXIT STATUS
|
||||||
|
.B drawer
|
||||||
|
exits 0 on success and 1 on any error, printing a diagnostic message
|
||||||
|
to standard error.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR ssh-keygen (1),
|
||||||
|
.BR age (1)
|
||||||
Reference in New Issue
Block a user