|
|
|
@ -26,6 +26,7 @@ class Link(dotbot.Plugin): |
|
|
|
|
for destination, source in links.items(): |
|
|
|
|
destination = os.path.expandvars(destination) |
|
|
|
|
relative = defaults.get('relative', False) |
|
|
|
|
canonical_path = defaults.get('canonicalize-path', True) |
|
|
|
|
force = defaults.get('force', False) |
|
|
|
|
relink = defaults.get('relink', False) |
|
|
|
|
create = defaults.get('create', False) |
|
|
|
@ -36,6 +37,7 @@ class Link(dotbot.Plugin): |
|
|
|
|
# extended config |
|
|
|
|
test = source.get('if', test) |
|
|
|
|
relative = source.get('relative', relative) |
|
|
|
|
canonical_path = source.get('canonicalize-path', canonical_path) |
|
|
|
|
force = source.get('force', force) |
|
|
|
|
relink = source.get('relink', relink) |
|
|
|
|
create = source.get('create', create) |
|
|
|
@ -68,8 +70,8 @@ class Link(dotbot.Plugin): |
|
|
|
|
if create: |
|
|
|
|
success &= self._create(destination) |
|
|
|
|
if force or relink: |
|
|
|
|
success &= self._delete(path, destination, relative, force) |
|
|
|
|
success &= self._link(path, destination, relative, ignore_missing) |
|
|
|
|
success &= self._delete(path, destination, relative, canonical_path, force) |
|
|
|
|
success &= self._link(path, destination, relative, canonical_path, ignore_missing) |
|
|
|
|
else: |
|
|
|
|
self._log.lowinfo("Globs from '" + path + "': " + str(glob_results)) |
|
|
|
|
glob_base = path[:glob_star_loc] |
|
|
|
@ -79,8 +81,8 @@ class Link(dotbot.Plugin): |
|
|
|
|
if create: |
|
|
|
|
success &= self._create(glob_link_destination) |
|
|
|
|
if force or relink: |
|
|
|
|
success &= self._delete(glob_full_item, glob_link_destination, relative, force) |
|
|
|
|
success &= self._link(glob_full_item, glob_link_destination, relative, ignore_missing) |
|
|
|
|
success &= self._delete(glob_full_item, glob_link_destination, relative, canonical_path, force) |
|
|
|
|
success &= self._link(glob_full_item, glob_link_destination, relative, canonical_path, ignore_missing) |
|
|
|
|
else: |
|
|
|
|
if create: |
|
|
|
|
success &= self._create(destination) |
|
|
|
@ -94,8 +96,8 @@ class Link(dotbot.Plugin): |
|
|
|
|
(destination, path)) |
|
|
|
|
continue |
|
|
|
|
if force or relink: |
|
|
|
|
success &= self._delete(path, destination, relative, force) |
|
|
|
|
success &= self._link(path, destination, relative, ignore_missing) |
|
|
|
|
success &= self._delete(path, destination, relative, canonical_path, force) |
|
|
|
|
success &= self._link(path, destination, relative, canonical_path, ignore_missing) |
|
|
|
|
if success: |
|
|
|
|
self._log.info('All links have been set up') |
|
|
|
|
else: |
|
|
|
@ -159,9 +161,9 @@ class Link(dotbot.Plugin): |
|
|
|
|
self._log.lowinfo('Creating directory %s' % parent) |
|
|
|
|
return success |
|
|
|
|
|
|
|
|
|
def _delete(self, source, path, relative, force): |
|
|
|
|
def _delete(self, source, path, relative, canonical_path, force): |
|
|
|
|
success = True |
|
|
|
|
source = os.path.join(self._context.base_directory(), source) |
|
|
|
|
source = os.path.join(self._context.base_directory(canonical_path=canonical_path), source) |
|
|
|
|
fullpath = os.path.expanduser(path) |
|
|
|
|
if relative: |
|
|
|
|
source = self._relative_path(source, fullpath) |
|
|
|
@ -195,7 +197,7 @@ class Link(dotbot.Plugin): |
|
|
|
|
destination_dir = os.path.dirname(destination) |
|
|
|
|
return os.path.relpath(source, destination_dir) |
|
|
|
|
|
|
|
|
|
def _link(self, source, link_name, relative, ignore_missing): |
|
|
|
|
def _link(self, source, link_name, relative, canonical_path, ignore_missing): |
|
|
|
|
''' |
|
|
|
|
Links link_name to source. |
|
|
|
|
|
|
|
|
@ -203,7 +205,8 @@ class Link(dotbot.Plugin): |
|
|
|
|
''' |
|
|
|
|
success = False |
|
|
|
|
destination = os.path.expanduser(link_name) |
|
|
|
|
absolute_source = os.path.join(self._context.base_directory(), source) |
|
|
|
|
base_directory = self._context.base_directory(canonical_path=canonical_path) |
|
|
|
|
absolute_source = os.path.join(base_directory, source) |
|
|
|
|
if relative: |
|
|
|
|
source = self._relative_path(absolute_source, destination) |
|
|
|
|
else: |
|
|
|
|