first push of my config files
[my-dotfiles.git] / bin / is_installed
1 #! /bin/bash
2 #
3 # is_installed - a script to find if a package
4 # is currently installed on Slackware and derivates
5
6 # var
7 SHOWHELP=69
8 E_NOPKGFOUND=70
9 E_NOARGS=71
10 PKGS_PATH="/var/log/packages"
11
12 PROG=$(basename $0)
13
14
15 # colors
16 RED='\033[1;31m'
17 ORANGE='\033[1;33m'
18 GREEN='\033[1;32m'
19 MAGENTA='\033[1;35m'
20 NC='\033[0m'
21
22 function search_file () {
23 SEARCH=$1
24 if [ -z $1 ]; then
25 #we don't have a string to search
26 echo -e "Usage: ${MAGENTA}$PROG ${NC}[file-search] ${GREEN}< filename >"
27 echo -e "${RED}exiting${NC}"
28 exit $E_NOARGS
29 fi
30 finding=$(grep -Hi "$SEARCH" ${PKGS_PATH}/*)
31 if [[ ! -z $finding ]]; then
32 old_IFS=$IFS
33 IFS=$'\n'
34 old_pkgname=""
35 for line in $finding; do
36 pkgname=$(echo $line | cut -d":" -f 1)
37 match=$(echo $line | cut -d":" -f 2)
38 if [[ $pkgname != $old_pkgname ]]; then
39 echo -e "${ORANGE}$(basename $pkgname)${NC}"
40 fi
41 old_pkgname=$pkgname
42 echo -en "\t${GREEN}$match${NC}\n"
43 done
44 IFS=${old_IFS}
45 else
46 echo -e "${ORANGE}no match for pattern ${GREEN}'$SEARCH' ${ORANGE}found"
47 echo -e "${RED}exiting${NC}"
48 exit $E_NOPKGFOUND
49 fi
50 }
51
52 function search_package () {
53 SEARCH=$1
54 if [ -z $1 ]; then
55 #we don't have a string to search
56 echo -e "Usage: ${MAGENTA}$PROG ${GREEN}<filename>"
57 echo -e "${RED}exiting${NC}"
58 exit $E_NOARGS
59 fi
60 finding=$(/bin/ls -1 $PKGS_PATH |grep -i "$SEARCH")
61 if [[ ! -z $finding ]]; then
62 echo -en "${GREEN}$finding\n"
63 echo -e "${NC}"
64 else
65 echo -e "${ORANGE}no package matching ${GREEN}'$SEARCH' ${ORANGE}found"
66 echo -e "${RED}exiting${NC}"
67 exit $E_NOPKGFOUND
68 fi
69 }
70
71 function info () {
72 SEARCH=$1
73 if [ -z $1 ]; then
74 #we don't have a string to search
75 echo -e "Usage: ${MAGENTA}$PROG ${ORANGE}info ${GREEN}<filename>"
76 echo -e "${RED}exiting${NC}"
77 exit $E_NOARGS
78 fi
79 finding=$(/bin/ls -1 $PKGS_PATH |grep -i "$SEARCH")
80 if [[ ! -z $finding ]]; then
81 less $PKGS_PATH/$finding
82 else
83 echo -e "${ORANGE}no package matching ${GREEN}'$SEARCH' ${ORANGE}found"
84 echo -e "${RED}exiting${NC}"
85 exit $E_NOPKGFOUND
86 fi
87 }
88
89 function help () {
90 echo
91 echo -e "${MAGENTA}$PROG${NC} -\tSearch for installed packages in the system"
92 echo -e "\t\tand show which package contains a specific file."
93 echo -e "${GREEN}USAGE:"
94 echo -e "\t${MAGENTA}$PROG ${ORANGE}[ file-search ] [ help ] ${GREEN}< item >"
95 echo -e "\t${MAGENTA}$PROG ${GREEN}<item>${NC} - Search between all installed packages for ${GREEN}item${NC}."
96 echo -e "\t${MAGENTA}$PROG ${ORANGE}file-search ${GREEN}<item>${NC} - Search for ${GREEN}item${NC} inside every package installed."
97 echo -e "\t${MAGENTA}$PROG ${ORANGE}help${NC} - Show this help and exit."
98 echo -e "${NC}"
99 }
100 # controlla se vengono passati parametri
101 if [ -z $1 ]; then
102 help
103 exit $E_NOARGS
104 else
105 case $1 in
106 "file-search" )
107 search_file $2
108 ;;
109 "info" )
110 info $2
111 ;;
112 "help" )
113 help
114 exit $SHOWHELP
115 ;;
116 * )
117 search_package $1
118 ;;
119 esac
120 fi
121
122
123 exit