| Age | Commit message (Collapse) | Author | 
|---|
|  |  | 
|  |  | 
|  |  | 
|  | Script the release process to make it easier to build a tar containing
the executable, Bash completion, and the man page. | 
|  |  | 
|  |  | 
|  | Instead of the messy variables we were using, which caused
`passextract.1.txt.tmp` and `passextract.1` files to be generated at the
root of the project, create a few new targets to do the "`"` to "*"
transformation and build the man page from a temporary file. | 
|  | To more clearly identify literals in "`literal`" blocks in the man page,
make them bold by doing a simple text replacement on them.
Note that this Makefile makes a `passextract.1` file at the root of the
project. Need to fix that. | 
|  | Provide a man page for in situ documentation. Use AsciiDoc to generate
the man page.
Yay, my first man page!
Resources:
- https://github.com/BurntSushi/ripgrep/blob/fe9be65/build.rs
- https://github.com/BurntSushi/ripgrep/blob/f5411b9/doc/rg.1.txt.tpl
- http://www.methods.co.nz/asciidoc/asciidoc.1.txt
- https://github.com/git/git/blob/23f8239/Documentation/git-clean.txt
- https://github.com/git/git/blob/8a8f121049fdd881981799755a041b3f81449805/Documentation/asciidoctor-extensions.rb
- http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/
- https://github.com/git/git/commit/5945717009cbd07fc303939452df6475ac342fe7 | 
|  | Previously, when the "invisible" flag was activated, we wouldn't print
anything except the "p: " prefix on a password line. This made it
difficult to verify the password, and if you for some reason had
multiple passwords, you wouldn't know which one to pick unless you knew
the order.
This at least gives you a visual cue about your password. | 
|  |  | 
|  | Copy over our Git tag messages with:
    $ git tag -n99
Reformat them and put them in reverse chronological order. | 
|  | Instead of the convoluted hard-to-read `hide_password &&` nonsense, give
ourselves a way to express the condition in terms of the argument _not_
being one of our accepted options (only `-i`). This ensures that we
either capture the filename in the last argument or use STDIN. | 
|  | Connect the `-i` argument flag to the renderer. If the arg was passed,
hide passwords, otherwise show them.
Change `args.first()` to `args.get(1)` because the actual first element
is the command executable.
Not happy with the condition I'm using here to grab the password file or
the STDIN `-`. It doesn't read well at all. It all does work, but this
part I want to rewrite to make it easier to read. | 
|  | Turn on a `hide_password` boolean variable if an `-i` argument is passed
in (haven't tested this yet). This tells us whether the user wants us to
hide the password in the selection interface. | 
|  | Instead of rendering the password string, hide it while allowing it to
be copied. It is identified by the "p: " prefix, but nothing follows
that.
This allows you to run `passextract` without having to worry about
others peering over your shoulder or about screen capture or recording
hacks.
I'll be adding a command line flag to force you to opt in to this
feature, while keeping the old functionality the same. | 
|  | $ rustc --version
    rustc 1.24.0 (4d90ac38c 2018-02-12) | 
|  |  | 
|  |  | 
|  |  | 
|  | The last thing copied from Passextract will stick around in your
clipboard, potentially opening up your password to accidental pasting or
a clipboard exploit.
Pass deals with this in a nice way, by restoring your clipboard back to
what was copied before after a set time delay.
Here that same functionality is more difficult to achieve because the
Clipboard crate can only deal with strings. So if for example you've
copied a file, an image, a program's proprietary type, or some other
binary data, it can't be restored with the Clipboard crate. Pass is able
to do this because it uses the OS X `pbcopy`/`pbpaste` commands under
the hood, which do support binary data. We could do that here I suppose,
but it's easier and cross-platform to leverage a library.
My heavy-handed solution to the problem of clipboard insecurity is to
just overwrite the clipboard with an empty string when Passextract
quits. The solution is not ideal because it doesn't preserve your past
clipboard entry, and it forces you to keep the Passextract menu open
until you paste the copied entry, but it's better than nothing when it
comes to keeping the clipboard secure.
If there's an error writing to the clipboard, Passextract will refuse to
quit. | 
|  | Rebuild the program with the latest stable version of Rust. | 
|  |  | 
|  |  | 
|  |  | 
|  | `g`: moves the selection to the first option
`G`: moves the selection to the last option
This allows for faster selection if there are more than 2–3 options.
Using `g` still allows `gg` to work since doubling the command doesn't
change its meaning. | 
|  |  | 
|  |  | 
|  | Values that contained ": " would not be parsed correctly for copying to
the clipboard. If, for example, a password contained ": ", those
characters and any following them wouldn't be copied. This change allows
such passwords to be copied correctly. | 
|  |  | 
|  | Enumerate the commands available in the interactive interface and
describe what they do. | 
|  | Include a Gif screencast displayed in the README. | 
|  | Include a description of the program, how to use it, install and
uninstall instructions, and license information.
A placeholder Demo section is also written in where a short screencast
is expected to be inserted. | 
|  | Also include brief notices in the source files. Not a fan of the huge
blocks of text that the FSF recommends. | 
|  | Create a Bash completion file that refers to the
`_pass_complete_entries` function from the `pass` Bash completion file.
The same completion options are given as when using `pass show`. | 
|  |  | 
|  |  | 
|  | Get option extraction/parsing working both for STDIN and for calls to
`pass show`.
If no argument is passed to the executable or the first argument is "-",
options are read from STDIN. Otherwise, the first argument is passed to
`pass show`, the output of which is parsed as options. | 
|  | Temporarily comment out code that deals with STDIN to get this feature
working. It complicated things to leave it in right now.
Given an argument that isn't "-" (STDIN), we pass that argument to `pass
show`. Users correctly get a password prompt from `pass`, and the output
from the command gets sent to the Passextract TUI for display in the
menu and copying. | 
|  |  | 
|  | Remove the duplication of these lines for the `j` and `k` commands by
extracting them to a function. | 
|  | Make the title appear in white-on-black knockout text. | 
|  | Use `_` for the default/general case. Do nothing in this case, just
continue looping. | 
|  | Delete this line from the TUI display and adjust the real output lines
to be one line higher. | 
|  | Don't move the cursor when the selection is changed. It was flickering,
which looked rather distracting. Removing the cursor makes the interface
look more fluid and snappy. | 
|  |  | 
|  | Read STDIN and get all lines that start with "e: ", "u: ", and "p: ". If
none are found, exit.
These lines get added to the `options` vector which then gets displayed
in the TUI. Since the contents of the vector are different from our
hard-coded one, use a borrow on the clipboard write call. | 
|  | Change the colour of the selection arrow to red if there's an error and
green if the clipboard was written to successfully.
The colour only lasts for 100 milliseconds because that's the refresh
rate of the loop. This seems to be a nice way to briefly offer a visual
notification and automatically return the interface to normal right
afterward. | 
|  | Better readability and it's the same. It looked a little darker than
white, that's why I changed it, but they're the same. | 
|  |  |