#!/bin/bash
# Skrypt open2 opakowujący ciekawe polecenie 'open' w systemie macOS,
# dzięki czemu jest ono jeszcze bardziej przydatne. Domyślnie polecenie 'open'
# otwiera aplikację odpowiednią dla podanego pliku lub katalogu, określoną
# w powiązaniach Aqua, jednak w ograniczonym zakresie umożliwia
# otwieranie aplikacji zapisanych w katalogu Applications.

# Najpierw spróbujmy bezpośrednio użyć polecenia open
# z zadanymi argumentami.
if ! open "$@" >/dev/null 2>&1 ; then
  if ! open -a "$@" >/dev/null 2>&1 ; then

    # Więcej niż jeden argument? Nie wiadomo, jak go obsłużyć,
    # więc kończymy działanie.
    if [ $# -gt 1 ] ; then
      echo -n "open: nie wiadomo, jak otworzyć pliki $@. " \
        "Skrypt nie otwiera kilku programów jednocześnie." >&2
      exit 1
    else
        case $(echo $1 | tr '[:upper:]' '[:lower:]') in
        activ*|cpu   ) app="Activity Monitor"           ;;
        addr*        ) app="Address Book"               ;;
        chat         ) app="Messages"                   ;;
        dvd          ) app="DVD Player"                 ;;
        excel        ) app="Microsoft Excel"            ;;
        info*        ) app="System Information"         ;;
        prefs        ) app="System Preferences"         ;;
        qt|quicktime ) app="QuickTime Player"           ;;
        word         ) app="Microsoft Word"             ;;
        * ) echo "open: nie wiadomo, jak otworzyć plik $1." >&2
            exit 1
      esac
      echo "Podałeś nazwę $1, ale prawdopodobnie chodziło ci o aplikację $app." >&2
      open -a "$app"
    fi
  fi
fi

exit 0
