mirror of
https://github.com/deadc0de6/dotdrop.git
synced 2026-02-12 18:45:13 +00:00
update doc
This commit is contained in:
18
docs/README.md
Normal file
18
docs/README.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Dotdrop documentation
|
||||||
|
|
||||||
|
[Dotdrop](https://deadc0de.re/dotdrop/) is a dotfiles manager that provides efficient ways of managing your dotfiles.
|
||||||
|
It is especially powerful when it comes to managing those across different hosts..
|
||||||
|
|
||||||
|
The idea of dotdrop is to have the ability to store each dotfile only once and deploy them with a different content on different hosts/setups.
|
||||||
|
To achieve this, it uses [jinja2](http://jinja.pocoo.org/) which is a templating engine that allows to specify
|
||||||
|
during the dotfile installation how (with what content) each dotfile will be installed based on a selected profile.
|
||||||
|
|
||||||
|
Most information on using dotdrop are described in this wiki and in the [readme](https://github.com/deadc0de6/dotdrop/blob/master/README.md).
|
||||||
|
For more check
|
||||||
|
|
||||||
|
* [a quick overview of dotdrop features](https://deadc0de.re/dotdrop/)
|
||||||
|
* [the blogpost on dotdrop](https://deadc0de.re/articles/dotfiles.html)
|
||||||
|
* [an example](https://github.com/deadc0de6/dotdrop#getting-started)
|
||||||
|
* [how people are using dotdrop](meta/people-using-dotdrop.md)
|
||||||
|
|
||||||
|
For more examples of config file, [search github](https://github.com/search?q=filename%3Aconfig.yaml+dotdrop&type=Code).
|
||||||
@@ -3,28 +3,7 @@
|
|||||||
The config file used by dotdrop is
|
The config file used by dotdrop is
|
||||||
[config.yaml](https://github.com/deadc0de6/dotdrop/blob/master/config.yaml).
|
[config.yaml](https://github.com/deadc0de6/dotdrop/blob/master/config.yaml).
|
||||||
|
|
||||||
* [Location](#location)
|
## Location
|
||||||
* [Format](#format)
|
|
||||||
* [Actions](#actions)
|
|
||||||
* [Transformations](#transformations)
|
|
||||||
* [Variables](#variables)
|
|
||||||
* [Interpreted variables](#interpreted-variables)
|
|
||||||
* Config details on
|
|
||||||
* [Symlinking dotfiles](#symlinking-dotfiles)
|
|
||||||
* [All dotfiles for a profile](#all-dotfiles-for-a-profile)
|
|
||||||
* [Include dotfiles from another profile](#include-dotfiles-from-another-profile)
|
|
||||||
* [Import profile dotfiles from file](#import-profile-dotfiles-from-file)
|
|
||||||
* [Import variables from file](#import-variables-from-file)
|
|
||||||
* [Import actions from file](#import-actions-from-file)
|
|
||||||
* [Import config files](#import-config-files)
|
|
||||||
* Dynamic elements
|
|
||||||
* [Dynamic dotfile paths](#dynamic-dotfile-paths)
|
|
||||||
* [Dynamic actions](#dynamic-actions)
|
|
||||||
* [Dynamic transformations](#dynamic-transformations)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Location
|
|
||||||
|
|
||||||
Unless specified dotdrop will look in following places for the config file (`config.yaml`)
|
Unless specified dotdrop will look in following places for the config file (`config.yaml`)
|
||||||
and use the first one found
|
and use the first one found
|
||||||
@@ -38,7 +17,7 @@ and use the first one found
|
|||||||
You can force dotdrop to use a different file either by using the `-c --cfg` cli switch
|
You can force dotdrop to use a different file either by using the `-c --cfg` cli switch
|
||||||
or by defining the `DOTDROP_CONFIG` environment variable.
|
or by defining the `DOTDROP_CONFIG` environment variable.
|
||||||
|
|
||||||
# Format
|
## Format
|
||||||
|
|
||||||
Dotdrop config file uses [yaml](https://yaml.org/) syntax.
|
Dotdrop config file uses [yaml](https://yaml.org/) syntax.
|
||||||
|
|
||||||
@@ -209,23 +188,23 @@ dynvariables:
|
|||||||
<variable-name>: <shell-oneliner>
|
<variable-name>: <shell-oneliner>
|
||||||
```
|
```
|
||||||
|
|
||||||
# Actions
|
## Actions
|
||||||
|
|
||||||
see [Actions](usage-actions.md)
|
see [Actions](usage-actions.md)
|
||||||
|
|
||||||
# Transformations
|
## Transformations
|
||||||
|
|
||||||
see [Transformations](usage-transformations.md)
|
see [Transformations](usage-transformations.md)
|
||||||
|
|
||||||
# Variables
|
## Variables
|
||||||
|
|
||||||
see [Variables](config-variables.md)
|
see [Variables](config-variables.md)
|
||||||
|
|
||||||
# Interpreted variables
|
## Interpreted variables
|
||||||
|
|
||||||
see [Interpreted variables](config-variables.md)
|
see [Interpreted variables](config-variables.md)
|
||||||
|
|
||||||
# Symlinking dotfiles
|
## Symlinking dotfiles
|
||||||
|
|
||||||
Dotdrop is able to install dotfiles in three different ways
|
Dotdrop is able to install dotfiles in three different ways
|
||||||
which are controlled by the `link` attribute of each dotfile:
|
which are controlled by the `link` attribute of each dotfile:
|
||||||
@@ -236,7 +215,7 @@ which are controlled by the `link` attribute of each dotfile:
|
|||||||
|
|
||||||
For more see [this how-to](../howto/symlinked-dotfiles.md)
|
For more see [this how-to](../howto/symlinked-dotfiles.md)
|
||||||
|
|
||||||
# All dotfiles for a profile
|
## All dotfiles for a profile
|
||||||
|
|
||||||
To use all defined dotfiles for a profile, simply use
|
To use all defined dotfiles for a profile, simply use
|
||||||
the keyword `ALL`.
|
the keyword `ALL`.
|
||||||
@@ -259,7 +238,7 @@ profiles:
|
|||||||
- f_vimrc
|
- f_vimrc
|
||||||
```
|
```
|
||||||
|
|
||||||
# Include dotfiles from another profile
|
## Include dotfiles from another profile
|
||||||
|
|
||||||
If one profile is using the entire set of another profile, one can use
|
If one profile is using the entire set of another profile, one can use
|
||||||
the `include` entry to avoid redundancy.
|
the `include` entry to avoid redundancy.
|
||||||
@@ -306,7 +285,7 @@ profiles:
|
|||||||
- "profile_{{@@ var1 @@}}"
|
- "profile_{{@@ var1 @@}}"
|
||||||
```
|
```
|
||||||
|
|
||||||
# Import profile dotfiles from file
|
## Import profile dotfiles from file
|
||||||
|
|
||||||
Profile's dotfiles list can be loaded from external files
|
Profile's dotfiles list can be loaded from external files
|
||||||
by specifying their paths in the config entry `import` under the specific profile.
|
by specifying their paths in the config entry `import` under the specific profile.
|
||||||
@@ -346,7 +325,7 @@ import:
|
|||||||
- profiles.d/{{@@ profile @@}}.yaml
|
- profiles.d/{{@@ profile @@}}.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
# Import variables from file
|
## Import variables from file
|
||||||
|
|
||||||
It is possible to load variables/dynvariables from external files by providing their
|
It is possible to load variables/dynvariables from external files by providing their
|
||||||
paths in the config entry `import_variables`.
|
paths in the config entry `import_variables`.
|
||||||
@@ -378,7 +357,7 @@ import_variables:
|
|||||||
- variables.d/myvars.yaml:optional
|
- variables.d/myvars.yaml:optional
|
||||||
```
|
```
|
||||||
|
|
||||||
# Import actions from file
|
## Import actions from file
|
||||||
|
|
||||||
It is possible to load actions from external files by providing their
|
It is possible to load actions from external files by providing their
|
||||||
paths in the config entry `import_actions`.
|
paths in the config entry `import_actions`.
|
||||||
@@ -417,7 +396,7 @@ import_actions:
|
|||||||
- actions.d/myactions.yaml:optional
|
- actions.d/myactions.yaml:optional
|
||||||
```
|
```
|
||||||
|
|
||||||
# Import config files
|
## Import config files
|
||||||
|
|
||||||
Entire config files can be imported. This means making the following available
|
Entire config files can be imported. This means making the following available
|
||||||
from the imported config file in the original config file:
|
from the imported config file in the original config file:
|
||||||
@@ -495,7 +474,7 @@ import_configs:
|
|||||||
- other-config.yaml:optional
|
- other-config.yaml:optional
|
||||||
```
|
```
|
||||||
|
|
||||||
# Dynamic dotfile paths
|
## Dynamic dotfile paths
|
||||||
|
|
||||||
Dotfile source (`src`) and destination (`dst`) can be dynamically constructed using
|
Dotfile source (`src`) and destination (`dst`) can be dynamically constructed using
|
||||||
defined variables ([variables and dynvariables](config-variables.md)).
|
defined variables ([variables and dynvariables](config-variables.md)).
|
||||||
@@ -517,7 +496,7 @@ profiles:
|
|||||||
|
|
||||||
Make sure to quote the path in the config file.
|
Make sure to quote the path in the config file.
|
||||||
|
|
||||||
# Dynamic actions
|
## Dynamic actions
|
||||||
|
|
||||||
Variables ([config variables and dynvariables](config-variables.md)
|
Variables ([config variables and dynvariables](config-variables.md)
|
||||||
and [template variables](../template/templating.md#template-variables)) can be used
|
and [template variables](../template/templating.md#template-variables)) can be used
|
||||||
@@ -550,7 +529,7 @@ config:
|
|||||||
|
|
||||||
Make sure to quote the actions using variables.
|
Make sure to quote the actions using variables.
|
||||||
|
|
||||||
# Dynamic transformations
|
## Dynamic transformations
|
||||||
|
|
||||||
As for [dynamic actions](#dynamic-actions), transformations support
|
As for [dynamic actions](#dynamic-actions), transformations support
|
||||||
the use of variables ([variables and dynvariables](config-variables.md)
|
the use of variables ([variables and dynvariables](config-variables.md)
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
* [ignore patterns](#ignore-patterns)
|
# Ignore patterns
|
||||||
* [examples](#examples)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# ignore patterns
|
|
||||||
|
|
||||||
It is possible to ignore specific patterns when using dotdrop. For example for `compare` when temporary
|
It is possible to ignore specific patterns when using dotdrop. For example for `compare` when temporary
|
||||||
files don't need to appear in the output.
|
files don't need to appear in the output.
|
||||||
@@ -41,7 +36,7 @@ dotfiles:
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
# examples
|
## examples
|
||||||
|
|
||||||
To completely ignore comparison of a specific dotfile:
|
To completely ignore comparison of a specific dotfile:
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
37
docs/howto/README.md
Normal file
37
docs/howto/README.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# HowTo
|
||||||
|
|
||||||
|
## Append to a dotfile
|
||||||
|
|
||||||
|
[Append to a dotfile](howto/append.md)
|
||||||
|
|
||||||
|
## Create special files
|
||||||
|
|
||||||
|
[Create special files](howto/create-special-files.md)
|
||||||
|
|
||||||
|
## Handle special chars
|
||||||
|
|
||||||
|
[Handle special chars](howto/special-chars.md)
|
||||||
|
|
||||||
|
## Improve git integration
|
||||||
|
|
||||||
|
[Improve git integration](improve-git-integration.md)
|
||||||
|
|
||||||
|
## Merge files on install
|
||||||
|
|
||||||
|
[Merge files on install](howto/merge-files-when-installing.md)
|
||||||
|
|
||||||
|
## Share content across dotfiles
|
||||||
|
|
||||||
|
[Share content across dotfiles](howto/sharing-content.md)
|
||||||
|
|
||||||
|
## Store compressed directories
|
||||||
|
|
||||||
|
[Store compressed directories](howto/store-compressed-directories.md)
|
||||||
|
|
||||||
|
## Store secrets
|
||||||
|
|
||||||
|
[Store secrets](howto/sensitive-dotfiles.md)
|
||||||
|
|
||||||
|
## Symlink dotfiles
|
||||||
|
|
||||||
|
[Symlink dotfiles](howto/symlinked-dotfiles.md)
|
||||||
14
docs/howto/improve-git-integration.md
Normal file
14
docs/howto/improve-git-integration.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Improve git integration
|
||||||
|
|
||||||
|
The below aliases can help with the process of updating your dotfiles between multiple hosts. Add those to your `~/.zshrc` or `~/.bashrc`. You can then simply run `dotsync` to push or pull from your dotfile repository.
|
||||||
|
|
||||||
|
```
|
||||||
|
# Your dotdrop git repository location
|
||||||
|
export DOTREPO="/path/to/your/dotdrop/repo"
|
||||||
|
|
||||||
|
alias dotdrop="$DOTREPO/dotdrop.sh"
|
||||||
|
alias dotgit="git -C $DOTREPO"
|
||||||
|
alias dotsync="dotgit pull && dotgit add -A && dotgit commit && dotgit push; dotdrop install"
|
||||||
|
```
|
||||||
|
|
||||||
|
Provided by [ReekyMarko](https://github.com/ReekyMarko)
|
||||||
@@ -1 +0,0 @@
|
|||||||
**TODO**
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# Welcome to the dotdrop wiki!
|
|
||||||
|
|
||||||
The idea of dotdrop is to have the ability to store each dotfile only once and deploy them with a different content on different hosts/setups. To achieve this, it uses [jinja2](http://jinja.pocoo.org/) which is a templating engine that allows to specify, during the dotfile installation with dotdrop, based on a selected profile, how (with what content) each dotfile will be installed.
|
|
||||||
|
|
||||||
Most information on using dotdrop are described in this wiki and in the [readme](https://github.com/deadc0de6/dotdrop/blob/master/README.md). For more check
|
|
||||||
|
|
||||||
* [a quick overview of dotdrop features](https://deadc0de.re/dotdrop/)
|
|
||||||
* [the blogpost on dotdrop](https://deadc0de.re/articles/dotfiles.html)
|
|
||||||
* [an example](https://github.com/deadc0de6/dotdrop#getting-started)
|
|
||||||
* [how people are using dotdrop](meta/people-using-dotdrop.md)
|
|
||||||
|
|
||||||
For more examples of config file, [search github](https://github.com/search?q=filename%3Aconfig.yaml+dotdrop&type=Code).
|
|
||||||
|
|
||||||
# Wiki pages
|
|
||||||
|
|
||||||
* [Installation](installation.md)
|
|
||||||
* [Usage](usage.md)
|
|
||||||
* [Config file format](config/config.md)
|
|
||||||
* [Use actions](config/usage-actions.md)
|
|
||||||
* [Use transformations](config/usage-transformations.md)
|
|
||||||
* [Manage system/global config files](howto/global-config-files.md)
|
|
||||||
* [Ignore patterns](config/ignore-pattern.md)
|
|
||||||
* [Templating](template/templating.md)
|
|
||||||
* HowTo
|
|
||||||
* [Store secrets](howto/sensitive-dotfiles.md)
|
|
||||||
* [Symlink dotfiles](howto/symlinked-dotfiles.md)
|
|
||||||
* [Store compressed directories](howto/store-compressed-directories.md)
|
|
||||||
* [Merge files when installing](howto/merge-files-when-installing.md)
|
|
||||||
* [Append to a dotfile](howto/append.md)
|
|
||||||
* [Handle special chars](howto/special-chars.md)
|
|
||||||
* [Share content across dotfiles](howto/sharing-content.md)
|
|
||||||
* [Create special files](howto/create-special-files.md)
|
|
||||||
@@ -7,20 +7,7 @@ If you want to keep your python environment clean, use the virtualenv installati
|
|||||||
[With pypi in a virtualenv](#with-pypi-in-a-virtualenv)).
|
[With pypi in a virtualenv](#with-pypi-in-a-virtualenv)).
|
||||||
In that case, the virtualenv environment might need to be loaded before any attempt to use dotdrop.
|
In that case, the virtualenv environment might need to be loaded before any attempt to use dotdrop.
|
||||||
|
|
||||||
Installation instructions
|
## As a submodule
|
||||||
|
|
||||||
* Installation
|
|
||||||
* [Install as a submodule](#as-a-submodule)
|
|
||||||
* [Install as a submodule in a virtualenv](#as-a-submodule-in-a-virtualenv)
|
|
||||||
* [Install with pypi](#with-pypi)
|
|
||||||
* [Install with pypi in a virtualenv](#with-pypi-in-a-virtualenv)
|
|
||||||
* [Aur packages](#aur-packages)
|
|
||||||
* [Snap package](#snap-package)
|
|
||||||
* [Setup your repository](#setup-your-repository)
|
|
||||||
* [Shell completion](#shell-completion)
|
|
||||||
* [Dependencies](meta/dependencies.md)
|
|
||||||
|
|
||||||
# As a submodule
|
|
||||||
|
|
||||||
The following will create a git repository for your dotfiles and
|
The following will create a git repository for your dotfiles and
|
||||||
keep dotdrop as a submodule:
|
keep dotdrop as a submodule:
|
||||||
@@ -51,7 +38,7 @@ shell with the config file path, for example
|
|||||||
alias dotdrop=<absolute-path-to-dotdrop.sh> --cfg=<path-to-your-config.yaml>'
|
alias dotdrop=<absolute-path-to-dotdrop.sh> --cfg=<path-to-your-config.yaml>'
|
||||||
```
|
```
|
||||||
|
|
||||||
# As a submodule in a virtualenv
|
## As a submodule in a virtualenv
|
||||||
|
|
||||||
To install in a [virtualenv](https://virtualenv.pypa.io):
|
To install in a [virtualenv](https://virtualenv.pypa.io):
|
||||||
```bash
|
```bash
|
||||||
@@ -79,7 +66,7 @@ $ ./dotdrop.sh --help
|
|||||||
|
|
||||||
Then follow the instructions under [As a submodule](#as-a-submodule).
|
Then follow the instructions under [As a submodule](#as-a-submodule).
|
||||||
|
|
||||||
# With pypi
|
## With pypi
|
||||||
|
|
||||||
Install dotdrop
|
Install dotdrop
|
||||||
```bash
|
```bash
|
||||||
@@ -88,7 +75,7 @@ $ pip3 install --user dotdrop
|
|||||||
|
|
||||||
and then [setup your repository](#setup-your-repository).
|
and then [setup your repository](#setup-your-repository).
|
||||||
|
|
||||||
# With pypi in a virtualenv
|
## With pypi in a virtualenv
|
||||||
|
|
||||||
Install dotdrop in a virtualenv from pypi
|
Install dotdrop in a virtualenv from pypi
|
||||||
```bash
|
```bash
|
||||||
@@ -106,7 +93,7 @@ $ dotdrop --help
|
|||||||
|
|
||||||
Then follow the instructions under [With pypi](#with-pypi).
|
Then follow the instructions under [With pypi](#with-pypi).
|
||||||
|
|
||||||
# Aur packages
|
## Aur packages
|
||||||
|
|
||||||
Dotdrop is available on aur:
|
Dotdrop is available on aur:
|
||||||
* stable: https://aur.archlinux.org/packages/dotdrop/
|
* stable: https://aur.archlinux.org/packages/dotdrop/
|
||||||
@@ -114,7 +101,7 @@ Dotdrop is available on aur:
|
|||||||
|
|
||||||
Then follow the [doc to setup your repository](#setup-your-repository).
|
Then follow the [doc to setup your repository](#setup-your-repository).
|
||||||
|
|
||||||
# Snap package
|
## Snap package
|
||||||
|
|
||||||
Dotdrop is available as a snap package: <https://snapcraft.io/dotdrop>
|
Dotdrop is available as a snap package: <https://snapcraft.io/dotdrop>
|
||||||
|
|
||||||
@@ -125,7 +112,45 @@ snap install dotdrop
|
|||||||
|
|
||||||
Then follow the [doc to setup your repository](#setup-your-repository).
|
Then follow the [doc to setup your repository](#setup-your-repository).
|
||||||
|
|
||||||
# Setup your repository
|
## Dependencies
|
||||||
|
|
||||||
|
Beside the python dependencies defined in [requirements.txt](https://github.com/deadc0de6/dotdrop/blob/master/requirements.txt),
|
||||||
|
dotdrop depends on following tools:
|
||||||
|
|
||||||
|
* `file`
|
||||||
|
* `diff`
|
||||||
|
* `mkdir`
|
||||||
|
* `git` (for the entry point script [dotdrop.sh](https://github.com/deadc0de6/dotdrop/blob/master/dotdrop.sh))
|
||||||
|
* `readlink` or `realpath` (for the entry point script [dotdrop.sh](https://github.com/deadc0de6/dotdrop/blob/master/dotdrop.sh))
|
||||||
|
|
||||||
|
For MacOS users, make sure to install `realpath` (part of `coreutils`) through [homebrew](https://brew.sh/).
|
||||||
|
|
||||||
|
## Update dotdrop
|
||||||
|
|
||||||
|
If using dotdrop as a submodule, one can control if dotdrop
|
||||||
|
is auto-updated through the [dotdrop.sh](https://github.com/deadc0de6/dotdrop/blob/master/dotdrop.sh)
|
||||||
|
script by defining the environment variable `DOTDROP_AUTOUPDATE=yes`.
|
||||||
|
If undefined, `DOTDROP_AUTOUPDATE` will take the value `yes`.
|
||||||
|
|
||||||
|
If used as a submodule, update it with
|
||||||
|
```bash
|
||||||
|
$ git submodule update --init --recursive
|
||||||
|
$ git submodule update --remote dotdrop
|
||||||
|
```
|
||||||
|
|
||||||
|
You will then need to commit the changes with
|
||||||
|
```bash
|
||||||
|
$ git add dotdrop
|
||||||
|
$ git commit -m 'update dotdrop'
|
||||||
|
$ git push
|
||||||
|
```
|
||||||
|
|
||||||
|
Or if installed through pypi:
|
||||||
|
```bash
|
||||||
|
$ pip3 install --user dotdrop --upgrade
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup your repository
|
||||||
|
|
||||||
Either create a repository on your prefered platform and clone it or create one locally.
|
Either create a repository on your prefered platform and clone it or create one locally.
|
||||||
This repository will contain two main elements, dotdrop's config file (`config.yaml`)
|
This repository will contain two main elements, dotdrop's config file (`config.yaml`)
|
||||||
@@ -167,7 +192,8 @@ For more info on the config file format, see [the config doc](https://github.com
|
|||||||
|
|
||||||
Finally start using dotdrop with `dotdrop --help`. See the [usage doc](https://github.com/deadc0de6/dotdrop/wiki/usage) and [the example](https://github.com/deadc0de6/dotdrop/blob/master/README.md#getting-started).
|
Finally start using dotdrop with `dotdrop --help`. See the [usage doc](https://github.com/deadc0de6/dotdrop/wiki/usage) and [the example](https://github.com/deadc0de6/dotdrop/blob/master/README.md#getting-started).
|
||||||
|
|
||||||
# Shell completion
|
## Shell completion
|
||||||
|
|
||||||
Completion scripts exist for `bash`, `zsh` and `fish`,
|
Completion scripts exist for `bash`, `zsh` and `fish`,
|
||||||
see [the related doc](https://github.com/deadc0de6/dotdrop/blob/master/completion/README.md).
|
see [the related doc](https://github.com/deadc0de6/dotdrop/blob/master/completion/README.md).
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
Beside the python dependencies defined in [requirements.txt](https://github.com/deadc0de6/dotdrop/blob/master/requirements.txt), dotdrop depends on following tools:
|
|
||||||
* `file`
|
|
||||||
* `diff`
|
|
||||||
* `mkdir`
|
|
||||||
* `git` (for the entry point script [dotdrop.sh](https://github.com/deadc0de6/dotdrop/blob/master/dotdrop.sh))
|
|
||||||
* `readlink` or `realpath` (for the entry point script [dotdrop.sh](https://github.com/deadc0de6/dotdrop/blob/master/dotdrop.sh))
|
|
||||||
|
|
||||||
For MacOS users, make sure to install `realpath` (part of `coreutils`) through [homebrew](https://brew.sh/).
|
|
||||||
36
docs/template/templating.md
vendored
36
docs/template/templating.md
vendored
@@ -4,21 +4,7 @@ Dotdrop leverage the power of [jinja2](http://jinja.pocoo.org/) to handle the
|
|||||||
templating of dotfiles. See [jinja2 template doc](http://jinja.pocoo.org/docs/2.9/templates/)
|
templating of dotfiles. See [jinja2 template doc](http://jinja.pocoo.org/docs/2.9/templates/)
|
||||||
or the below sections for more information on how to template your dotfiles.
|
or the below sections for more information on how to template your dotfiles.
|
||||||
|
|
||||||
* [Delimiters](#delimiters)
|
## Delimiters
|
||||||
* [Template variables](#template-variables)
|
|
||||||
* [Dotfile variables](#dotfile-variables)
|
|
||||||
* [Environment variables](#environment-variables)
|
|
||||||
* [Dotdrop header](#dotdrop-header)
|
|
||||||
* [Available methods](#available-methods)
|
|
||||||
* [Available filters](#available-filters)
|
|
||||||
* [Import macros](#import-macros)
|
|
||||||
* [Ignore empty template](#ignore-empty-template)
|
|
||||||
* [Include file or template in template](#include-file-or-template-in-template)
|
|
||||||
* [Debug templates](#debug-templates)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Delimiters
|
|
||||||
|
|
||||||
Dotdrop uses different delimiters than
|
Dotdrop uses different delimiters than
|
||||||
[jinja2](http://jinja.pocoo.org/)'s defaults:
|
[jinja2](http://jinja.pocoo.org/)'s defaults:
|
||||||
@@ -32,7 +18,7 @@ Dotdrop uses different delimiters than
|
|||||||
|
|
||||||
More info in [jinja2 templating doc](https://jinja.palletsprojects.com/en/2.11.x/templates/?highlight=delimiter)
|
More info in [jinja2 templating doc](https://jinja.palletsprojects.com/en/2.11.x/templates/?highlight=delimiter)
|
||||||
|
|
||||||
# Template variables
|
## Template variables
|
||||||
|
|
||||||
Following variables are available in templates:
|
Following variables are available in templates:
|
||||||
|
|
||||||
@@ -46,7 +32,7 @@ Following variables are available in templates:
|
|||||||
* config variables (see [Variables](../config/config-variables.md)).
|
* config variables (see [Variables](../config/config-variables.md)).
|
||||||
* config interpreted variables (see [Interpreted variables](../config/config-variables.md)).
|
* config interpreted variables (see [Interpreted variables](../config/config-variables.md)).
|
||||||
|
|
||||||
# Dotfile variables
|
## Dotfile variables
|
||||||
|
|
||||||
When a dotfile is handled by dotdrop, the following variables are added:
|
When a dotfile is handled by dotdrop, the following variables are added:
|
||||||
|
|
||||||
@@ -65,7 +51,7 @@ For example a directory dotfile (like `~/.ssh`) would process several files
|
|||||||
* `_dotfile_abs_dst` would be `/home/user/.ssh`
|
* `_dotfile_abs_dst` would be `/home/user/.ssh`
|
||||||
* `_dotfile_sub_abs_dst` would be `/home/user/.ssh/config`
|
* `_dotfile_sub_abs_dst` would be `/home/user/.ssh/config`
|
||||||
|
|
||||||
# Environment variables
|
## Environment variables
|
||||||
|
|
||||||
It's possible to access environment variables inside the templates.
|
It's possible to access environment variables inside the templates.
|
||||||
```
|
```
|
||||||
@@ -97,7 +83,7 @@ alias dotdrop='eval $(grep -v "^#" ~/dotfiles/.env) /usr/bin/dotdrop --cfg=~/dot
|
|||||||
The above aliases load all the variables from `~/dotfiles/.env`
|
The above aliases load all the variables from `~/dotfiles/.env`
|
||||||
(while omitting lines starting with `#`) before calling dotdrop.
|
(while omitting lines starting with `#`) before calling dotdrop.
|
||||||
|
|
||||||
# Dotdrop header
|
## Dotdrop header
|
||||||
|
|
||||||
Dotdrop is able to insert a header in the generated dotfiles. This allows
|
Dotdrop is able to insert a header in the generated dotfiles. This allows
|
||||||
to remind anyone opening the file for editing that this file is managed by dotdrop.
|
to remind anyone opening the file for editing that this file is managed by dotdrop.
|
||||||
@@ -118,7 +104,7 @@ Either prepend the directive with the commenting char(s) used in the dotfile
|
|||||||
(for example `# {{@@ header() @@}}`) or provide it as an argument `{{@@ header('# ') @@}}`.
|
(for example `# {{@@ header() @@}}`) or provide it as an argument `{{@@ header('# ') @@}}`.
|
||||||
The result is equivalent.
|
The result is equivalent.
|
||||||
|
|
||||||
# Available methods
|
## Available methods
|
||||||
|
|
||||||
Beside [jinja2 global functions](http://jinja.pocoo.org/docs/2.10/templates/#list-of-global-functions)
|
Beside [jinja2 global functions](http://jinja.pocoo.org/docs/2.10/templates/#list-of-global-functions)
|
||||||
the following methods can be used within the templates:
|
the following methods can be used within the templates:
|
||||||
@@ -173,7 +159,7 @@ this should exist
|
|||||||
{%@@ endif @@%}
|
{%@@ endif @@%}
|
||||||
```
|
```
|
||||||
|
|
||||||
# Available filters
|
## Available filters
|
||||||
|
|
||||||
Beside [jinja2 builtin filters](https://jinja.palletsprojects.com/en/2.10.x/templates/#builtin-filters)
|
Beside [jinja2 builtin filters](https://jinja.palletsprojects.com/en/2.10.x/templates/#builtin-filters)
|
||||||
custom user-defined filter functions can be loaded using the config entry `filter_file`:
|
custom user-defined filter functions can be loaded using the config entry `filter_file`:
|
||||||
@@ -200,7 +186,7 @@ dotfile content
|
|||||||
For more information on how to create filters,
|
For more information on how to create filters,
|
||||||
see [jinja2 official doc](https://jinja.palletsprojects.com/en/2.10.x/api/#writing-filters).
|
see [jinja2 official doc](https://jinja.palletsprojects.com/en/2.10.x/api/#writing-filters).
|
||||||
|
|
||||||
# Import macros
|
## Import macros
|
||||||
|
|
||||||
Macros must be imported `with context` in order to have access to the variables:
|
Macros must be imported `with context` in order to have access to the variables:
|
||||||
```
|
```
|
||||||
@@ -209,7 +195,7 @@ Macros must be imported `with context` in order to have access to the variables:
|
|||||||
|
|
||||||
For more see the [dedicated jinja2 doc](https://jinja.palletsprojects.com/en/2.11.x/templates/#macros).
|
For more see the [dedicated jinja2 doc](https://jinja.palletsprojects.com/en/2.11.x/templates/#macros).
|
||||||
|
|
||||||
# Ignore empty template
|
## Ignore empty template
|
||||||
|
|
||||||
It is possible to avoid having an empty rendered template being
|
It is possible to avoid having an empty rendered template being
|
||||||
deployed by setting the `ignoreempty` entry to *true*. This can be set
|
deployed by setting the `ignoreempty` entry to *true*. This can be set
|
||||||
@@ -217,7 +203,7 @@ globally for all dotfiles or only for specific dotfiles.
|
|||||||
|
|
||||||
For more see the [Config](../config/config.md).
|
For more see the [Config](../config/config.md).
|
||||||
|
|
||||||
# Include file or template in template
|
## Include file or template in template
|
||||||
|
|
||||||
[Jinja2](http://jinja.pocoo.org/docs/2.10/templates/) provides the ability to include an external file/template from within a template with the directive `include`. See the [related doc](http://jinja.pocoo.org/docs/2.10/templates/#include) for more. The path must be relative to the `dotpath`.
|
[Jinja2](http://jinja.pocoo.org/docs/2.10/templates/) provides the ability to include an external file/template from within a template with the directive `include`. See the [related doc](http://jinja.pocoo.org/docs/2.10/templates/#include) for more. The path must be relative to the `dotpath`.
|
||||||
|
|
||||||
@@ -232,7 +218,7 @@ For example:
|
|||||||
{%@@ include colors_path + '/black.colors' @@%}
|
{%@@ include colors_path + '/black.colors' @@%}
|
||||||
```
|
```
|
||||||
|
|
||||||
# Debug templates
|
## Debug templates
|
||||||
|
|
||||||
To debug the result of a template, one can install the dotfiles to a temporary
|
To debug the result of a template, one can install the dotfiles to a temporary
|
||||||
directory with the `install` command and the `-t` switch:
|
directory with the `install` command and the `-t` switch:
|
||||||
|
|||||||
@@ -2,38 +2,22 @@
|
|||||||
|
|
||||||
Run `dotdrop --help` to see all available options.
|
Run `dotdrop --help` to see all available options.
|
||||||
|
|
||||||
* [Basic use](#basic-use)
|
## Basic usage
|
||||||
* Commands:
|
|
||||||
* [Install dotfiles](#install-dotfiles)
|
|
||||||
* [Compare dotfiles](#compare-dotfiles)
|
|
||||||
* [Import dotfiles](#import-dotfiles)
|
|
||||||
* [List profiles](#list-profiles)
|
|
||||||
* [List dotfiles](#list-dotfiles)
|
|
||||||
* [Update dotfiles](#update-dotfiles)
|
|
||||||
* [Remove dotfiles](#remove-dotfiles)
|
|
||||||
* Uses
|
|
||||||
* [Use actions](config/usage-actions.md)
|
|
||||||
* [Use transformations](config/usage-transformations.md)
|
|
||||||
* [Update dotdrop](#update-dotdrop)
|
|
||||||
* [Environment variables](#environment-variables)
|
|
||||||
* [User tricks](#user-tricks)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Basic use
|
|
||||||
|
|
||||||
The basic use of dotdrop is
|
The basic use of dotdrop is
|
||||||
|
|
||||||
* import a file/directory to manage (this will copy the files from the filesystem to your `dotpath`): `dotdrop import <somefile>`
|
* import a file/directory to manage (this will copy the files from the filesystem to your `dotpath`): `dotdrop import <somefile>`
|
||||||
* install the dotfiles (will *copy/link* those from your `dotpath` to the filesystem): `dotdrop install`
|
* install the dotfiles (will *copy/link* those from your `dotpath` to the filesystem): `dotdrop install`
|
||||||
|
|
||||||
Then if you happen to update the file/directory directly on the filesystem (add new file/dir, edit content, etc) you can use `update` to mirror back those changes in the `dotpath` of dotdrop.
|
Then if you happen to update the file/directory directly on the filesystem (add new file/dir, edit content, etc) you can use `update` to mirror back those changes in the `dotpath` of dotdrop.
|
||||||
|
|
||||||
For more advanced uses:
|
For more advanced uses:
|
||||||
|
|
||||||
* See [this wiki](https://github.com/deadc0de6/dotdrop/wiki)
|
* See [this wiki](https://github.com/deadc0de6/dotdrop/wiki)
|
||||||
* `dotdrop --help` for more options.
|
* `dotdrop --help` for more options.
|
||||||
* [the example](https://github.com/deadc0de6/dotdrop#getting-started)
|
* [the example](https://github.com/deadc0de6/dotdrop#getting-started)
|
||||||
|
|
||||||
# Install dotfiles
|
## Install dotfiles
|
||||||
|
|
||||||
Simply run
|
Simply run
|
||||||
```bash
|
```bash
|
||||||
@@ -49,7 +33,7 @@ For more detail, see the usage with `dotdrop --help`
|
|||||||
|
|
||||||
To ignore specific pattern during installation see [the dedicated wiki page](config/ignore-pattern.md)
|
To ignore specific pattern during installation see [the dedicated wiki page](config/ignore-pattern.md)
|
||||||
|
|
||||||
# Compare dotfiles
|
## Compare dotfiles
|
||||||
|
|
||||||
Compare local dotfiles with the ones stored in dotdrop:
|
Compare local dotfiles with the ones stored in dotdrop:
|
||||||
```bash
|
```bash
|
||||||
@@ -66,7 +50,7 @@ It is also possible to install all dotfiles for a specific profile
|
|||||||
in a temporary directory in order to manually compare them with
|
in a temporary directory in order to manually compare them with
|
||||||
the local version by using `install` and the `-t` switch.
|
the local version by using `install` and the `-t` switch.
|
||||||
|
|
||||||
# Import dotfiles
|
## Import dotfiles
|
||||||
|
|
||||||
Dotdrop allows to import dotfiles directly from the
|
Dotdrop allows to import dotfiles directly from the
|
||||||
filesystem. It will copy the dotfile and update the
|
filesystem. It will copy the dotfile and update the
|
||||||
@@ -106,7 +90,7 @@ dotfiles management.
|
|||||||
$ dotdrop import ~/.zshrc --as=~/.zshrc.test
|
$ dotdrop import ~/.zshrc --as=~/.zshrc.test
|
||||||
```
|
```
|
||||||
|
|
||||||
# List profiles
|
## List profiles
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ dotdrop profiles
|
$ dotdrop profiles
|
||||||
@@ -119,7 +103,7 @@ else than the default (the hostname).
|
|||||||
The default profile can also be changed by defining the
|
The default profile can also be changed by defining the
|
||||||
`DOTDROP_PROFILE` environment variable.
|
`DOTDROP_PROFILE` environment variable.
|
||||||
|
|
||||||
# List dotfiles
|
## List dotfiles
|
||||||
|
|
||||||
The following command lists the different dotfiles
|
The following command lists the different dotfiles
|
||||||
configured for a specific profile:
|
configured for a specific profile:
|
||||||
@@ -155,7 +139,7 @@ This is especially useful when the dotfile entry is a directory
|
|||||||
and one wants to have information on the different files (is it
|
and one wants to have information on the different files (is it
|
||||||
a templated file, etc).
|
a templated file, etc).
|
||||||
|
|
||||||
# Update dotfiles
|
## Update dotfiles
|
||||||
|
|
||||||
Dotfiles managed by dotdrop can be updated using the `update` command. When updating, only
|
Dotfiles managed by dotdrop can be updated using the `update` command. When updating, only
|
||||||
dotfiles that have differences with the stored version are updated.
|
dotfiles that have differences with the stored version are updated.
|
||||||
@@ -180,7 +164,7 @@ see [the dedicated wiki page](config/ignore-pattern.md)
|
|||||||
|
|
||||||
There are two cases when updating a dotfile:
|
There are two cases when updating a dotfile:
|
||||||
|
|
||||||
## The dotfile doesn't use [templating](template/templating.md)
|
### The dotfile doesn't use [templating](template/templating.md)
|
||||||
|
|
||||||
The new version of the dotfile is copied to the *dotpath* directory and overwrites
|
The new version of the dotfile is copied to the *dotpath* directory and overwrites
|
||||||
the old version. If git is used to version the dotfiles stored by dotdrop, the git command
|
the old version. If git is used to version the dotfiles stored by dotdrop, the git command
|
||||||
@@ -191,7 +175,7 @@ $ dotdrop update ~/.vimrc
|
|||||||
$ git diff
|
$ git diff
|
||||||
```
|
```
|
||||||
|
|
||||||
## The dotfile uses [templating](template/templating.md)
|
### The dotfile uses [templating](template/templating.md)
|
||||||
|
|
||||||
The dotfile must be manually updated, three solutions can be used to identify the
|
The dotfile must be manually updated, three solutions can be used to identify the
|
||||||
changes to apply to the template:
|
changes to apply to the template:
|
||||||
@@ -227,7 +211,7 @@ in the command line. For example for a dotfile having a key `f_zshrc` in the con
|
|||||||
$ dotdrop install -t f_zshrc
|
$ dotdrop install -t f_zshrc
|
||||||
```
|
```
|
||||||
|
|
||||||
# Remove dotfiles
|
## Remove dotfiles
|
||||||
|
|
||||||
The command `remove` allows to stop managing a specific dotfile with
|
The command `remove` allows to stop managing a specific dotfile with
|
||||||
dotdrop. It will:
|
dotdrop. It will:
|
||||||
@@ -235,32 +219,7 @@ dotdrop. It will:
|
|||||||
* remove the entry in the config file (under `dotfiles` and `profile`)
|
* remove the entry in the config file (under `dotfiles` and `profile`)
|
||||||
* remove the file from the `dotpath`
|
* remove the file from the `dotpath`
|
||||||
|
|
||||||
# Update dotdrop
|
## Environment variables
|
||||||
|
|
||||||
If using dotdrop as a submodule, one can control if dotdrop
|
|
||||||
is auto-updated through the [dotdrop.sh](https://github.com/deadc0de6/dotdrop/blob/master/dotdrop.sh)
|
|
||||||
script by defining the environment variable `DOTDROP_AUTOUPDATE=yes`.
|
|
||||||
If undefined, `DOTDROP_AUTOUPDATE` will take the value `yes`.
|
|
||||||
|
|
||||||
If used as a submodule, update it with
|
|
||||||
```bash
|
|
||||||
$ git submodule update --init --recursive
|
|
||||||
$ git submodule update --remote dotdrop
|
|
||||||
```
|
|
||||||
|
|
||||||
You will then need to commit the changes with
|
|
||||||
```bash
|
|
||||||
$ git add dotdrop
|
|
||||||
$ git commit -m 'update dotdrop'
|
|
||||||
$ git push
|
|
||||||
```
|
|
||||||
|
|
||||||
Or if installed through pypi:
|
|
||||||
```bash
|
|
||||||
$ pip3 install --user dotdrop --upgrade
|
|
||||||
```
|
|
||||||
|
|
||||||
# Environment variables
|
|
||||||
|
|
||||||
Following environment variables can be used to specify different CLI options.
|
Following environment variables can be used to specify different CLI options.
|
||||||
Note that CLI switches take precedence over environment variables (except for `DOTDROP_FORCE_NODEBUG`)
|
Note that CLI switches take precedence over environment variables (except for `DOTDROP_FORCE_NODEBUG`)
|
||||||
@@ -285,20 +244,3 @@ export DOTDROP_DEBUG=
|
|||||||
```bash
|
```bash
|
||||||
export DOTDROP_FORCE_NODEBUG=
|
export DOTDROP_FORCE_NODEBUG=
|
||||||
```
|
```
|
||||||
|
|
||||||
# User tricks
|
|
||||||
|
|
||||||
## Improve git integration
|
|
||||||
|
|
||||||
The below aliases can help with the process of updating your dotfiles between multiple hosts. Add those to your `~/.zshrc` or `~/.bashrc`. You can then simply run `dotsync` to push or pull from your dotfile repository.
|
|
||||||
|
|
||||||
```
|
|
||||||
# Your dotdrop git repository location
|
|
||||||
export DOTREPO="/path/to/your/dotdrop/repo"
|
|
||||||
|
|
||||||
alias dotdrop="$DOTREPO/dotdrop.sh"
|
|
||||||
alias dotgit="git -C $DOTREPO"
|
|
||||||
alias dotsync="dotgit pull && dotgit add -A && dotgit commit && dotgit push; dotdrop install"
|
|
||||||
```
|
|
||||||
|
|
||||||
Provided by [ReekyMarko](https://github.com/ReekyMarko)
|
|
||||||
|
|||||||
11
mkdocs.yml
11
mkdocs.yml
@@ -6,12 +6,15 @@ theme:
|
|||||||
highlightjs: true
|
highlightjs: true
|
||||||
use_directory_urls: true
|
use_directory_urls: true
|
||||||
nav:
|
nav:
|
||||||
- Home: 'index.md'
|
- Home: 'README.md'
|
||||||
- Installation: 'installation.md'
|
- Installation: 'installation.md'
|
||||||
- Usage: 'usage.md'
|
- Usage: 'usage.md'
|
||||||
- Config: 'config/config.md'
|
- Config: 'config/config.md'
|
||||||
- Template: 'template/templating.md'
|
- Template: 'template/templating.md'
|
||||||
- HowTo: 'howto/index.md'
|
- HowTo: 'howto/README.md'
|
||||||
- Dependencies: 'meta/dependencies.md'
|
|
||||||
- People using dotdrop: 'meta/people-using-dotdrop.md'
|
|
||||||
- Contributing: 'contributing.md'
|
- Contributing: 'contributing.md'
|
||||||
|
markdown_extensions:
|
||||||
|
- toc:
|
||||||
|
baselevel: 2
|
||||||
|
permalink: "#"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user