|
| 1 | +## ... Design document |
| 2 | + |
| 3 | +This document attempts to describe in plain language, all the things that the |
| 4 | +`...`, dotfile management system should do. |
| 5 | + |
| 6 | +## Historical Outline |
| 7 | + |
| 8 | +The ... sysytem as it exists today is the result of about 8 years of managing |
| 9 | +dot files in various contexts. |
| 10 | + |
| 11 | +The rough history of `...` is this: |
| 12 | + |
| 13 | +* 2006: lukec, cdent, ingydotnet and others created a system for sharing |
| 14 | + configs at Socialtext called `stconfig`. The main idea was to bring together |
| 15 | + a dev teams favorite unix confs into a pair programming environment. |
| 16 | + |
| 17 | +* 2010: ingydotnet creates `...`, an attempt to polish stconfig for general |
| 18 | + use. |
| 19 | + |
| 20 | +* 2012: rking does a ton of work on ... and related *-dots repos. Creates |
| 21 | + https://github.com/sharpsaw and http://sharpsaw.org (which seems to be down |
| 22 | + now). |
| 23 | + |
| 24 | +* 2013: rjbs shows interest, but ... needs more love. ingydotnet writes this |
| 25 | + document. |
| 26 | + |
| 27 | +## Components |
| 28 | + |
| 29 | +The main component is https://github.com/sharpsaw/... (forked from |
| 30 | +https://github.com/ingydotnet/...). This is the software repo which you install |
| 31 | +simply by cloning it into `~/.../`: |
| 32 | + |
| 33 | + (cd; git clone https://github.com/sharpsaw/...) |
| 34 | + |
| 35 | +You need a conf file called: `~/.../conf` which is a YAML file containing an |
| 36 | +ordered list of -dots repos (lots of examples of which can be found here: |
| 37 | +https://github.com/sharpsaw/). There is a template file called |
| 38 | +`.../example.conf` with lots of comments. |
| 39 | + |
| 40 | +The repos are cloned by `...` into `~/.../src/`. |
| 41 | + |
| 42 | +Everytime you `... install`, the old dot files get copied into a timestamp |
| 43 | +directory under `~/.../backup/`. |
| 44 | + |
| 45 | +## Current Commands |
| 46 | + |
| 47 | +To start out with a new install, first create your `~/.../conf`, then run: |
| 48 | + |
| 49 | + ~/.../... update # clone/update repos (recursively w/ submodules) |
| 50 | + ~/.../... install # install all new dot files and backup old ones |
| 51 | + exec $SHELL # Restart your shell |
| 52 | + |
| 53 | +TODO: finish command list |
| 54 | + |
| 55 | +## Ideas for Moving Forward |
| 56 | + |
| 57 | +It is probably time to rewrite ..., or at least refactor some. Here are some |
| 58 | +ideas: |
| 59 | + |
| 60 | +1) We could rewrite ... in Bash. It might make it more accepted, but Perl is |
| 61 | + pretty ubiquitous. Will hold off for now. Having it a clone/run install is |
| 62 | + better than putting on CPAN imho, as this is targeted at new machines. plenv |
| 63 | + is an example of a Perl tool written in Bash. |
| 64 | +2) Support plugins for commands. |
| 65 | +3) Move from yaml to ini based conf. |
| 66 | +4) Move to a git based backup system. This would be a big win imho. |
| 67 | +5) Make loop-dots more robust and support more conf types. |
| 68 | +6) Make symlinks be the default (maybe only) install_method. From experience, |
| 69 | + symlinks are the best method. (vs copy or hardlink). |
| 70 | + |
0 commit comments