160 lines
4 KiB
Markdown
160 lines
4 KiB
Markdown
dotinstall - manage dotfiles
|
|
----------------------------
|
|
|
|
`dotinstall` is another little script made for install, uninstall or update
|
|
dotfiles by creating symbolic links. You need to provide a boostrap script.
|
|
|
|
`dotinstall` aim to manage each application dotfiles separately, by this way you
|
|
can choose what to install on your machines.
|
|
|
|
## Installation
|
|
|
|
Just put the `dotinstall` script in a folder accessible via the `$PATH`
|
|
command. I choose to put it in `~/.local/bin/`.
|
|
|
|
## How to use
|
|
|
|
```
|
|
dotinstall bootstrap
|
|
```
|
|
|
|
The script can use git URI (https or ssh) to retrieve a repository :
|
|
|
|
```
|
|
dotinstall https://git.example.com/user/repo.git
|
|
```
|
|
|
|
You can uninstall the dotfiles by adding the `uninstall` keyword before the
|
|
bootstrap file or git URI:
|
|
|
|
```
|
|
dotinstall uninstall bootstrap
|
|
```
|
|
|
|
Or update with `update` even in git mode
|
|
|
|
```
|
|
dotinstall update bootstrap
|
|
```
|
|
|
|
## Boostrap file syntax
|
|
|
|
`bootstrap` is a simple bash script sourced by `dotinstall`. The `bootstrap`
|
|
file contains instructions : you can call functions and use variables from
|
|
dotinstall.
|
|
|
|
### functions
|
|
|
|
#### required_commands
|
|
|
|
This function check if binary file is avaible in the `PATH`.
|
|
|
|
- **input** : list of executable separated by spaces"
|
|
- **return** : no value, but exit the entire script if a executable is not
|
|
found with exit code 128
|
|
|
|
```
|
|
required_commands "ls mv git"
|
|
```
|
|
|
|
#### conf_process_dirs
|
|
|
|
Process a directory that contains others directories an symblink them to the
|
|
destination folder :
|
|
|
|
- **input** :
|
|
- `$1` : source directory
|
|
- `$2` : destination directory
|
|
- **return** : no value, exit the funtion if there is an error on path
|
|
|
|
```
|
|
conf_process_dirs "${repository}/config" "${HOME}/.config"
|
|
```
|
|
|
|
#### conf_process_files
|
|
|
|
Process a directory than contains files and symblink them to the destination
|
|
folder :
|
|
|
|
- **input** :
|
|
- `$1` : source directory
|
|
- `$2` : destination directory
|
|
- **return** : no value, exit the funtion if there is an error on path
|
|
|
|
```
|
|
conf_process_dirs "${repository}/zshrc" "${HOME}"
|
|
```
|
|
|
|
#### bin_install
|
|
|
|
Symblink an executable file to the `~/.local/bin` folder.
|
|
|
|
- **input** :
|
|
- `$1` : source file
|
|
- **return** : no value, exit the function if the source file not exist or is
|
|
not executable.
|
|
|
|
```
|
|
bin_install "bin/check_mails.sh
|
|
```
|
|
|
|
#### service_install
|
|
|
|
Install a systemd service as user, can be useful for timers for example :
|
|
|
|
- **input** :
|
|
- `$1` : source file
|
|
- `$2` : 1 if service must be activated
|
|
- **return** : no value, but exit the function if source file is not found or
|
|
the service can't be activated
|
|
|
|
```
|
|
service_install "services/myservice.service" 1
|
|
```
|
|
|
|
### define_env
|
|
|
|
Define an evirnment variable into the file `~/.config/environment`, you have to
|
|
source this file on your `.bashrc` or your `.zprofile`.
|
|
|
|
- **input*** :
|
|
- `$1` : name of the variable
|
|
- `$2` : value, `""` if empty
|
|
- **output** : no value, but exit the function if the variale is already
|
|
defined (install) or not in file (uninstall)
|
|
|
|
```
|
|
define_env "NOTMUCH_CONFIG" "~/.config/notmuch"
|
|
```
|
|
|
|
### Avaible variables
|
|
|
|
- `$repository` : the root folder of the repository
|
|
- `OVERWRITE_DIRECTORY` : if `1`, the script will erase a directory and replace
|
|
it with a symblink if needed. For example if `~/.vim/` exist, but your
|
|
boostrap file need to create a symblink from `~/.config/dotrepo/conf/vim`
|
|
to `~/.vim`, it will be erased fist. If 0, an error message will be
|
|
displayed.
|
|
- `OVERWRITE_FILE` : do the same with file
|
|
|
|
## Return code
|
|
|
|
This script return 0 if there is not error.
|
|
|
|
- **1** : no bootstrap specified.
|
|
- **2** : boostrap file not found
|
|
|
|
### Git relative error codes
|
|
|
|
- **20** : can't clone dotfile git repository.
|
|
- **24** : can't update dotfile git repository.
|
|
- **25** : local git repository does not exist.
|
|
|
|
### Script relative error code
|
|
|
|
- **128** : a binary checked by `required_commands()` is not present
|
|
|
|
## Licence
|
|
|
|
This software is licenced under the GNU-GPL 3 licence, you can found a copy of
|
|
the licence [here](https://www.gnu.org/licenses/gpl-3.0.en.html).
|