#!/bin/bash
PROGRAM=$(basename $0)
BAZADANYCH=$HOME/etc/sejf.gpg

wczytaj_haslo () {
    # Umieść nazwę użytkownika (pole 1) w schowku
    echo "$1" | cut -f1 | tr -d '\n' | xclip -selection clipboard
    # Umieść hasło (pole 2) w podstawowej selekcji X
    echo "$1" | cut -f2 | tr -d '\n' | xclip -selection primary
    # Przekaż użytkownikowi informację zwrotną
    echo "$PROGRAM: znaleziono" $(echo "$1" | cut -f3- --output-delimiter ': ')
    echo "$PROGRAM: wczytano nazwę użytkownika i hasło do selekcji X"
}

if [ $# -ne 1 ]; then
    >&2 echo "$PROGRAM: wyszukuje hasła"
    >&2 echo "Użycie: $PROGRAM łańcuch"
    exit 1
fi
szukanylancuch="$1"

# Zapisz odszyfrowany tekst w zmiennej
odszyfrowano=$(gpg -d -q "$BAZADANYCH")
if [ $? -ne 0 ]; then
    >&2 echo "$PROGRAM: nie można odszyfrować pliku $BAZADANYCH"
    exit 1
fi

# Szukaj dokładnych dopasowań w trzeciej kolumnie
dopasowano=$(echo "$odszyfrowano" | awk '$3~/^'$szukanylancuch'$/')
if [ -n "$dopasowano" ]; then
    wczytaj_haslo "$dopasowano"
    exit $?
fi

# Szukaj dowolnego dopasowania
dopasowano=$(echo "$odszyfrowano" | awk "/$szukanylancuch/")
if [ -z "$dopasowano" ]; then
    >&2 echo "$PROGRAM: brak dopasowań"
    exit 1
fi

# Zlicz dopasowania
liczba=$(echo "$dopasowano" | wc -l)

case "$liczba" in
    0)
        >&2 echo "$PROGRAM: brak dopasowań"
        exit 1
        ;;
    1)
        wczytaj_haslo "$dopasowano"
        exit $?
        ;;
    *)
        >&2 echo "$PROGRAM: wiele dopasowań z następującymi kluczami:"
        echo "$dopasowano" | cut -f3
        >&2 echo "$PROGRAM: uruchom ponownie ten skrypt, podając jeden z kluczy"
        exit
        ;;
esac
