Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/blurgyy/dt

🏘 $HOME, $HOME everywhere
https://github.com/blurgyy/dt

aur cli command-line config configuration dotfile-manager dotfiles dt-cli handlebars rust syncing template templating

Last synced: 3 months ago
JSON representation

🏘 $HOME, $HOME everywhere

Awesome Lists containing this project

README

        

# DT

[![release](https://github.com/blurgyy/dt/actions/workflows/release.yml/badge.svg)](https://github.com/blurgyy/dt/actions/workflows/release.yml)
[![tests](https://github.com/blurgyy/dt/actions/workflows/tests.yml/badge.svg)](https://github.com/blurgyy/dt/actions/workflows/tests.yml)
[![docs](https://github.com/blurgyy/dt/actions/workflows/docs.yml/badge.svg)](https://dt.cli.rs/)
[![crates.io](https://img.shields.io/crates/v/dt-cli?style=flat&labelColor=1C2C2E&color=C96329&logo=Rust&logoColor=white)](https://crates.io/crates/dt-cli)

`DT` allows you to sync/populate configuration files at will. It currently
provides a CLI tool `dt-cli`.

## Usage

The command line interface `dt-cli` accepts a path to the configuration file
as an argument and performs the syncing process specified in the file.

Configuration guides and detailed usages can be found in the
[documentations](https://dt.cli.rs/).

### Example

A simple working configuration file to sync all files from `~/dt/nvim` to
`~/.config/nvim` that matches `*init.vim` can be written as:

```toml
[[local]]
name = "Neovim Configs"
base = "~/dt/nvim"
sources = ["*init.vim"]
target = "~/.config/nvim"
```

:warning: **STOP HERE if you don't know what you are doing, or have not backed
up existing files under `~/.config/nvim`.**

Save above config to `~/.config/dt/cli.toml` and run

```shell
$ dt-cli -c ~/.config/dt/cli.toml
```

to start syncing. Note the path in this example (`~/.config/dt/cli.toml`) is
also the default path, so the below command (calling `dt-cli` with no argument)
does the same thing as above:

```shell
$ dt-cli
```

**Other command line flags & options**

| Flags | Description |
|---:|:---|
| `-d\|--dry-run` | Shows changes to be made without actually syncing files. |
| `-h\|--help` | Prints help information. |
| `-q\|--quiet` | Decreases logging verbosity. |
| `-v\|--verbose` | Increases logging verbosity. |
| `-V\|--version` | Prints version information. |

| Options | Description |
|---:|:---|
| `-c\|--config-path` `` | Specifies path to config file. |

| Args | Description |
|---:|:---|
| `...` | Specifies name(s) of the group(s) to be processed |

## Install

### AUR

`dt-cli` is in the [AUR](https://aur.archlinux.org/packages/dt-cli/), you can
install it with your favorite package manager:

```shell
$ paru -S dt-cli
```

### Alternative ways

Alternatively, you can:

- Download latest [release](https://github.com/blurgyy/dt/releases/latest)
from GitHub
- Install from [crates.io](https://crates.io/crates/dt-cli/):

```shell
$ cargo install dt-cli
```

- Build from source:

```shell
$ git clone [email protected]:blurgyy/dt.git
$ cd dt
$ cargo test --release
$ cargo install --path=dt-cli
```

## Contributing

There are numerous ways to help with this project. Let's [get
started](https://github.com/blurgyy/dt/blob/main/CONTRIBUTING.md)!

## License

Licensed under the the MIT license or
Apache License, Version 2.0 , at
your option. This file may not be copied, modified, or distributed except
according to those terms.