Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
34a1720ecd
5 changed files with 41 additions and 77 deletions
30
.travis.yml
30
.travis.yml
|
@ -1,16 +1,26 @@
|
|||
language: python
|
||||
python:
|
||||
- "2.7"
|
||||
- "pypy"
|
||||
- "3.2"
|
||||
- "3.3"
|
||||
- "3.4"
|
||||
- "3.5"
|
||||
- "3.6"
|
||||
- "nightly"
|
||||
- "pypy3"
|
||||
|
||||
sudo: false
|
||||
|
||||
.mixins:
|
||||
- &xenial
|
||||
dist: xenial
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- python: "2.7"
|
||||
- python: "pypy"
|
||||
- python: "3.2"
|
||||
- python: "3.3"
|
||||
- python: "3.4"
|
||||
- python: "3.5"
|
||||
- python: "3.6"
|
||||
- <<: *xenial
|
||||
python: "3.7"
|
||||
- <<: *xenial
|
||||
python: "3.8-dev"
|
||||
- python: "nightly"
|
||||
- python: "pypy3"
|
||||
|
||||
script:
|
||||
- ./test/test_travis
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
The MIT License (MIT)
|
||||
=====================
|
||||
|
||||
**Copyright (c) 2014-2018 Anish Athalye (me@anishathalye.com)**
|
||||
**Copyright (c) 2014-2019 Anish Athalye (me@anishathalye.com)**
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
|
78
README.md
78
README.md
|
@ -34,7 +34,7 @@ you're just looking for [some inspiration][inspiration], we've got you covered.
|
|||
|
||||
The following will help you get set up using Dotbot in just a few steps.
|
||||
|
||||
If you're using Git, you can add Dotbot as a submodule:
|
||||
If you're using **Git**, you can add Dotbot as a submodule:
|
||||
|
||||
```bash
|
||||
cd ~/.dotfiles # replace with the path to your dotfiles
|
||||
|
@ -44,7 +44,7 @@ cp dotbot/tools/git-submodule/install .
|
|||
touch install.conf.yaml
|
||||
```
|
||||
|
||||
If you're using Mercurial, you can add Dotbot as a subrepo:
|
||||
If you're using **Mercurial**, you can add Dotbot as a subrepo:
|
||||
|
||||
```bash
|
||||
cd ~/.dotfiles # replace with the path to your dotfiles
|
||||
|
@ -108,43 +108,15 @@ The conventional name for the configuration file is `install.conf.yaml`.
|
|||
- [git submodule update --init --recursive, Installing submodules]
|
||||
```
|
||||
|
||||
The configuration file can also be written in JSON. Here is the JSON equivalent
|
||||
of the YAML configuration given above.
|
||||
|
||||
The conventional name for this file is `install.conf.json`.
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"defaults": {
|
||||
"link": {
|
||||
"relink": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"clean": ["~"]
|
||||
},
|
||||
{
|
||||
"link": {
|
||||
"~/.dotfiles": "",
|
||||
"~/.tmux.conf": "tmux.conf",
|
||||
"~/.vim": "vim",
|
||||
"~/.vimrc": "vimrc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"shell": [
|
||||
["git submodule update --init --recursive", "Installing submodules"]
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
The configuration file is typically written in YAML, but it can also be written
|
||||
in JSON (which is a subset of YAML). [Here][json-equivalent] is the JSON
|
||||
[equivalent][json2yaml] of the YAML configuration given above. JSON
|
||||
configuration files are conventionally named `install.conf.json`.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
Dotbot uses YAML or JSON formatted configuration files to let you specify how
|
||||
Dotbot uses YAML or JSON-formatted configuration files to let you specify how
|
||||
to set up your dotfiles. Currently, Dotbot knows how to [link](#link) files and
|
||||
folders, execute [shell](#shell) commands, and [clean](#clean) directories of
|
||||
broken symbolic links. Dotbot also supports user [plugins](#plugins) for custom
|
||||
|
@ -161,7 +133,9 @@ Tasks are run in the order in which they are specified. Commands within a task
|
|||
do not have a defined ordering.
|
||||
|
||||
When writing nested constructs, keep in mind that YAML is whitespace-sensitive.
|
||||
Following the formatting used in the examples is a good idea.
|
||||
Following the formatting used in the examples is a good idea. If a YAML
|
||||
configuration file is not behaving as you expect, try inspecting the
|
||||
[equivalent JSON][json2yaml] and check that it is correct.
|
||||
|
||||
Also, note that `~` in YAML is the same as `null` in JSON. If you want a single
|
||||
character string containing a tilde, make sure to enclose it in quotes: `'~'`
|
||||
|
@ -186,11 +160,11 @@ Available extended configuration parameters:
|
|||
|
||||
| Link Option | Explanation |
|
||||
| -- | -- |
|
||||
| `path` | The target for the symlink, the same as in the shortcut syntax (default:null, automatic (see below)) |
|
||||
| `path` | The source for the symlink, the same as in the shortcut syntax (default:null, automatic (see below)) |
|
||||
| `create` | When true, create parent directories to the link as needed. (default:false) |
|
||||
| `relink` | Removes the old target if it's a symlink (default:false) |
|
||||
| `force` | Force removes the old target, file or folder, and forces a new link (default:false) |
|
||||
| `relative` | Use a relative path when creating the symlink (default:false, absolute links) |
|
||||
| `relative` | Use a relative path to the source when creating the symlink (default:false, absolute links) |
|
||||
| `glob` | Treat a `*` character as a wildcard, and perform link operations on all of those matches (default:false) |
|
||||
| `if` | Execute this in your `$SHELL` and only link if it is successful. |
|
||||
|
||||
|
@ -212,7 +186,7 @@ Available extended configuration parameters:
|
|||
|
||||
If the source location is omitted or set to `null`, Dotbot will use the
|
||||
basename of the destination, with a leading `.` stripped if present. This makes
|
||||
the following three config files equivalent:
|
||||
the following config files equivalent:
|
||||
|
||||
```yaml
|
||||
- link:
|
||||
|
@ -244,28 +218,6 @@ the following three config files equivalent:
|
|||
relink: true
|
||||
```
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"link": {
|
||||
"~/bin/ack": null,
|
||||
"~/.vim": null,
|
||||
"~/.vimrc": {
|
||||
"relink": true
|
||||
},
|
||||
"~/.zshrc": {
|
||||
"force": true
|
||||
},
|
||||
"~/.config/": {
|
||||
"glob": true,
|
||||
"path": "config/*",
|
||||
"relink": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### Shell
|
||||
|
||||
Shell commands specify shell commands to be run. Shell commands are run in the
|
||||
|
@ -413,7 +365,7 @@ Packaging
|
|||
License
|
||||
-------
|
||||
|
||||
Copyright (c) 2014-2018 Anish Athalye. Released under the MIT License. See
|
||||
Copyright (c) 2014-2019 Anish Athalye. Released under the MIT License. See
|
||||
[LICENSE.md][license] for details.
|
||||
|
||||
[PyPI]: https://pypi.org/project/dotbot/
|
||||
|
@ -421,6 +373,8 @@ Copyright (c) 2014-2018 Anish Athalye. Released under the MIT License. See
|
|||
[dotfiles-template]: https://github.com/anishathalye/dotfiles_template
|
||||
[inspiration]: https://github.com/anishathalye/dotbot/wiki/Users
|
||||
[managing-dotfiles-post]: http://www.anishathalye.com/2014/08/03/managing-your-dotfiles/
|
||||
[json-equivalent]: https://gist.github.com/anishathalye/84bd6ba1dbe936e05141e07ec45f5fd4
|
||||
[json2yaml]: https://www.json2yaml.com/
|
||||
[wiki]: https://github.com/anishathalye/dotbot/wiki
|
||||
[contributing]: CONTRIBUTING.md
|
||||
[license]: LICENSE.md
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
# is useful because we don't know the name of the python binary.
|
||||
|
||||
''':' # begin python string; this line is interpreted by the shell as `:`
|
||||
which python3 >/dev/null 2>&1 && exec python3 "$0" "$@"
|
||||
which python >/dev/null 2>&1 && exec python "$0" "$@"
|
||||
which python3 >/dev/null 2>&1 && exec python3 "$0" "$@"
|
||||
which python2 >/dev/null 2>&1 && exec python2 "$0" "$@"
|
||||
>&2 echo "error: cannot find python"
|
||||
exit 1
|
||||
|
|
|
@ -84,7 +84,7 @@ class Link(dotbot.Plugin):
|
|||
success &= self._create(destination)
|
||||
if not self._exists(os.path.join(self._context.base_directory(), path)):
|
||||
success = False
|
||||
self._log.warning('Nonexistent target %s -> %s' %
|
||||
self._log.warning('Nonexistent source %s -> %s' %
|
||||
(destination, path))
|
||||
continue
|
||||
if force or relink:
|
||||
|
@ -227,10 +227,10 @@ class Link(dotbot.Plugin):
|
|||
# again, we use absolute_source to check for existence
|
||||
elif not self._exists(absolute_source):
|
||||
if self._is_link(link_name):
|
||||
self._log.warning('Nonexistent target %s -> %s' %
|
||||
self._log.warning('Nonexistent source %s -> %s' %
|
||||
(link_name, source))
|
||||
else:
|
||||
self._log.warning('Nonexistent target for %s : %s' %
|
||||
self._log.warning('Nonexistent source for %s : %s' %
|
||||
(link_name, source))
|
||||
else:
|
||||
self._log.lowinfo('Link exists %s -> %s' % (link_name, source))
|
||||
|
|
Loading…
Reference in a new issue