|
2 | 2 |
|
3 | 3 | **bak** is a command-line utility for creating and restoring backup copies of single files - `.bak` files - without clutter. |
4 | 4 |
|
| 5 | +- [Description and Usage](#description-and-usage) |
| 6 | +- [Additional Commands](#additional-commands-and-flags) |
| 7 | +- [Installation and Requirements](#installation-and-requirements) |
| 8 | +- [Current State](#current-state) |
| 9 | +- [Contributing](#contributing) |
| 10 | + |
| 11 | +## Description and Usage |
| 12 | + |
5 | 13 | As residents of the terminal, we all make a lot of on-the-fly, in-place, single-file backups. Config files, dotfiles, "I'm only pretty sure I know what I'm doing" files, before you break them, you do this: |
6 | 14 |
|
7 | 15 | `cp my_thing.file my_thing.file.bak` |
@@ -43,18 +51,43 @@ All of **bak**'s commands will disambiguate between multiple copies of the same |
43 | 51 |
|
44 | 52 | diff `bak get-bak my_file.json` my_file.json |
45 | 53 |
|
46 | | -## Current state (updated Jan. 20, 2020) |
| 54 | +## Installation and Requirements |
| 55 | + |
| 56 | +Requires Python3.6 or higher, presumably. Python3.5 has been EOL for 3 months, as of this writing, so if your distro is pegged to it... ouch. |
| 57 | + |
| 58 | +### Installation |
| 59 | + |
| 60 | +As the program is currently in an alphaish state, I have decided not to create distro packages *yet*. I will provide GitHub releases whenever I bump the alpha-alpha version number. |
| 61 | + |
| 62 | +However, if you're comfortable with Python, you can install this repository with the provided `setup.py` *or* with pip (just run pip on the local directory.) |
| 63 | + |
| 64 | +If you'd like to hack on `bak`, I suggest the latter; I'm in the habit of making a project venv, and then doing |
| 65 | +`pip3 install --editable .` |
| 66 | + |
| 67 | +In `bak`'s case, I usually test system-level usage with a simple and naive `setup.py install --force` |
| 68 | + |
| 69 | +## Current state |
| 70 | + |
| 71 | +(updated Jan. 20, 2020) |
47 | 72 | This is a very pre-alpha version, as in, this is a spaghetti proof-of-concept. Perhaps ~~5-6~~ ~~12-15~~ 20 hours have been spent on development so far. As such, it's only "working" in the strictest sense. |
48 | 73 |
|
49 | 74 | At the moment, **bak** stores its database and your bakfiles in `$XDG_DATA_HOME/bak`. If `$XDG_DATA_HOME` is not set, its specified default is used, and your stuff ends up in `~/.local/share/bak`. |
50 | 75 |
|
51 | 76 | The config file exists, but could be more intuitive. It's at `$XDG_CONFIG_HOME/bak.cfg` or `~/.config/bak.cfg` and currently accepts values for: |
52 | 77 |
|
53 | | -* The location of your .bakfiles and bakfile DB (I don't recommend changing this) |
54 | | -* The program to use by default for `bak open` |
55 | | -* The program to use by default for `bak diff` (at the moment, this must support typical `diff` syntax, as in `diff <file1> <file2>`) |
56 | | -* Whether `bak list` should display relative paths (defaults to False) |
| 78 | +- The location of your .bakfiles and bakfile DB (I don't recommend changing this) |
| 79 | +- The program to use by default for `bak open` |
| 80 | +- The program to use by default for `bak diff` (at the moment, this must support typical `diff` syntax, as in `diff <file1> <file2>`) |
| 81 | +- Whether `bak list` should display relative paths (defaults to False) |
57 | 82 |
|
58 | 83 | If the above sections suggest that a command is implemented, it's working at the most basic level. There are few sanity checks. Expect and please report bugs, as well as feature requests. If you're brave enough to work on a project in the early, mediocre phase, go nuts with the PRs. |
59 | 84 |
|
60 | 85 | Also, there's ~~no~~ very little exception handling (yet.) |
| 86 | + |
| 87 | +## Contributing |
| 88 | + |
| 89 | +By and large, I welcome PRs, though I never promise merges. |
| 90 | + |
| 91 | +With an MIT license and GitHub, the licensing situation is a lot more straightforward than in some other cases: you clone this repo, you're getting the code from the author, and the license has the word "irrevocable" in it. Then you're offering a modified version *back* to the author, with the same license file, still containing the word "irrevocable." What's there to sue about? |
| 92 | + |
| 93 | +So go nuts, if you're so inclined. I have no particular expectations for this project. |
0 commit comments