diff options
Diffstat (limited to 'libexec')
-rwxr-xr-x | libexec/app-install-file | 30 | ||||
-rwxr-xr-x | libexec/app-resolver-file | 2 |
2 files changed, 20 insertions, 12 deletions
diff --git a/libexec/app-install-file b/libexec/app-install-file index c31f1f4..32b0407 100755 --- a/libexec/app-install-file +++ b/libexec/app-install-file @@ -48,21 +48,29 @@ then usage fi -if [ -d versions/$version ] +re="[.a-zA-Z0-9]" + +if [[ ! $version =~ $re ]] then - echo "Version $version is already installed" - exit 1 + fatal "Invalid version: $version" fi -mkdir -p versions/$version - -echo "Unpacking..." -unzip -q -d versions/$version $file - -if [ ! -d versions/$version/root ] +if [ -d versions/$version ] then - echo "Invalid zip file, did not contain a ./root directory." >&2 - exit 1 + echo "Version $version is already unpacked" +else + mkdir -p versions/$version.tmp + + echo "Unpacking..." + unzip -q -d versions/$version.tmp $file + + if [ ! -d versions/$version.tmp/root ] + then + echo "Invalid zip file, did not contain a 'root' directory." >&2 + rm -rf versions/$version.tmp + exit 1 + fi + mv versions/$version.tmp versions/$version fi if [ -n "$prepend_config" ] diff --git a/libexec/app-resolver-file b/libexec/app-resolver-file index 2b708e8..5972926 100755 --- a/libexec/app-resolver-file +++ b/libexec/app-resolver-file @@ -47,7 +47,7 @@ init() { resolve_version() { path=$(app-conf get file.path) - local s=$(stat -c %Z $path) + local s=$(stat -c %Y $path) app-conf set app.resolved_version "$s" } |