summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules2
-rw-r--r--dotbot/cli.py9
m---------lib/pyyaml0
-rw-r--r--test/Vagrantfile3
-rw-r--r--test/test-lib.bash16
-rwxr-xr-xtest/test_travis2
-rw-r--r--test/tests/plugin-dir.bash2
-rw-r--r--test/tests/plugin.bash2
-rw-r--r--test/tests/shim.bash29
-rwxr-xr-xtools/git-submodule/install1
10 files changed, 45 insertions, 21 deletions
diff --git a/.gitmodules b/.gitmodules
index 111c39c..ffb9af9 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,4 @@
[submodule "lib/pyyaml"]
path = lib/pyyaml
- url = https://github.com/anishathalye/pyyaml
+ url = https://github.com/yaml/pyyaml
ignore = dirty
diff --git a/dotbot/cli.py b/dotbot/cli.py
index d77ab42..8febb26 100644
--- a/dotbot/cli.py
+++ b/dotbot/cli.py
@@ -14,10 +14,10 @@ def add_options(parser):
help='suppress most output')
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
help='enable verbose output')
- parser.add_argument('-d', '--base-directory', nargs=1,
+ parser.add_argument('-d', '--base-directory',
dest='base_directory', help='execute commands from within BASEDIR',
metavar='BASEDIR', required=True)
- parser.add_argument('-c', '--config-file', nargs=1, dest='config_file',
+ parser.add_argument('-c', '--config-file', dest='config_file',
help='run commands given in CONFIGFILE', metavar='CONFIGFILE',
required=True)
parser.add_argument('-p', '--plugin', action='append', dest='plugins', default=[],
@@ -55,10 +55,11 @@ def main():
for plugin_path in plugin_paths:
abspath = os.path.abspath(plugin_path)
module.load(abspath)
- tasks = read_config(options.config_file[0])
+ tasks = read_config(options.config_file)
if not isinstance(tasks, list):
raise ReadingError('Configuration file must be a list of tasks')
- dispatcher = Dispatcher(options.base_directory[0])
+ os.chdir(options.base_directory)
+ dispatcher = Dispatcher(options.base_directory)
success = dispatcher.dispatch(tasks)
if success:
log.info('\n==> All tasks executed successfully')
diff --git a/lib/pyyaml b/lib/pyyaml
-Subproject f30c956c11aa6b5e7827fe5840cc9ed40b938d1
+Subproject 7e026bfee9cc0bddeb1bbca0c4a0bcd826c2bfd
diff --git a/test/Vagrantfile b/test/Vagrantfile
index 8ce1739..05d6747 100644
--- a/test/Vagrantfile
+++ b/test/Vagrantfile
@@ -2,8 +2,7 @@ Vagrant.configure(2) do |config|
config.vm.box = 'debian/stretch64'
# sync by copying for isolation
- config.vm.synced_folder "..", "/dotbot", type: "rsync",
- rsync__exclude: ".git/"
+ config.vm.synced_folder "..", "/dotbot", type: "rsync"
# disable default synced folder
config.vm.synced_folder ".", "/vagrant", disabled: true
diff --git a/test/test-lib.bash b/test/test-lib.bash
index 008c2f8..7b5e9ca 100644
--- a/test/test-lib.bash
+++ b/test/test-lib.bash
@@ -1,10 +1,6 @@
DEBUG=${DEBUG:-false}
USE_VAGRANT=${USE_VAGRANT:-true}
-if ${USE_VAGRANT}; then
- DOTBOT_EXEC=${DOTBOT_EXEC:-"python /dotbot/bin/dotbot"}
-else
- DOTBOT_EXEC=${DOTBOT_EXEC:-"/dotbot/bin/dotbot"}
-fi
+DOTBOT_EXEC=${DOTBOT_EXEC:-"python /dotbot/bin/dotbot"}
DOTFILES="/home/$(whoami)/dotfiles"
INSTALL_CONF='install.conf.yaml'
INSTALL_CONF_JSON='install.conf.json'
@@ -51,17 +47,15 @@ initialize() {
run_dotbot() {
(
- cd "${DOTFILES}"
- cat > "${INSTALL_CONF}"
- ${DOTBOT_EXEC} -d . -c "${INSTALL_CONF}" "${@}"
+ cat > "${DOTFILES}/${INSTALL_CONF}"
+ ${DOTBOT_EXEC} -d "${DOTFILES}" -c "${DOTFILES}/${INSTALL_CONF}" "${@}"
)
}
run_dotbot_json() {
(
- cd "${DOTFILES}"
- cat > "${INSTALL_CONF_JSON}"
- ${DOTBOT_EXEC} -d . -c "${INSTALL_CONF_JSON}" "${@}"
+ cat > "${DOTFILES}/${INSTALL_CONF_JSON}"
+ ${DOTBOT_EXEC} -d "${DOTFILES}" -c "${DOTFILES}/${INSTALL_CONF_JSON}" "${@}"
)
}
diff --git a/test/test_travis b/test/test_travis
index 20ec1ae..79439e1 100755
--- a/test/test_travis
+++ b/test/test_travis
@@ -6,7 +6,7 @@ set -e
# set -x
# set -v
-BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
+export BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# Prevent execution outside of Travis CI builds
if [[ "${TRAVIS}" != true || "${CI}" != true ]]; then
diff --git a/test/tests/plugin-dir.bash b/test/tests/plugin-dir.bash
index 299f144..f3a5e94 100644
--- a/test/tests/plugin-dir.bash
+++ b/test/tests/plugin-dir.bash
@@ -19,7 +19,7 @@ EOF
'
test_expect_success 'run' '
-run_dotbot --plugin-dir plugins <<EOF
+run_dotbot --plugin-dir ${DOTFILES}/plugins <<EOF
- test: ~
EOF
'
diff --git a/test/tests/plugin.bash b/test/tests/plugin.bash
index 960e9ce..bdf0c7f 100644
--- a/test/tests/plugin.bash
+++ b/test/tests/plugin.bash
@@ -18,7 +18,7 @@ EOF
'
test_expect_success 'run' '
-run_dotbot --plugin test.py <<EOF
+run_dotbot --plugin ${DOTFILES}/test.py <<EOF
- test: ~
EOF
'
diff --git a/test/tests/shim.bash b/test/tests/shim.bash
new file mode 100644
index 0000000..2ed7d54
--- /dev/null
+++ b/test/tests/shim.bash
@@ -0,0 +1,29 @@
+test_description='install shim works'
+. '../test-lib.bash'
+
+test_expect_success 'setup' '
+cd ${DOTFILES}
+git init
+if ${USE_VAGRANT}; then
+ git submodule add /dotbot dotbot
+else
+ git submodule add ${BASEDIR} dotbot
+fi
+cp ./dotbot/tools/git-submodule/install .
+echo "pear" > ${DOTFILES}/foo
+'
+
+test_expect_success 'run' '
+cat > ${DOTFILES}/install.conf.yaml <<EOF
+- link:
+ ~/.foo: foo
+EOF
+if ! ${USE_VAGRANT}; then
+ sed -i "" "1 s/sh$/python/" ${DOTFILES}/dotbot/bin/dotbot
+fi
+${DOTFILES}/install
+'
+
+test_expect_success 'test' '
+grep "pear" ~/.foo
+'
diff --git a/tools/git-submodule/install b/tools/git-submodule/install
index b1baa33..f11b48b 100755
--- a/tools/git-submodule/install
+++ b/tools/git-submodule/install
@@ -9,6 +9,7 @@ DOTBOT_BIN="bin/dotbot"
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "${BASEDIR}"
+git -C "${DOTBOT_DIR}" submodule sync --recursive
git submodule update --init --recursive "${DOTBOT_DIR}"
"${BASEDIR}/${DOTBOT_DIR}/${DOTBOT_BIN}" -d "${BASEDIR}" -c "${CONFIG}" "${@}"