view bin/rar2zip @ 126:9a15f3d1b5b0

Incorrect test - should test for any existence instead of file.
author Edho Prima Arief <edho@myconan.net>
date Wed, 26 Oct 2011 16:54:25 +0700
parents 94ee419ad047
children
line wrap: on
line source

#!/bin/sh
to_lower() {
  printf "%s" "$1" | tr '[:upper:]' '[:lower:]'
}
full_path() {
  # It all depends on the first character.
  start=${i%${i#?}}
  path=
  case "${start}" in
    /) path="${1}";; # / is absolute. No change.
    *) path="${2}/${1}";; # Anything else must be prefixed with $2 (hopefully $PWD)
  esac
  printf "%s" "${path}" # Return.
}
for i in "$@"; do
  src_ext="${i##*.}"
  src_path="$(full_path "${i}" "${PWD}")"
  if [ -f "${src_path}" ] && [ -r "${src_path}" ] && [ "${src_ext}" != "${i}" ] && [ "$(to_lower ${src_ext})" = "rar" ]; then
    tmpdir=".tmp.${i##*/}"
    if mkdir -p "${tmpdir}"; then
      if 7z x -o"${tmpdir}" -- "${src_path}"; then
        (cd "${tmpdir}" && 7z a -mx=1 -tzip "${src_path%.*}.zip" -- "*";)
      fi
      rm -r "${tmpdir}"
    fi
  else
    echo "Invalid input: ${i}"
  fi
done