summaryrefslogtreecommitdiff
path: root/dotbot
Commit message (Collapse)AuthorAge
* plugins/clean: fix typoHEADmasterAnton Khirnov2021-04-24
|
* plugins/link: use info log level for link creationAnton Khirnov2020-11-15
| | | | Forgotten in 7eabd28
* Add a dry run mode.Anton Khirnov2020-11-15
|
* plugins/link: drop the glob optionAnton Khirnov2020-11-15
| | | | It is too complex.
* plugins/link: drop create optionsAnton Khirnov2020-11-15
| | | | It is an unnecessary complication. Just list the directories explicitly.
* plugin: reduce code duplicationAnton Khirnov2020-11-15
| | | | | Factor out supported directive checking, drop redundant checking in handle().
* Tweak log levels.Anton Khirnov2020-11-15
| | | | | Use info for changes performed (e.g. changes to the filesystem, code executed). Use verbose for "nothing to do" messages.
* messenger: rename lowinfo to verboseAnton Khirnov2020-11-15
| | | | This is more standard terminology.
* Add `--force-color` optionBob Whitelock2020-08-23
| | | | | | | | | | | | | | | | | | | This forces Dotbot to produce colored output, regardless of whether it is outputting to a TTY. This is useful to support use cases such as piping colored Dotbot output into another program for formatting (e.g. I want to indent the output as part of a larger installation script); this was not previously easy to do as this would cause the output to lose its colored formatting. This option cannot be provided at the same time as the existing `--no-color` option, as there's no logical interpretation of what effect providing both of these should have. As part of this change I've refactored some existing code determining whether output should be colored to where options are parsed, as this made this change simpler and I think it makes sense for all this logic to be performed in the same place.
* Release 1.17.1Anish Athalye2020-07-24
|
* Added support to run with python -mtpansin2020-07-23
|
* Make error for empty config a little friendlierAnish Athalye2020-06-25
| | | | | | | | | | | | | | | In the setup guide in the README, we have people start out with an empty file (created using `touch`). Before this patch, Dotbot gave the following error: Configuration file must be a list of tasks Instead, with this patch, Dotbot says: Configuration file is empty, no work to do This change was prompted by https://github.com/anishathalye/dotbot/pull/226.
* Work around subprocess.call() issue on WindowsAnish Athalye2020-05-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On POSIX-like systems, calling `subprocess.call()` with both `shell=True` and `executable='...'` has the following behavior: > If `shell=True`, on POSIX the _executable_ argument specifies a > replacement shell for the default `/bin/sh`. (via https://docs.python.org/3/library/subprocess.html?highlight=subprocess#popen-constructor) This seems to have a similar behavior on Windows, but this is problematic when a POSIX shell is substituted for cmd.exe. This is because when `shell=True`, the shell is invoked with a '/c' argument, which is the correct argument for cmd.exe but not for Bash, which expects a '-c' argument instead. See here: https://github.com/python/cpython/blob/1def7754b7a41fe57efafaf5eff24cfa15353444/Lib/subprocess.py#L1407 This is problematic when combined with Dotbot's behavior, where the `executable` argument is set based on `$SHELL`. For example, when running in Git Bash, the `$SHELL` environment variable is set to Bash, so any commands run by Dotbot will fail (because it'll invoke Bash with a '/c' argument). This behavior of setting the `executable` argument based on `$SHELL` was introduced in 7593d8c13479b382357be065c7bf51562a130660. This is the desired behavior. See discussion in https://github.com/anishathalye/dotbot/issues/97 and https://github.com/anishathalye/dotbot/pull/100. Unfortunately, this doesn't work quite right on Windows. This patch works around the issue by avoiding setting the `executable` argument when the platform is Windows, which is tested using `platform.system() == 'Windows'`. This means that shell commands executed by Dotbot on this platform will always be run using cmd.exe. Invocations of single programs or simple commands will probably work just fine in cmd.exe. If Bash-like behavior is desired, the user will have to write their command as `bash -c '...'`. This shouldn't have any implications for backwards-compatibility, because setting the `executable` argument on Windows didn't do the right thing anyways. Previous workarounds that users had should continue to work with the new code. When using Python from CYGWIN, `platform.system()` returns something like 'CYGWIN_NT-...', so it won't be detected with the check, but this is the correct behavior, because CYGWIN Python's `subprocess.call()` has the POSIX-like behavior. This patch also refactors the code to factor out the `subprocess.call()`, which was being called in both `link.py` and `shell.py`, so the workaround can be applied in a single place. See the following issues/pull requests for a discussion of this bug: - https://github.com/anishathalye/dotbot/issues/170 - https://github.com/anishathalye/dotbot/pull/177 - https://github.com/anishathalye/dotbot/issues/219 An issue has also been raised in Python's issue tracker: - https://bugs.python.org/issue40467 Thanks to @shivapoudel for originally reporting the issue, @SuJiKiNen for debugging it and submitting a pull request, and @mohkale for suggesting factoring out the code so that other plugins could use it.
* Add --only and --except command-line argumentsAnish Athalye2020-03-26
| | | | | | Internal to Dotbot, we use the name "skip" instead of "except", because the latter is a keyword, and using a name like "except_" didn't seem as nice.
* Release 1.17.0Anish Athalye2020-01-03
|
* Merge branch 'ypid/add/link_real_path_option'Anish Athalye2020-01-03
|\
| * Add tests for canonicalize-pathAnish Athalye2020-01-03
| |
| * Add 'canonicalize-path' option to linkRobin Schneider2020-01-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Fix incorrect use of `is` over `==`Anish Athalye2020-01-03
|/ | | | | | Comparing strings and integers with `is` is a bug: comparisons should be done with `==`. It might not have caused observable problems in the past because small integers and strings can be interned.
* Add option to clean recursivelyAnish Athalye2019-12-31
|
* Fix clean not respecting defaultsAnish Athalye2019-12-31
| | | | | | | | | | Previously, clean read the defaults once, and then it updated the setting for each entry it read. This resulted in the defaults being clobbered and then not being respected for subsequent entries. This patch fixes the issue by re-reading the defaults before processing each item. The other plugins (link, shell) do not have this problem.
* Add ignore-missing option to linkAlbert Puig2019-12-31
|
* Release 1.16.0Anish Athalye2019-10-12
|
* Add 'create' directive to create directoriesJesse Leite2019-10-12
|
* Change `target` to `source` for consistency with docsronalabraham2019-06-04
|
* Release 1.15.0Anish Athalye2018-11-21
|
* Merge branch 'thtliife/suppress-shell-cmd'Anish Athalye2018-11-21
|\
* | Release 1.14.1Anish Athalye2018-11-19
| |
* | Support defining default conditional option for linksBao Trinh2018-11-17
| |
* | Release 1.14.0Anish Athalye2018-10-16
| |
* | Implement conditional linkingBen Klein2018-10-16
| |
* | Add option --no-color to suppress colorization of outputPhilip Hallstrom2018-10-06
| | | | | | | | | | | | By default, if output is a TTY, dotbot will colorize the output. This patch adds the option to pass `--no-color` to dotbot to have it suppress this colorization.
* | Fix clean path expansion to expand env varsDerek P Sifford2018-08-06
| |
* | Release 1.12.4Anish Athalye2018-06-18
| |
* | Include built-in plugins in PyPI distributionAnish Athalye2018-06-11
| |
* | Release 1.12.3Anish Athalye2018-06-03
| |
* | Release 1.12.2Anish Athalye2018-06-01
| |
* | Add PyPI packageAnish Athalye2018-05-30
| | | | | | | | | | This patch also makes the '-d' argument optional, with the base directory defaulting to the directory of the configuration file.
* | Fix handling of base directoryAnish Athalye2018-05-24
| | | | | | | | | | | | | | | | Prior to this patch, Dotbot was relying on running with the base directory being the current working directory. In practice, it was relying on the install shim to set up this context. It makes more sense sense to actually execute `chdir()` within Dotbot itself, rather than relying on the install shim to do so.
* | Implement globbing supportBen Klein2018-04-13
|/
* Add default optionsAnish Athalye2016-03-03
| | | | | This feature was implemented with feedback from Aleks Kamko <aykamko@gmail.com> and Casey Rodarmor <casey@rodarmor.com>.
* Add plugin loaderCasey Rodarmor2016-02-06
|
* Fix compatibility with Python 3Anish Athalye2016-01-15
| | | | | This patch removes a stray print statement that was causing problems with Python 3.
* Use file extension to select config file parserAnish Athalye2016-01-13
| | | | | This patch makes Dotbot provide better error messages when parsing JSON files.
* Use standard library JSON parser for JSON filesAnish Athalye2016-01-13
| | | | | | This patch reverts the changes to the README made in 57265f78b4e4f6ca67393f55b2b08f6f45a02ff1 and makes it so that Dotbot supports JSON files with tab characters.
* Use `safe_load` function to load YAMLAnish Athalye2015-08-03
| | | | | | | | 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.
* Add environment variable expansion in link pathsAnish Athalye2015-05-12
| | | | This feature was proposed by Brian Knobbs <brian@redlattice.com>.
* Add functionality to overwrite broken linksAnish Athalye2015-05-02
| | | | | | | 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.
* Handle force creation of symlinked directoriesAndreas Ntaflos2015-04-27
| | | | | | 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.
* Improve error message for malformed filesAnish Athalye2015-04-26
| | | | | This patch makes Dotbot warn the user and gracefully exit when the configuration file is not a list.