AbdulElahGwaith's picture
Upload folder using huggingface_hub
e98c0d7 verified
#!/usr/bin/env bash
#set -euo pipefail
set -euo pipefail
print_usage() {
cat <<'USAGE'
usage: bin/test [--workdir DIR] ECOSYSTEM [COMMAND...]
Run a command inside the Dependabot Docker development image for ECOSYSTEM.
Defaults to executing "bundle exec rspec spec" from the ecosystem directory.
Examples:
bin/test uv # run full UV rspec suite
bin/test uv spec/dependabot/uv/file_updater_spec.rb
bin/test uv bundle exec rspec spec/dependabot/uv/file_updater_spec.rb
bin/test --workdir dependabot-updater uv bundle exec rspec spec/functional
USAGE
}
WORKDIR=""
while [[ $# -gt 0 ]]; do
case "$1" in
-h|--help)
print_usage
exit 0
;;
-w|--workdir)
if [[ $# -lt 2 ]]; then
echo "error: --workdir requires a directory" >&2
print_usage
exit 1
fi
WORKDIR="$2"
shift 2
;;
--)
shift
break
;;
-*)
echo "error: unknown option '$1'" >&2
print_usage
exit 1
;;
*)
break
;;
esac
done
if [[ $# -lt 1 ]]; then
print_usage
exit 1
fi
ECOSYSTEM="$1"
shift
if [[ -z "$WORKDIR" ]]; then
WORKDIR="$ECOSYSTEM"
fi
if [[ $# -eq 0 ]]; then
set -- bundle exec rspec spec
elif [[ "$1" == spec/* ]] || [[ "$1" == *_spec.rb ]]; then
# If first arg looks like a test file, prepend bundle exec rspec
set -- bundle exec rspec "$@"
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
if [[ ! -d "$REPO_ROOT/$ECOSYSTEM" ]]; then
echo "error: ecosystem directory '$ECOSYSTEM' not found" >&2
exit 1
fi
if [[ ! -d "$REPO_ROOT/$WORKDIR" ]]; then
echo "error: workdir '$WORKDIR' not found" >&2
exit 1
fi
printf -v CMD_STR '%q ' "$@"
CMD_STR="${CMD_STR% }"
if [[ -z "$CMD_STR" ]]; then
echo "error: empty command" >&2
exit 1
fi
# Inside the container, 'updater' is renamed to 'dependabot-updater'
CONTAINER_WORKDIR="$WORKDIR"
if [[ "$WORKDIR" == "updater" ]]; then
CONTAINER_WORKDIR="dependabot-updater"
fi
WORKDIR_CMD="cd $(printf '%q' "/home/dependabot/$CONTAINER_WORKDIR") && $CMD_STR"
exec "$SCRIPT_DIR/docker-dev-shell" "$ECOSYSTEM" -- bash -lc "$WORKDIR_CMD"