Casey Rodarmor <casey@rodarmor.com> pointed out that Dotbot parses JSON
files as YAML. The YAML format doesn't allow tab characters, which are
normally allowed in JSON. This patch adds a note about this to the
README.
In our use case, we are *not* reading arbitrary input that could be
malicious. Still, because we know that what we're reading is made up of
only dictionaries and lists and not arbitrary Python objects, we might
as well use the more restrictive `safe_load` function rather than the
`load` function.
This commit adds an option to the extended configuration syntax for
linking files and directories. The relink option is a safe alternative
to forcibly linking that only removes broken symbolic links, so it
cannot result in data loss.
Check if entry to force-create (delete) is a symlink and if so, simply
unlink it. Don't try to run rmtree on the underlying directory, which
will fail anyway.
This commit introduces an extended configuration syntax for shell
commands. This syntax allows for specifying whether the stdin, stdout,
and stderr streams are enabled.
The version checking code fails on Python 2.6 and earlier.
`sys.version_info` only became a named tuple in Python 2.7. The
recommended way to get the check to work in earlier versions of Python
is to access it as a regular tuple.
When used, pyyaml generates *.pyc files, which will cause the submodule
to appear as dirty. This will bubble all the way up to any parent
repository that include Dotbot as a submodule. This change makes it so
that changes in the pyyaml repository do not cause the parent repository
to appear to have modified files.
This commit fixes a bug where forced links did not work on certain types
of bad links. Until this fix, forced links only worked if the original
was a real file or directory. This commit fixes this, so that the forced
link option also works when the original is a broken or incorrect
symbolic link.