diff --git a/README.md b/README.md
index 66fd9dfe..b792ee61 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,8 @@
[![Downloads](http://pepy.tech/badge/shallow-backup)](http://pepy.tech/count/shallow-backup)
[![Build Status](https://travis-ci.com/alichtman/shallow-backup.svg?branch=master)](https://travis-ci.com/alichtman/shallow-backup)
-[![Codacy Badge](https://api.codacy.com/project/badge/Grade/1719da4d7df5455d8dbb4340c428f851)](https://www.codacy.com/app/alichtman/shallow-backup?utm_source=github.com&utm_medium=referral&utm_content=alichtman/shallow-backup&utm_campaign=Badge_Grade)
+[![Codacy Badge](https://api.codacy.com/project/badge/Grade/1719da4d7df5455d8dbb4340c428f851)](https://www.codacy.com/app/alichtman/shallow-backup?utm_source=github.com&utm_medium=referral&utm_content=alichtman/shallow-backup&utm_campaign=Badge_Grade)
+
`shallow-backup` lets you easily create lightweight backups of installed packages, applications, fonts and dotfiles, and automatically push them to a remote Git repository.
@@ -11,46 +12,43 @@ I use it to manage [my dotfiles](https://github.com/alichtman/dotfiles).
![Shallow Backup GIF Demo](img/shallow-backup-demo.gif)
-Contents
-========
-
-
-* [Why?](#why)
-* [Installation](#installation)
- * [Method 1: pipx](#method-1-pipx)
- * [Method 2: Install From Source](#method-2-install-from-source)
-* [Dependencies](#dependencies)
-* [Usage](#usage)
-* [Recipes](#recipes)
- * [Maintain a separate repo for your dotfiles](#maintain-a-separate-repo-for-your-dotfiles)
- * [Synchronize dotfiles on multiple computers](#synchronize-dotfiles-on-multiple-computers)
- * [Reinstall dotfiles from a backup](#reinstall-dotfiles-from-a-backup)
-* [What can I back up?](#what-can-i-back-up)
-* [Configuration](#configuration)
- * [Conditional Backup and Reinstallation](#conditional-backup-and-reinstallation)
-* [Git Integration](#git-integration)
- * [A Word of Caution](#a-word-of-caution)
- * [.gitignore](#gitignore)
-* [Output Structure](#output-structure)
-* [Want to Contribute?](#want-to-contribute)
-
-
+# Contents
+
+- [Why?](#why)
+- [Installation](#installation)
+ - [Method 1: pipx](#method-1-pipx)
+ - [Method 2: Install From Source](#method-2-install-from-source)
+- [Dependencies](#dependencies)
+- [Usage](#usage)
+- [Recipes](#recipes)
+ - [Maintain a separate repo for your dotfiles](#maintain-a-separate-repo-for-your-dotfiles)
+ - [Synchronize dotfiles on multiple computers](#synchronize-dotfiles-on-multiple-computers)
+ - [Reinstall dotfiles from a backup](#reinstall-dotfiles-from-a-backup)
+- [What can I back up?](#what-can-i-back-up)
+- [Configuration](#configuration)
+ - [Conditional Backup and Reinstallation](#conditional-backup-and-reinstallation)
+- [Git Integration](#git-integration)
+ - [A Word of Caution](#a-word-of-caution)
+ - [.gitignore](#gitignore)
+- [Output Structure](#output-structure)
+- [Want to Contribute?](#want-to-contribute)
### Why?
I wanted a tool that allows you to:
-+ Back up dotfiles _from where they live on the system_.
-+ Back up files from _any_ path on the system, not just `$HOME`.
-+ Reinstall them from the backup directory idempotently.
-+ Backup and reinstall files conditionally, so you can easily manage dotfiles across multiple systems.
-+ Copy files on installation and backup, as opposed to symlinking them.
-+ Backup package installations in a highly compressed manner
-+ Not worry about accidentally doing something dangerous / destructive (is user-protective)
+- Back up dotfiles _from where they live on the system_.
+- Back up files from _any_ path on the system, not just `$HOME`.
+- Reinstall them from the backup directory idempotently.
+- Backup and reinstall files conditionally, so you can easily manage dotfiles across multiple systems.
+- Copy files on installation and backup, as opposed to symlinking them.
+- Backup package installations in a highly compressed manner
+- Not worry about accidentally doing something dangerous / destructive (is user-protective)
`shallow-backup` checks all of those boxes.
### Installation
+
---
> **Warning**
@@ -71,6 +69,7 @@ $ pip3 install .
```
### Dependencies
+
---
- `pre-commit`
@@ -79,6 +78,7 @@ $ pip3 install .
If you are missing the dependencies, you will be guided to install them.
### Usage
+
---
- To start the interactive program, run `$ shallow-backup`.
@@ -122,8 +122,8 @@ Options:
-h, -help, --help Show this message and exit.
```
-
### Recipes
+
---
#### Maintain a separate repo for your dotfiles
@@ -145,37 +145,40 @@ When reinstalling your dotfiles, the top level `.git/`, `.gitignore`, `img/` and
Available in [`zsh-users/zsh-completions`](https://github.com/zsh-users/zsh-completions/blob/master/src/_shallow-backup). Follow the [installation instructions here](https://github.com/zsh-users/zsh-completions/tree/master#using-zsh-frameworks).
### What can I back up?
+
---
By default, `shallow-backup` backs these up.
1. Dotfiles and dotfolders
- * `.bashrc`
- * `.bash_profile`
- * `.gitconfig`
- * `.pypirc`
- * `.config/shallow-backup.json`
- * `.ssh/`
- * `.vim/`
- * `.zshrc`
+
+ - `.bashrc`
+ - `.bash_profile`
+ - `.gitconfig`
+ - `.pypirc`
+ - `.config/shallow-backup.json`
+ - `.ssh/`
+ - `.vim/`
+ - `.zshrc`
2. App Config Files
- * Atom
- * VSCode
- * Sublime Text 2/3
- * Terminal.app
+
+ - VSCode
+ - Sublime Text 2/3
+ - Terminal.app
3. Installed Packages
- * `brew` and `cask`
- * `cargo`
- * `gem`
- * `pip`
- * `pip3`
- * `npm`
- * `macports`
- * `VSCode` Extensions
- * `Sublime Text 2/3` Packages
- * System Applications
+
+ - `brew` and `cask`
+ - `cargo`
+ - `gem`
+ - `pip`
+ - `pip3`
+ - `npm`
+ - `macports`
+ - `VSCode` Extensions
+ - `Sublime Text 2/3` Packages
+ - System Applications
4. User installed `fonts`.
@@ -252,13 +255,13 @@ Here's an example config based on my [dotfiles](https://www.github.com/alichtman
"/Users/alichtman/Library/Application Support/Code/User/settings.json": "vscode/settings",
"/Users/alichtman/Library/Application Support/Code/User/Snippets": "vscode/Snippets",
"/Users/alichtman/Library/Application Support/Code/User/keybindings.json": "vscode/keybindings",
- "/Users/alichtman/.atom": "atom",
"/Users/alichtman/Library/Preferences/com.apple.Terminal.plist": "terminal_plist"
}
}
```
### Git Integration
+
---
#### A Word of Caution
@@ -267,7 +270,7 @@ This backup tool is git-integrated, meaning that you can easily store your backu
_If you choose to back up to a public repository, look at every file you're backing up to make sure you want it to be public._
-> [!NOTE]
+> [!NOTE]
> As of `v6.2`, `trufflehog` is run as a required precommit hook and will detect secrets.
#### .gitignore
@@ -275,6 +278,7 @@ _If you choose to back up to a public repository, look at every file you're back
As of `v4.0`, any `.gitignore` changes should be made in the `shallow-backup` config file. `.gitignore` changes that are meant to apply to all directories should be under the `root-gitignore` key. Dotfile specific gitignores should be placed under the `dotfiles-gitignore` key. The original `default-gitignore` key in the config is still supported for backwards compatibility, however, converting to the new config format is strongly encouraged.
### Output Structure
+
---
```shell
@@ -316,13 +320,15 @@ shallow_backup/
```
### Reinstalling Dotfiles
-----
+
+---
To reinstall your dotfiles, clone your dotfiles repo and make sure your shallow-backup config path can be found at either `~/.config/shallow-backup.json` or `$XDG_CONFIG_HOME/.shallow_backup.json`. Set the `backup-path` key in the config to the path of your cloned dotfiles. Then run `$ shallow-backup -reinstall-dots`.
When reinstalling your dotfiles, the top level `.git/`, `.gitignore`, `img/` and `README.md` files and directories are ignored.
### Want to Contribute?
+
---
Check out `CONTRIBUTING.md` and the `docs` directory.