dtfls

Back up and restore your config files.

Usage no npm install needed!

<script type="module">
  import dtfls from 'https://cdn.skypack.dev/dtfls';
</script>

README

dtfls

npm

Back up and restore your config files.

This is a port of dotfiles to Node.js.

Requirements

  • Node v6.0.0 or higher

Install

via npm:

npm install -g dtfls

Usage

CLI

  • Print difference between local and system configs

      dtfls diff <APP...>
    
  • Install local configs to the system

      dtfls install <APP...>
    
  • Print system installation path

      dtfls path <APP>
    
  • Run post-install scripts (it is being run automatically after install)

      dtfls postinstall <APP...>
    
  • Pull configs from the system to the local folder

      dtfls pull <APP...>
    

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

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.

Additionally there is a support for post-install scripts. They can be added in postinstall.user 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.js

And a workflow example:

$ 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