diff options
author | Jon Bernard <jbernard@tuxion.com> | 2014-07-24 16:35:12 -0400 |
---|---|---|
committer | Jon Bernard <jbernard@tuxion.com> | 2014-07-24 16:35:12 -0400 |
commit | 16481edc0788a1f9f7cd3038634e308b7dcfbf2f (patch) | |
tree | ab534ef34b58cd9aada493582f9b027b4ddde43c | |
parent | 4a215801542e28a6c7fdaa2d9e9679ebe911f9fe (diff) | |
download | dotfiles-16481edc0788a1f9f7cd3038634e308b7dcfbf2f.tar.gz dotfiles-16481edc0788a1f9f7cd3038634e308b7dcfbf2f.tar.bz2 dotfiles-16481edc0788a1f9f7cd3038634e308b7dcfbf2f.zip |
Clean up kwargs handling in repository constructor
This add a defaults attribute where default values are stored instead of
accumulating them in the cli. I think improves readability and is
certainly easier to manage.
-rw-r--r-- | dotfiles/core.py | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/dotfiles/core.py b/dotfiles/core.py index e3d4a9b..84b383e 100644 --- a/dotfiles/core.py +++ b/dotfiles/core.py @@ -1,12 +1,3 @@ -# -*- coding: utf-8 -*- - -""" -dotfiles.core -~~~~~~~~~~~~~ - -This module provides the basic functionality of dotfiles. -""" - import os import os.path import shutil @@ -112,15 +103,28 @@ class Dotfile(object): class Dotfiles(object): """A Dotfiles Repository.""" - __attrs__ = ['homedir', 'repository', 'prefix', 'ignore', 'externals', - 'packages', 'dry_run'] + defaults = { + 'prefix': '', + 'packages': set(), + 'externals': dict(), + 'ignore': set(['.dotfilesrc']), + 'homedir': os.path.expanduser('~/'), + 'path': os.path.expanduser('~/Dotfiles'), + } def __init__(self, **kwargs): - # Map args from kwargs to instance-local variables - for k, v in kwargs.items(): - if k in self.__attrs__: - setattr(self, k, v) + # merge provided arguments with defaults into configuration + configuration = {key: kwargs.get(key, self.defaults[key]) + for key in self.defaults} + + # map configuration items to instance-local variables + for k, v in configuration.items(): + setattr(self, k, v) + + # FIXME: compatibility shims, remove these + self.dry_run = False + self.repository = self.path self._load() |