diff options
-rw-r--r-- | .gitmodules | 2 | ||||
-rw-r--r-- | dotbot/cli.py | 9 | ||||
m--------- | lib/pyyaml | 0 | ||||
-rw-r--r-- | test/Vagrantfile | 3 | ||||
-rw-r--r-- | test/test-lib.bash | 16 | ||||
-rwxr-xr-x | test/test_travis | 2 | ||||
-rw-r--r-- | test/tests/plugin-dir.bash | 2 | ||||
-rw-r--r-- | test/tests/plugin.bash | 2 | ||||
-rw-r--r-- | test/tests/shim.bash | 29 | ||||
-rwxr-xr-x | tools/git-submodule/install | 1 |
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}" "${@}" |