138fdbc8d7
Dotbot had a hardcoded behaviour that the BASEDIR was always passed to os.path.realpath which "returns the canonical path of the specified filename, eliminating any symbolic links encountered in the path". This might not always be desirable so this commit makes it configurable. The use case where `canonicalize-path` comes in handy is the following: You want to provide dotfiles in the Filesystem Hierarchy Standard under `/usr/local/share/ypid_dotfiles/`. Now you want to provide `.config/dotfiles` as a default in `/etc/skel`. When you now pre-configure `/etc/skel` by running dotbot in it set has HOME, dotfiles will refer to `/usr/local/share/ypid_dotfiles/` and not `/etc/skel/.config/dotfiles` which does not look nice. This is related to but not the same as the `relative` parameter used with link commands.
28 lines
696 B
Python
28 lines
696 B
Python
import copy
|
|
import os
|
|
|
|
class Context(object):
|
|
'''
|
|
Contextual data and information for plugins.
|
|
'''
|
|
|
|
def __init__(self, base_directory):
|
|
self._base_directory = base_directory
|
|
self._defaults = {}
|
|
pass
|
|
|
|
def set_base_directory(self, base_directory):
|
|
self._base_directory = base_directory
|
|
|
|
def base_directory(self, canonical_path=True):
|
|
base_directory = self._base_directory
|
|
if canonical_path:
|
|
base_directory = os.path.realpath(base_directory)
|
|
return base_directory
|
|
|
|
def set_defaults(self, defaults):
|
|
self._defaults = defaults
|
|
|
|
def defaults(self):
|
|
return copy.deepcopy(self._defaults)
|