v0.0.50
This commit is contained in:
parent
edecf87b67
commit
68e061762c
2 changed files with 1 additions and 220 deletions
|
|
@ -1 +1 @@
|
|||
0.0.50-SNAPSHOT
|
||||
0.0.50
|
||||
219
src-bash/bbk
219
src-bash/bbk
|
|
@ -1,219 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
function join { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; }
|
||||
|
||||
# Extract opts
|
||||
print_classpath=false
|
||||
describe=false
|
||||
verbose=false
|
||||
force=false
|
||||
repro=false
|
||||
tree=false
|
||||
pom=false
|
||||
resolve_tags=false
|
||||
help=false
|
||||
resolve_aliases=()
|
||||
classpath_aliases=()
|
||||
main_aliases=()
|
||||
all_aliases=()
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
-J*)
|
||||
shift
|
||||
;;
|
||||
-R*)
|
||||
resolve_aliases+=("${1:2}")
|
||||
shift
|
||||
;;
|
||||
-C*)
|
||||
classpath_aliases+=("${1:2}")
|
||||
shift
|
||||
;;
|
||||
-O*)
|
||||
shift
|
||||
;;
|
||||
-M*)
|
||||
main_aliases+=("${1:2}")
|
||||
shift
|
||||
;;
|
||||
-A*)
|
||||
all_aliases+=("${1:2}")
|
||||
shift
|
||||
;;
|
||||
-Sdeps)
|
||||
shift
|
||||
deps_data="${1}"
|
||||
shift
|
||||
;;
|
||||
-Scp)
|
||||
shift
|
||||
force_cp="${1}"
|
||||
shift
|
||||
;;
|
||||
-Spath)
|
||||
print_classpath=true
|
||||
shift
|
||||
;;
|
||||
-Sverbose)
|
||||
verbose=true
|
||||
shift
|
||||
;;
|
||||
-Sdescribe)
|
||||
describe=true
|
||||
shift
|
||||
;;
|
||||
-Sforce)
|
||||
force=true
|
||||
shift
|
||||
;;
|
||||
-Srepro)
|
||||
repro=true
|
||||
shift
|
||||
;;
|
||||
-Stree)
|
||||
tree=true
|
||||
shift
|
||||
;;
|
||||
-Spom)
|
||||
pom=true
|
||||
shift
|
||||
;;
|
||||
-Sresolve-tags)
|
||||
resolve_tags=true
|
||||
shift
|
||||
;;
|
||||
-S*)
|
||||
echo "Invalid option: $1"
|
||||
exit 1
|
||||
;;
|
||||
-h|--help|"-?")
|
||||
if [[ ${#main_aliases[@]} -gt 0 ]] || [[ ${#all_aliases[@]} -gt 0 ]]; then
|
||||
break
|
||||
else
|
||||
help=true
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Find clojure executable
|
||||
set +e
|
||||
CLOJURE_CMD=$(type -p clojure)
|
||||
set -e
|
||||
if [[ ! -n "$CLOJURE_CMD" ]]; then
|
||||
>&2 echo "Couldn't find 'clojure'."
|
||||
>&2 echo "You can launch Babashka directly using 'bb'."
|
||||
>&2 echo "To use 'bbk', please ensure 'clojure' is installed and on"
|
||||
>&2 echo "your path. See https://clojure.org/guides/getting_started"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if "$help"; then
|
||||
cat <<-END
|
||||
Usage: bbk [dep-opt*] [bb-opt*] [arg*]
|
||||
|
||||
The bbk script is a runner for Babashka which ultimately constructs and
|
||||
invokes a command-line of the form:
|
||||
|
||||
bb --classpath classpath [bb-opt*] [*args]
|
||||
|
||||
The dep-opts are used to build the classpath using the clojure tool:
|
||||
-Ralias... Concatenated resolve-deps aliases, ex: -R:bench:1.9
|
||||
-Calias... Concatenated make-classpath aliases, ex: -C:dev
|
||||
-Malias... Concatenated main option aliases, ex: -M:test
|
||||
-Aalias... Concatenated aliases of any kind, ex: -A:dev:mem
|
||||
-Sdeps EDN Deps data to use as the final deps file
|
||||
-Spath Compute classpath and echo to stdout only
|
||||
-Scp CP Do NOT compute or cache classpath, use this one instead
|
||||
-Srepro Ignore the ~/.clojure/deps.edn config file
|
||||
-Sforce Force recomputation of the classpath (don't use the cache)
|
||||
-Spom Generate (or update existing) pom.xml with deps and paths
|
||||
-Stree Print dependency tree
|
||||
-Sresolve-tags Resolve git coordinate tags to shas and update deps.edn
|
||||
-Sverbose Print important path info to console
|
||||
-Sdescribe Print environment and command parsing info as data
|
||||
|
||||
Additionally, for compatibility with clojure, -Jopt and -Oalias... dep-opts
|
||||
are accepted but ignored.
|
||||
|
||||
Babashka options:
|
||||
END
|
||||
bb -h | tail -n +9
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Execute resolve-tags command
|
||||
if "$resolve_tags"; then
|
||||
"$CLOJURE_CMD" -Sresolve-tags
|
||||
exit
|
||||
fi
|
||||
|
||||
clojure_args=()
|
||||
if [[ -n "$deps_data" ]]; then
|
||||
clojure_args+=("-Sdeps" "$deps_data")
|
||||
fi
|
||||
if [[ ${#resolve_aliases[@]} -gt 0 ]]; then
|
||||
clojure_args+=("-R$(join '' ${resolve_aliases[@]})")
|
||||
fi
|
||||
if [[ ${#classpath_aliases[@]} -gt 0 ]]; then
|
||||
clojure_args+=("-C$(join '' ${classpath_aliases[@]})")
|
||||
fi
|
||||
if [[ ${#main_aliases[@]} -gt 0 ]]; then
|
||||
clojure_args+=("-M$(join '' ${main_aliases[@]})")
|
||||
fi
|
||||
if [[ ${#all_aliases[@]} -gt 0 ]]; then
|
||||
clojure_args+=("-A$(join '' ${all_aliases[@]})")
|
||||
fi
|
||||
if "$repro"; then
|
||||
clojure_args+=("-Srepro")
|
||||
fi
|
||||
if "$force"; then
|
||||
clojure_args+=("-Sforce")
|
||||
fi
|
||||
|
||||
if "$pom"; then
|
||||
if "$verbose"; then
|
||||
clojure_args+=("-Sverbose")
|
||||
fi
|
||||
"$CLOJURE_CMD" "${clojure_args[@]}" -Spom
|
||||
elif "$describe"; then
|
||||
if "$verbose"; then
|
||||
clojure_args+=("-Sverbose")
|
||||
fi
|
||||
"$CLOJURE_CMD" "${clojure_args[@]}" -Sdescribe
|
||||
elif "$tree"; then
|
||||
if "$verbose"; then
|
||||
clojure_args+=("-Sverbose")
|
||||
fi
|
||||
"$CLOJURE_CMD" "${clojure_args[@]}" -Stree
|
||||
else
|
||||
set -f
|
||||
if [[ -n "$force_cp" ]]; then
|
||||
cp="$force_cp"
|
||||
else
|
||||
if "$verbose"; then
|
||||
"$CLOJURE_CMD" "${clojure_args[@]}" -Sverbose -e nil
|
||||
fi
|
||||
cp=`"$CLOJURE_CMD" "${clojure_args[@]}" -Spath`
|
||||
fi
|
||||
if "$print_classpath"; then
|
||||
echo $cp
|
||||
else
|
||||
if [[ ${#main_aliases[@]} -gt 0 ]] || [[ ${#all_aliases[@]} -gt 0 ]]; then
|
||||
# Attempt to extract the main cache filename by parsing the output of -Sverbose
|
||||
cp_file=`"$CLOJURE_CMD" "${clojure_args[@]}" -Sverbose -Spath | grep cp_file | cut -d = -f 2 | sed 's/^ *//g'`
|
||||
main_file="${cp_file%.cp}.main"
|
||||
fi
|
||||
if [[ -e "$main_file" ]]; then
|
||||
main_cache_opts=($(cat "$main_file"))
|
||||
fi
|
||||
exec bb --classpath "$cp" "${main_cache_opts[@]}" "$@"
|
||||
fi
|
||||
fi
|
||||
Loading…
Reference in a new issue