All Projects → SuperCuber → Dotter

SuperCuber / Dotter

Licence: unlicense
A dotfile manager and templater written in rust 🦀

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Dotter

Surfingkeys Conf
A SurfingKeys configuration which adds 130+ key mappings for 20+ sites & OmniBar search suggestions for 50+ sites
Stars: ✭ 137 (-11.04%)
Mutual labels:  configuration
Mimic
mimic: Define your Deployments, Infrastructure and Configuration as a Go Code 🚀
Stars: ✭ 145 (-5.84%)
Mutual labels:  configuration
Configurate
A simple configuration library for Java applications providing a node structure, a variety of formats, and tools for transformation
Stars: ✭ 148 (-3.9%)
Mutual labels:  configuration
Autofac.annotation
Autofac extras library for component registration via attributes 用注解来load autofac 摆脱代码或者xml配置和java的spring的注解注入一样的体验
Stars: ✭ 140 (-9.09%)
Mutual labels:  configuration
Config
Easiest way to add multi-environment yaml settings to Rails, Sinatra, Pandrino and other Ruby projects.
Stars: ✭ 1,821 (+1082.47%)
Mutual labels:  configuration
Gcfg
read INI-style configuration files into Go structs; supports user-defined types and subsections
Stars: ✭ 146 (-5.19%)
Mutual labels:  configuration
Next Runtime Dotenv
Expose environment variables to the runtime config of Next.js
Stars: ✭ 136 (-11.69%)
Mutual labels:  configuration
Qconf
Qihoo Distributed Configuration Management System
Stars: ✭ 1,843 (+1096.75%)
Mutual labels:  configuration
Pacback
Advanced Version Control for Arch Linux
Stars: ✭ 146 (-5.19%)
Mutual labels:  aur
Ansible Aur
Ansible module to manage packages from the AUR
Stars: ✭ 149 (-3.25%)
Mutual labels:  aur
Fig
A minimalist Go configuration library
Stars: ✭ 142 (-7.79%)
Mutual labels:  configuration
Omniconf
Configuration library for Clojure that favors explicitness
Stars: ✭ 142 (-7.79%)
Mutual labels:  configuration
I3 Rice Rin Shelter
My i3wm rice with theme "Rin : shelter"
Stars: ✭ 146 (-5.19%)
Mutual labels:  configuration
Config
Manage Laravel configuration by persistent storage
Stars: ✭ 139 (-9.74%)
Mutual labels:  configuration
Homematic Manager
Homematic Device Configuration and Administration
Stars: ✭ 149 (-3.25%)
Mutual labels:  configuration
Node Convict
Featureful configuration management library for Node.js
Stars: ✭ 1,855 (+1104.55%)
Mutual labels:  configuration
Phpdotenv
Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.
Stars: ✭ 11,648 (+7463.64%)
Mutual labels:  configuration
Toml
A PHP parser for TOML
Stars: ✭ 152 (-1.3%)
Mutual labels:  configuration
Env
Simple lib to parse environment variables to structs
Stars: ✭ 2,164 (+1305.19%)
Mutual labels:  configuration
Condenserdotnet
API Condenser / Reverse Proxy using Kestrel and Consul, Including light weight consul lib
Stars: ✭ 147 (-4.55%)
Mutual labels:  configuration

What is Dotter?

Dotter is a dotfile manager and templater.

Dotfiles are configuration files that usually live in the home directory and start with a dot. Often times, it is desirable to have a backup of all the configurations on your system, which is why a lot of users have their dotfiles saved in a git repository, then symlinking them to their target locations using ln -s.

However, there are several issues with that barebones approach:

  • Hard to keep track of what comes from where once you have more than a handful of dotfiles
  • Tedious to setup on a new machine - you need to manually create every single link
  • No real way to handle differences between machines - say you want the battery meter on your bar to not appear on your desktop machine

Dotter aims to solve all those problems by providing a flexible configuration and automatic templating or symlinking to the target locations.

⚠️ THIS PROJECT IS UNDER HEAVY DEVELOPMENT. I use it regularly myself so it's reasonably tested, but expect bugs to happen. If you find a bug, please open an issue describing how to reproduce it, and it will get fixed.
I create Releases often so make sure you check whether the bug was fixed in the latest one!

Installation

Arch Linux

The following AUR packages are available:

  • dotter-rs-bin for a precompiled version of the latest release
  • dotter-rs for the latest release's source that is built on your machine
  • dotter-rs-git for the latest commit on master that is built on your machine

All of those are maintained by orhun - huge thanks to him!

Others

Download the binary for your platform from the latest release and then put it in your $PATH or in your dotfile repository (then you'd run it with ./dotter). Alternatively, Dotter is on crates.io, so if you have Rustup installed, run cargo install dotter.

Wiki

Check out the wiki for more information. Among other things, it explains how to setup and configure Dotter, as well as giving insight on how the templating and deployment works.

Usage

Now that you've configured all the global and local file sections, you can simply run dotter from within your repository.
All the files will be deployed to their target locations.

Check out dotter -h for the command-line flags that Dotter supports:

Dotter 0.12.1
A small dotfile manager

USAGE:
    dotter [FLAGS] [OPTIONS] [SUBCOMMAND]

FLAGS:
    -d, --dry-run      Dry run - don't do anything, only print information. Implies -v at least once
    -f, --force        Force - instead of skipping, overwrite target files if their content is unexpected. Overrides
                       --dry-run
    -h, --help         Prints help information
    -y, --noconfirm    Assume "yes" instead of prompting when removing empty directories
    -p, --patch        Take standard input as an additional files/variables patch, added after evaluating `local.toml`.
                       Assumes --noconfirm flag because all of stdin is taken as the patch
    -q, --quiet        Quiet - only print errors
    -V, --version      Prints version information
    -v, --verbose      Verbosity level - specify up to 3 times to get more detailed output. Specifying at least once
                       prints the differences between what was before and after Dotter's run

OPTIONS:
        --cache-directory <cache-directory>          Directory to cache into [default: .dotter/cache]
        --cache-file <cache-file>                    Location of cache file [default: .dotter/cache.toml]
        --diff-context-lines <diff-context-lines>
            Amount of lines that are printed before and after a diff hunk [default: 3]

    -g, --global-config <global-config>              Location of the global configuration [default: .dotter/global.toml]
    -l, --local-config <local-config>                Location of the local configuration [default: .dotter/local.toml]
        --post-deploy <post-deploy>
            Location of optional post-deploy hook [default: .dotter/post_deploy.sh]

        --post-undeploy <post-undeploy>
            Location of optional post-undeploy hook [default: .dotter/post_undeploy.sh]

        --pre-deploy <pre-deploy>
            Location of optional pre-deploy hook [default: .dotter/pre_deploy.sh]
        --pre-undeploy <pre-undeploy>
            Location of optional pre-undeploy hook [default: .dotter/pre_undeploy.sh]


SUBCOMMANDS:
    deploy      Deploy the files to their respective targets. This is the default subcommand
    help        Prints this message or the help of the given subcommand(s)
    init        Initialize global.toml with a single package containing all the files in the current directory
                pointing to a dummy value and a local.toml that selects that package
    undeploy    Delete all deployed files from their target locations. Note that this operates on all files that are
                currently in cache
    watch       Run continuously, watching the repository for changes and deploying as soon as they happen. Can be
                ran with `--dry-run`

Contributing

Contributions to Dotter are welcome, whether in the form of a pull request or an issue (for bug repots, feature requests, or other helpful comments)

Support

Like what I do and want to encourage me to continue?
You can donate a small amount via Paypal.
Donations are not expected but greatly appreciated.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].