From e95b8dbe6be571feb2691e838c340059d1401ab8 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Fri, 27 Dec 2013 14:47:22 -0200 Subject: Cleaning up metadot code --- README.mdwn | 97 ++--------------------------------- metadot | 106 --------------------------------------- modules/profile/profile.dot.link | 2 +- 3 files changed, 5 insertions(+), 200 deletions(-) delete mode 100755 metadot diff --git a/README.mdwn b/README.mdwn index 901c8be..9d4cb0a 100644 --- a/README.mdwn +++ b/README.mdwn @@ -1,94 +1,5 @@ -Metadot: modular dotfile management system -========================================== +Rhatto's dotfiles bundle +======================== -Metadot allows you to easilly manage and reuse existing dotfiles repositories -by simply cloning then to your `~/.dotfiles/modules` and renaming a few files. - -By being modular, it's possible to create modules for specific applications -(vim, mutt, emcas, git, etc). By using git submodules, one can even create her -own dotfile bundle. - -Inspired by [holman does dotfiles](https://github.com/holman/dotfiles) and many -other initiatives but with a modular design to ease dotfile sharing as the -`metadot` code is split from the dotfile folder. - -Instalation ------------ - -Get the code: - - git clone --recursive git://git.sarava.org/metadot.git - -Save the metadot repository anywhere but make sure it's available in your `$PATH`. -Then get some modules. You can get the whole standard module bundle with: - - git clone --recursive git://git.sarava.org/rhatto/dotfiles.git ~/.dotfiles - -This bundle will hardly suit all your needs. You can fetch individual modules or even -start your own bundle: - - mkdir -p ~/.dotfiles/modules - git clone --recursive git://git.sarava.org/rhatto/dotfiles/vim.git ~/.dotfiles/modules/vim - -Usage ------ - -List existing modules: - - metadot ls - -Load a module: - - metadot load - -Load all modules: - - metadot load --all - -Update a module bundle: - - metadot update - -Backups are made whenever a module is loaded. - -Layout ------- - -- ~/.dotfiles: where all dotfiles modules are stored -- ~/.backups: backups of old config files -- ~/.custom: some modules use this folder where custom configuration can override default parameters - -Module format -------------- - -Modules rest at ~/.dotfiles/modules and can be git submodules. File format is: - - [path/][.dot][.link] - -Which means files - -- with a .link extension are linked at $HOME. -- with a .dot.link extension are converted to a dotfile: vimrc.dot.link is linked as ~/.vimrc. -- with other extensions are ignored. - -Also, - -- file structure is preserved: file apps/scripts.link is linked as $HOME/apps/scripts. -- nested structures are allowed: config.dot/awesome.link is linked as $HOME/.config/awesome - -TODO ----- - -- Split: metadot, dotfiles and modules should be separate repositories. -- Profile: automatic $PATH inclusion for installed script repositories. -- Check if module is correctly installed. -- Track loaded modules. -- Module descriptions and dependencies. -- Module unloading and restoration. -- Integration with scripts project. -- More file types: - - .sample: copied if no origin file exists - - .sh: added to the profile - - .mkdir: are simply created - - .cp: are copied - - .template: are copied and transformed according to environment or config variables +This is the bundle repository for rhatto's dotfiles. +More information at https://git.sarava.org/?p=metadot.git diff --git a/metadot b/metadot deleted file mode 100755 index 47af6ac..0000000 --- a/metadot +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash -# -# metadot: a dotfile management system -# - -# Parameters -OPT="$1" -DATE="`date +%Y%m%d%I%M%S`" -BASENAME="`basename $0`" -DOT="$HOME/.dotfiles" -MODULES="$DOT/modules" -BACKUPS="$HOME/.backups/$DATE" - -# Backup a file -function metadot_backup { - local file="$HOME/$1" - - if [ -e "$file" ] || [ -h "$file" ]; then - local folder="$BACKUPS/`dirname $1`" - - #echo "Backing up `basename $1`..." - mkdir -p $folder - mv $file $folder - fi -} - -# Find contents of a module -function metadot_find { - local module="$1" - ( cd $MODULES/$module && find -name '*.link' -or -name '*.dot.link' ) | sed -e 's|./||' -} - -# Load a module -function metadot_load { - local module="$1" - local destname - local dirname - - if [ -d "$MODULES/$module" ]; then - - echo "Loading module $module..." - - for file in `metadot_find $module`; do - echo "Processing $file..." - - # Get the dirname, replacing string.dot with .string - dirname="`echo $file | sed -e 's|\([^/]*\).dot/|.\1/|g'`" - dirname="`dirname $dirname`" - - if echo $file | grep -q '.dot.link'; then - destname=".`basename $file .dot.link`" - else - destname="`basename $file .link`" - fi - - if [ "$dirname" != "." ]; then - #echo "Creating $HOME/$dirname..." - mkdir -p $HOME/$dirname - else - dirname="" - fi - - metadot_backup "$dirname/$destname" - - #echo "Installing symlink $dirname/$destname..." - ln -s $MODULES/$module/$file $HOME/$dirname/$destname - - done - else - echo "No such module $module" - fi -} - -# Parsing. -if [ -z "$OPT" ]; then - echo "usage: $BASENAME