-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathimport.bash
executable file
·40 lines (30 loc) · 1.51 KB
/
import.bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env bash
set -euo pipefail; if [ -n "${DEBUG-}" ]; then set -x; fi
project_directory="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
tmpdir=$(mktemp -d);
filename=$(basename "$1")
name="${filename%.*}"
unzip "$1" -d "$tmpdir"
activitydir="$project_directory"/h5p-test/activities/"$name"
libdir="$project_directory"/h5p-test/libraries
mkdir "$activitydir"
mv "$tmpdir"/content "$tmpdir"/h5p.json "$activitydir"
function libversion() {
jq -r .patchVersion < "$1"/library.json
}
echo "Processing libraries"
for lib in "$tmpdir"/*; do
libname=$(basename "$lib")
if [ -d "$lib" ] && [ ! -d "$libdir"/"$libname" ]; then
echo "$libname not found, adding"
mv "$lib" "$libdir"/
elif [ -d "$lib" ] && [ -d "$libdir"/"$libname" ] && [ "$(libversion "$lib")" -gt "$(libversion "$libdir"/"$libname")" ]; then
echo "$libname has a newer version ($(libversion "$lib")) than existing ($(libversion "$libdir"/"$libname")). upgrading."
rm -r "$libdir"/"${libname:?}"
mv "$lib" "$libdir"/
elif [ -d "$lib" ] && [ -d "$libdir"/"$libname" ] && [ "$(libversion "$lib")" -lt "$(libversion "$libdir"/"$libname")" ]; then
echo "$libname has an older version ($(libversion "$lib")) than existing ($(libversion "$libdir"/"$libname")). skipping."
elif [ -d "$lib" ] && [ -d "$libdir"/"$libname" ] && [ "$(libversion "$lib")" -eq "$(libversion "$libdir"/"$libname")" ]; then
echo "$libname has same version ($(libversion "$lib")) as existing ($(libversion "$libdir"/"$libname")). skipping."
fi
done