diff --git a/README.md b/README.md index f7fccdf..b8705f4 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,12 @@ mapped to extended configuration dictionaries. | `if` | Execute this in your `$SHELL` and only link if it is successful. | | `ignore-missing` | Do not fail if the source is missing and create the link anyway (default: false) | +Dotbot uses [glob.glob](https://docs.python.org/3/library/glob.html#glob.glob) +to resolve glob paths. However, due to its design, using a glob path such as +`config/*` for example, will not match items that being with `.`. To +specifically capture items that being with `.`, you will need to use a path +like this: `config/.*`. + #### Example ```yaml diff --git a/dotbot/plugins/link.py b/dotbot/plugins/link.py index 6f2b562..374dc76 100644 --- a/dotbot/plugins/link.py +++ b/dotbot/plugins/link.py @@ -76,6 +76,8 @@ class Link(dotbot.Plugin): else: self._log.lowinfo("Globs from '" + path + "': " + str(glob_results)) glob_base = path[:glob_star_loc] + if glob_base.endswith('/.') or glob_base == '.': + glob_base = path[:glob_star_loc - 1] for glob_full_item in glob_results: glob_item = glob_full_item[len(glob_base):] glob_link_destination = os.path.join(destination, glob_item) diff --git a/test/tests/link-glob-multi-star.bash b/test/tests/link-glob-multi-star.bash index 11ae740..3a2ca71 100644 --- a/test/tests/link-glob-multi-star.bash +++ b/test/tests/link-glob-multi-star.bash @@ -1,4 +1,4 @@ -test_description='link glob' +test_description='link glob multi star' . '../test-lib.bash' test_expect_success 'setup' ' diff --git a/test/tests/link-glob.bash b/test/tests/link-glob.bash index f1c813d..866d550 100644 --- a/test/tests/link-glob.bash +++ b/test/tests/link-glob.bash @@ -45,3 +45,49 @@ grep "apple" ~/bin/a && grep "banana" ~/bin/b && grep "cherry" ~/bin/c ' + +test_expect_success 'setup 3' ' +rm -rf ~/bin && +echo "dot_apple" > ${DOTFILES}/bin/.a && +echo "dot_banana" > ${DOTFILES}/bin/.b && +echo "dot_cherry" > ${DOTFILES}/bin/.c +' + +test_expect_success 'run 3' ' +run_dotbot -v < ${DOTFILES}/.a && +echo "dot_banana" > ${DOTFILES}/.b && +echo "dot_cherry" > ${DOTFILES}/.c +' + +test_expect_success 'run 4' ' +run_dotbot -v <