Merge branches 'yaml' and 'basedir'
This commit is contained in:
commit
b5ab016986
10 changed files with 46 additions and 22 deletions
2
.gitmodules
vendored
2
.gitmodules
vendored
|
@ -1,4 +1,4 @@
|
||||||
[submodule "lib/pyyaml"]
|
[submodule "lib/pyyaml"]
|
||||||
path = lib/pyyaml
|
path = lib/pyyaml
|
||||||
url = https://github.com/anishathalye/pyyaml
|
url = https://github.com/yaml/pyyaml
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
|
|
@ -14,10 +14,10 @@ def add_options(parser):
|
||||||
help='suppress most output')
|
help='suppress most output')
|
||||||
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
|
parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
|
||||||
help='enable verbose output')
|
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',
|
dest='base_directory', help='execute commands from within BASEDIR',
|
||||||
metavar='BASEDIR', required=True)
|
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',
|
help='run commands given in CONFIGFILE', metavar='CONFIGFILE',
|
||||||
required=True)
|
required=True)
|
||||||
parser.add_argument('-p', '--plugin', action='append', dest='plugins', default=[],
|
parser.add_argument('-p', '--plugin', action='append', dest='plugins', default=[],
|
||||||
|
@ -55,10 +55,11 @@ def main():
|
||||||
for plugin_path in plugin_paths:
|
for plugin_path in plugin_paths:
|
||||||
abspath = os.path.abspath(plugin_path)
|
abspath = os.path.abspath(plugin_path)
|
||||||
module.load(abspath)
|
module.load(abspath)
|
||||||
tasks = read_config(options.config_file[0])
|
tasks = read_config(options.config_file)
|
||||||
if not isinstance(tasks, list):
|
if not isinstance(tasks, list):
|
||||||
raise ReadingError('Configuration file must be a list of tasks')
|
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)
|
success = dispatcher.dispatch(tasks)
|
||||||
if success:
|
if success:
|
||||||
log.info('\n==> All tasks executed successfully')
|
log.info('\n==> All tasks executed successfully')
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit f30c956c11aa6b5e7827fe5840cc9ed40b938d17
|
Subproject commit 7e026bfee9cc0bddeb1bbca0c4a0bcd826c2bfdf
|
3
test/Vagrantfile
vendored
3
test/Vagrantfile
vendored
|
@ -2,8 +2,7 @@ Vagrant.configure(2) do |config|
|
||||||
config.vm.box = 'debian/stretch64'
|
config.vm.box = 'debian/stretch64'
|
||||||
|
|
||||||
# sync by copying for isolation
|
# sync by copying for isolation
|
||||||
config.vm.synced_folder "..", "/dotbot", type: "rsync",
|
config.vm.synced_folder "..", "/dotbot", type: "rsync"
|
||||||
rsync__exclude: ".git/"
|
|
||||||
|
|
||||||
# disable default synced folder
|
# disable default synced folder
|
||||||
config.vm.synced_folder ".", "/vagrant", disabled: true
|
config.vm.synced_folder ".", "/vagrant", disabled: true
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
DEBUG=${DEBUG:-false}
|
DEBUG=${DEBUG:-false}
|
||||||
USE_VAGRANT=${USE_VAGRANT:-true}
|
USE_VAGRANT=${USE_VAGRANT:-true}
|
||||||
if ${USE_VAGRANT}; then
|
|
||||||
DOTBOT_EXEC=${DOTBOT_EXEC:-"python /dotbot/bin/dotbot"}
|
DOTBOT_EXEC=${DOTBOT_EXEC:-"python /dotbot/bin/dotbot"}
|
||||||
else
|
|
||||||
DOTBOT_EXEC=${DOTBOT_EXEC:-"/dotbot/bin/dotbot"}
|
|
||||||
fi
|
|
||||||
DOTFILES="/home/$(whoami)/dotfiles"
|
DOTFILES="/home/$(whoami)/dotfiles"
|
||||||
INSTALL_CONF='install.conf.yaml'
|
INSTALL_CONF='install.conf.yaml'
|
||||||
INSTALL_CONF_JSON='install.conf.json'
|
INSTALL_CONF_JSON='install.conf.json'
|
||||||
|
@ -51,17 +47,15 @@ initialize() {
|
||||||
|
|
||||||
run_dotbot() {
|
run_dotbot() {
|
||||||
(
|
(
|
||||||
cd "${DOTFILES}"
|
cat > "${DOTFILES}/${INSTALL_CONF}"
|
||||||
cat > "${INSTALL_CONF}"
|
${DOTBOT_EXEC} -d "${DOTFILES}" -c "${DOTFILES}/${INSTALL_CONF}" "${@}"
|
||||||
${DOTBOT_EXEC} -d . -c "${INSTALL_CONF}" "${@}"
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
run_dotbot_json() {
|
run_dotbot_json() {
|
||||||
(
|
(
|
||||||
cd "${DOTFILES}"
|
cat > "${DOTFILES}/${INSTALL_CONF_JSON}"
|
||||||
cat > "${INSTALL_CONF_JSON}"
|
${DOTBOT_EXEC} -d "${DOTFILES}" -c "${DOTFILES}/${INSTALL_CONF_JSON}" "${@}"
|
||||||
${DOTBOT_EXEC} -d . -c "${INSTALL_CONF_JSON}" "${@}"
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ set -e
|
||||||
# set -x
|
# set -x
|
||||||
# set -v
|
# set -v
|
||||||
|
|
||||||
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
export BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
|
||||||
# Prevent execution outside of Travis CI builds
|
# Prevent execution outside of Travis CI builds
|
||||||
if [[ "${TRAVIS}" != true || "${CI}" != true ]]; then
|
if [[ "${TRAVIS}" != true || "${CI}" != true ]]; then
|
||||||
|
|
|
@ -19,7 +19,7 @@ EOF
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'run' '
|
test_expect_success 'run' '
|
||||||
run_dotbot --plugin-dir plugins <<EOF
|
run_dotbot --plugin-dir ${DOTFILES}/plugins <<EOF
|
||||||
- test: ~
|
- test: ~
|
||||||
EOF
|
EOF
|
||||||
'
|
'
|
||||||
|
|
|
@ -18,7 +18,7 @@ EOF
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'run' '
|
test_expect_success 'run' '
|
||||||
run_dotbot --plugin test.py <<EOF
|
run_dotbot --plugin ${DOTFILES}/test.py <<EOF
|
||||||
- test: ~
|
- test: ~
|
||||||
EOF
|
EOF
|
||||||
'
|
'
|
||||||
|
|
29
test/tests/shim.bash
Normal file
29
test/tests/shim.bash
Normal file
|
@ -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
|
||||||
|
'
|
|
@ -9,6 +9,7 @@ DOTBOT_BIN="bin/dotbot"
|
||||||
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
cd "${BASEDIR}"
|
cd "${BASEDIR}"
|
||||||
|
git -C "${DOTBOT_DIR}" submodule sync --recursive
|
||||||
git submodule update --init --recursive "${DOTBOT_DIR}"
|
git submodule update --init --recursive "${DOTBOT_DIR}"
|
||||||
|
|
||||||
"${BASEDIR}/${DOTBOT_DIR}/${DOTBOT_BIN}" -d "${BASEDIR}" -c "${CONFIG}" "${@}"
|
"${BASEDIR}/${DOTBOT_DIR}/${DOTBOT_BIN}" -d "${BASEDIR}" -c "${CONFIG}" "${@}"
|
||||||
|
|
Loading…
Reference in a new issue