mass update.
[my-dotfiles.git] / bin / is_installed
CommitLineData
fdd76fc5 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
7SHOWHELP=69
8E_NOPKGFOUND=70
9E_NOARGS=71
10PKGS_PATH="/var/log/packages"
11
12PROG=$(basename $0)
13
14
15# colors
16RED='\033[1;31m'
17ORANGE='\033[1;33m'
18GREEN='\033[1;32m'
19MAGENTA='\033[1;35m'
20NC='\033[0m'
21
22function 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
52function 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
71function 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
89function 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
101if [ -z $1 ]; then
102 help
103 exit $E_NOARGS
104else
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
120fi
121
122
123exit