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

https://github.com/phts/dtfls

Back up and restore your config files
https://github.com/phts/dtfls

configs dotfiles npm-package

Last synced: about 2 months ago
JSON representation

Back up and restore your config files

Awesome Lists containing this project

README

          

# dtfls

[![npm](https://img.shields.io/npm/v/dtfls.svg)](https://www.npmjs.com/package/dtfls)

Back up and restore your config files.

This is a redevelopment of [dotfiles](https://github.com/phts/dotfiles) (which was written on shell script) to Node.js.

## Requirements

- Node v22 or higher

## Install

**via npm**:

```
npm install -g dtfls
```

## Usage

### CLI

- Print difference between local and system configs

```sh
dtfls diff
```

- Install local configs to the system

```sh
dtfls install
```

- Print system installation path

```sh
dtfls path
```

- Run post-install scripts (it is being run automatically after install)

```sh
dtfls postinstall
```

- Pull configs from the system to the local folder

```sh
dtfls pull
```

Use `dtfls --help` to read a common usage information and
`dtfls --help` to read about a specific command.

### `--cmd` option example

path.user.json:

```
{
"my-app": "remote-host@my-user:/"
}
```

and run:

```sh
dtfls pull --cmd=scp my-app
dtfls install --cmd=scp my-app
```

### Folder structure

Each set of configs should be placed in separate folders.
Names of such folders should not contain spaces.
These folders should contain the same hierarchy which should be
in the user folder (`~`) of the target system.

Mapping of local path to system path for particular configs can be changed
with a file [`path.user.json`](https://github.com/phts/dtfls/blob/master/examples/path.user.json.example).

Additionally there is a support for post-install scripts. They can be
added in [`postinstall.user`](https://github.com/phts/dtfls/blob/master/examples/postinstall.user.example) file.

## Example

Local repo structure:

```
my configs
\_ git
| \_ .gitconfig
|
|_ profile
| \_ .profile
|
|_ sublime-text-3
| \_ .config
| \_ sublime-text-3
| \_ Packages
| \_ User
| |_ Default (Linux).sublime-keymap
| |_ Default (Linux).sublime-mousemap
| \_ Preferences.sublime-settings
|
|_ zsh
| \_ .zshrc
|
|_ path.user.json
\_ postinstall.user
```

And a workflow example:

```sh
cd "my configs"
git pull <--- pull changes from your repo with configs
dtfls install git <--- install git configs from the repo to system
dtfls pull sublime-text-3 <--- copy Sublime Text configs from system to the local repo
git commit -am "Update Sublime Text configs" <--- commit updated configs
git push <--- and push
```