aboutsummaryrefslogblamecommitdiff
path: root/ports-mgmt/bpkg/files/bpkg.sh.in
blob: 1f9d3343549efeea6ac3ba97c05238f1fd715909 (plain) (tree)
































                                                                             
                                                                    




                      
                                  


              
           
                                                       


              


                              
                                                                              


                      

                                  
                                                                                                
            
 
                         
                                                                                                 
 

                                                          
                                                                                                     
 
                                                      
                                                                             





                                                                                             
                                   
                                                                

                                                                                                          


                                                    
                                                                  
 

                                                                
                                                             






                                                                                                                 
                                                                                                            
                                                             


                                                    



                                                                                                                

                                                              


                                                                      
                                    

                            
            

 































                                                                                                                        

                                                                                                          






                                                                  
                                                             






                                                                                                                 
                                                                                                            
                                                          
                                                                              






                                                                                                                


                                                              



                                                                      





                                    

              
                              
                                                                              
                      

          

                                  
                                                                                                
            
 
                         
                                                                                                 

                                         
                                                          
                                                                                                     

                                                      
                                                                             





                                                                                             
                                   
                                                                

                                                                                                          


                                                    
                                                                  
 




                                                                                   


                                                                      
                                    


                            

 
              
            
                              
                                                                              
                      

          

                                  
                                                                                                


                         
                                                                                                 

                                         
                                                          
                                                                                                     

                                                      
                                                                             





                                                                                             
                                  
                                                                

                                                                                                          


                                                    
                                                            


                                                                
                                                                        
                                                             
                                                                                                        
                                                                                   

                                                                                                                
                                          
                                    
                                                                   
                                                             
                                                                  








                                                                                                
                                                                                        
                                                                                  
                                                                                        

                                              

                                                                                   


                            









                                                                                                              
                                   
                                
                                 

















                                                                                                                  
                                   
                              
                                 










                                                                                                             



                                                                                     
                                                                                                   
                                                                      
                                          
                                                                                                    



                                                                  

                  



               
                         
                                                                                     
 
                                         





                                                                                                             
                    
                                                                   

                  



              
                                                  
                 




                                                               
                         
                                                                                     
 
                                         





                                                                                                             
                    
                                                                   

                  



               
                         
                                                                                     

                                       
                                                                                                     

                                                                              
                                                                                                       






                                                                                        









                                                                                                             

                  



               
                         
                                                                                     
 
                                         





                                                                                                             
                    
                                                                   

                  



               
                         
                                                                                     

                                       
                                                                                                     

                                                                              
                                                                                                       





                                                           





                                                                                                            

                  



               
                         
                                                                                     
 
                                         





                                                                                                             
                    
                                                                   






                         
                                                                                     
 
                                         





                                                                                                             
                    
                                                                   

                  



              
                         
                                                                                     

                                       
                                                                                                     

                                                                              
                                                                                                       





                                                                    





                                                                                                            

                  



              
                                                  
                       




                                                               
                                                                                     
                          
                                                                                      
            



                
                                                                                      


                                                  



               
                         
                                                                                     

                                       
                                                                                                   


                                                                              
                            
                    





                                                                                                            

                  


              

                         
                                                     
            


              






                                                    


                                                                   



                                              
                                                                            

                                                                                                    


              











                                                                                                      








                                                                   
                                                  
                                                                
                             
                          
                                                                    
            
               
                                                            


                    
                                                                   

                             
                                                
                                
                                               

                                
                                                                   

                             
                                              
                                
                                             























                                                                                                      
                                       


              






                                                                   
          

                                                                                
                                                                    

                                                          





                                               
                                                                                           





                                                               
                                                                                     
        
                                       
                                                                                                  












                                                                                                    











                                                                                                            


                  



            
                         
                                                                                     
        
                                       
                                                                                                  












                                                                                                    











                                                                                                            


                  



               
                         
                                                                                     
        
                                       
                                                                                                  












                                                                                                    











                                                                                                            


                  


                




                                                                              
 
                                  

                                                                                                


                         
                                                                                                 


                                                          
                                                                                                     

                                                      
                                                                             







                                                                                             

                                                                                                          





                                                                                             
                                                                                   













                                                                                                                

                                                                                                      
                                                        

                                                                                                      


                                                        
                                                                                                 



                                                
                    




                         
                                                                                     

                                       
                                                                   
                    











                                                                                                                             
                            






























































































































































































                                                                                                                              




                                                                              
                                                                      
                                       








                                                                                
                                                                                      
                     
                              

                               
                                









                                  

                              





                                

                                     





                                 

                                

                               





                               



                                  




                                
                                  

                               

                              



                                        

                            
                             
                            
                                 




                         
#!/bin/sh
# $FreeBSD$

#  Copyright (c) 2007 Andy Kosela <andy.kosela@gmail.com>
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions
#  are met:
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
#  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
#  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
#  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
#  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
#  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
#  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
#  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
#  SUCH DAMAGE.

trap trap_exit 2

pkg=$@

root() {
	if [ `id -u` != 0 ]; then
		echo "bpkg: access denied, root privileges required"
		exit 0
	fi
}

trap_exit() {
	echo -e "\n*** SIGINT ***"
	exit 1
}

missing() {
	echo "bpkg: can't find the port in /usr/ports/"
	exit 0
}

main() {
	root
	if [ -z "$pkg" ]; then
		echo "bpkg: you didn't specify any package to install/upgrade"
		exit 0
	fi

	echo "Available in ports:"
	for e in $pkg; do
		cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }' 
	done

	for z in $pkg; do
		pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`

		for e in $pkg_install; do
			e_stripped=`echo $e | cut -d/ -f2`
			e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`

			if [ -z "$e_installed" ]; then
				echo -n "Do you want to install new $e? [y] "
			else
				echo -n "Do you want to upgrade installed $e_installed? [y] "
			fi
			read key
			case $key in
				n) ;;
				*) 
				if [ ! -z "$e_installed" ]; then
					echo -n "Creating backup package in /usr/obj/$e_installed.tbz... "
					cd /usr/obj/ && pkg_create -b $e_installed
					echo "Done."
				fi

				# Fetch and install binary package

				echo ""
				if [ ! -z "$e_installed" ]; then
					touch /root/ports.lst
					if [ ! -z "`grep $e /root/ports.lst`" ]; then
						echo "It seems you installed this package using ports."
						echo "It is strongly recommended to upgrade it using also ports."
						echo -n "Do you want to cancel this binary upgrade process? [y] "
						read key
						case $key in
							n) 
							sed -i '' s,$e,,g /root/ports.lst 1>/dev/null 2>&1;;
							*) ;;
						esac
					fi

					echo "Upgrading installed package:"
					pkg_delete -f $e_installed 1>/dev/null 2>&1
					if [ ! -z `pkg_info -oq $e_installed 2>/dev/null` ]; then
						echo "*** cannot proceed without first removing the package ***"
					fi
					pkg_add -r $e_stripped
				else
					echo "Installing new package:"
					pkg_add -r $e_stripped
				fi;;
			esac
		done
	done
}

pkg_latest() {
	root
	if [ -z "$pkg" ]; then
		echo "bpkg: you didn't specify any package to install/upgrade"
		exit 0
	fi

	echo "Available in ports:"
	for e in $pkg; do
		cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }' 
	done

	for z in $pkg; do
		pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`

		for e in $pkg_install; do
			e_stripped=`echo $e | cut -d/ -f2`
			e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`

			if [ -z "$e_installed" ]; then
				echo -n "Do you want to install new $e? [y] "
			else
				echo -n "Do you want to upgrade installed $e_installed? [y] "
			fi
			read key
			case $key in
				n) ;;
				*) 
				arch=`uname -m`
				setenv PACKAGESITE ftp://ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-stable/Latest/

				if [ ! -z "$e_installed" ]; then
					echo -n "Creating backup package in /usr/obj/$e_installed.tbz... "
					cd /usr/obj/ && pkg_create -b $e_installed
					echo "Done."
				fi

				# Fetch and install binary package

				echo ""
				if [ ! -z "$e_installed" ]; then
					touch /root/ports.lst
					if [ ! -z "`grep $e /root/ports.lst`" ]; then
						echo "It seems you installed this package using ports."
						echo "It is strongly recommended to upgrade it using also ports."
						echo -n "Do you want to cancel this binary upgrade process? [y] "
						read key
						case $key in
							n) 
							sed -i '' s,$e,,g /root/ports.lst 1>/dev/null 2>&1;;
							*)
							unsetenv PACKAGESITE;;
						esac
					fi

					echo "Upgrading installed package:"
					pkg_delete -f $e_installed 1>/dev/null 2>&1
					if [ ! -z `pkg_info -oq $e_installed 2>/dev/null` ]; then
						echo "*** cannot proceed without first removing the package ***"
					fi
					pkg_add -r $e_stripped
					unsetenv PACKAGESITE
				else
					echo "Installing new package:"
					pkg_add -r $e_stripped
					unsetenv PACKAGESITE
				fi;;
			esac
		done
	done
}

simulation() {
	root
	if [ -z "$pkg" ]; then
		echo "bpkg: you didn't specify any package to install/upgrade"
		exit 0
	fi

	echo "Available in ports:"
	for e in $pkg; do
		cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }' 
	done

	for z in $pkg; do
		pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`

		for e in $pkg_install; do
			e_stripped=`echo $e | cut -d/ -f2`
			e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`

			if [ -z "$e_installed" ]; then
				echo -n "Do you want to install new $e? [y] "
			else
				echo -n "Do you want to upgrade installed $e_installed? [y] "
			fi
			read key
			case $key in
				n) ;;
				*) 
				if [ ! -z "$e_installed" ]; then
					echo -n "Creating backup package in /usr/obj/$e_installed.tbz... "
					cd /usr/obj/ && pkg_create -b $e_installed
					echo "Done."
				fi

				# Fetch and install binary package

				echo ""
				if [ ! -z "$e_installed" ]; then
					echo "Upgrading installed package:"
					pkg_delete -n $e_installed 1>/dev/null 2>&1
					pkg_add -rn $e_stripped
				else
					echo "Installing new package:"
					pkg_add -rn $e_stripped
				fi;;
			esac
		done
	done
}

build_port() {
	root
	if [ -z "$pkg" ]; then
		echo "bpkg: you didn't specify any package to install/upgrade"
		exit 0
	fi

	echo "Available in ports:"
	for e in $pkg; do
		cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }' 
	done

	for z in $pkg; do
		pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`

		for e in $pkg_install; do
			e_stripped=`echo $e | cut -d/ -f2`
			e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`

			if [ -z "$e_installed" ]; then
				echo -n "Do you want to install new $e? [y] "
			else
				echo -n "Do you want to upgrade installed $e_installed? [y] "
			fi
			read key
			case $key in
				n) ;;
				*)
				if [ ! -z "$e_installed" ]; then
					echo -n "Creating backup package in /usr/obj/$e_installed.tbz... "
					cd /usr/obj/ && pkg_create -b $e_installed
					echo "Done."
				fi

				# Install from port (source)

				echo ""
				if [ ! -z "$e_installed" ]; then
					echo "Upgrading installed port:"
					touch /root/ports.lst
					[ -z "`grep $e /root/ports.lst`" ] && echo $e >> /root/ports.lst
					pkg_delete -f $e_installed 1>/dev/null 2>&1
					if [ ! -z `pkg_info -oq $e_installed 2>/dev/null` ]; then
						echo "*** cannot proceed without first removing the package ***"
					fi
				else
					echo "Installing new port:"
					touch /root/ports.lst
					echo $e >> /root/ports.lst
				fi

				echo -n "Do you want to explicitly set config options now? [n] "
				read key2
				case $key2 in
					y) echo -n "Recursive? [n] "
					read key
					case $key in
						y) cd /usr/ports/$e && make config-recursive
						cd /usr/ports/$e && make install clean;;
						*) cd /usr/ports/$e && make config
						cd /usr/ports/$e && make install clean;;
					esac;;

					*) cd /usr/ports/$e && make install clean;;
				esac;;
			esac
		done
	done
}

all() {
	root
	echo ""
	echo -n "Do you want to upgrade all installed packages using binary packages? (interactive mode) [y] "
	read key

	case $key in
		n) echo "Upgrading all ports:"
		all=`pkg_info -aoq`
		pkg_delete -ifa 
	   	for e in $all; do
	   		cd /usr/ports/$e && make install clean
	   	done
	   	exit 0;;
		*) echo "Upgrading all packages:"
	   	all=`ls -l /var/db/pkg/ | awk '{print $9}' | sed 's/\(.*\)-.*/\1/g' | awk '{ORS=" " ;print}'`
	   	pkg_delete -ifa && pkg_add -r $all
	   	exit 0;;
	esac
}

all_non-interactive() {
	root
	echo ""
	echo -n "Do you want to upgrade all installed packages using binary packages? (non-interactive mode) [y] "
	read key

	case $key in
		n) echo "Upgrading all ports:"
		all=`pkg_info -aoq`
		pkg_delete -fa
	   	for e in $all; do
	   		cd /usr/ports/$e && make install clean
	   	done
	   	exit 0;;
		*) echo "Upgrading all packages:"
	   	all=`ls -l /var/db/pkg/ | awk '{print $9}' | sed 's/\(.*\)-.*/\1/g' | awk '{ORS=" " ;print}'`
	   	pkg_delete -fa && pkg_add -r $all
	   	exit 0;;
	esac
}

pkg_info-xI() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
	
		if [ -z "$info" ]; then
			path=`cd /usr/ports && make search path=/$e | grep -w Path | cut -d/ -f4,5`
			echo -e "\033[33m*** not installed ***\033[0m"
			for i in $path; do
				echo "$i: `cat /usr/ports/$i/Makefile | grep COMMENT | cut -d= -f2`"
			done
		else
			echo -e "\033[33m*** installed ***\033[0m"
			pkg_info -I $info 
		fi
	done
	exit 0
}

pkg_info-xL() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`

		if [ ! -z "$info" ]; then
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				pkg_info -L `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5` 
			done	
		else
			echo "bpkg: no installed packages match $e"
		fi
	done
	exit 0
}

pkg_inf() {
	echo -e "\033[33m*** installed ***\033[0m"
	pkg_info 
	echo "***`pkg_info | wc -l` packages installed     ***"
	exit 0
}

pkg_info-xs() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`

		if [ ! -z "$info" ]; then
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				pkg_info -s `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5` 
			done	
		else
			echo "bpkg: no installed packages match $e"
		fi
	done
	exit 0
}

pkg_info-xr() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
	
		if [ -z "$info" ]; then
			path=`cd /usr/ports && make search path=/$e.* | grep -w Path | cut -d/ -f4,5`
			for i in $path; do
				echo -e "\033[33m*** not installed ***\033[0m"
				echo "$i: `cat /usr/ports/$i/Makefile | grep -w COMMENT | cut -d= -f2`"
				echo ""
				echo "Information in ports for `echo $i | cut -d/ -f2`:"
				echo ""
				cd /usr/ports && make search path=/$i$ | grep .*-deps
				echo ""
			done
		else
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				echo "Information in ports for $i:"
				echo ""
				cd /usr/ports && make search path=/$i$ | grep .*-deps
				echo ""
				pkg_info -rR `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
			done
		fi
	done
	exit 0
}

pkg_info-xg() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`

		if [ ! -z "$info" ]; then
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				pkg_info -g `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5` 
			done	
		else
			echo "bpkg: no installed packages match $e"
		fi
	done
	exit 0
}

pkg_info-xf() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
	
		if [ -z "$info" ]; then
			path=`cd /usr/ports && make search path=/$e.* | grep -w Path | cut -d/ -f4,5`
			for i in $path; do
				echo -e "\033[33m*** not installed ***\033[0m"
				echo "$i: `cat /usr/ports/$i/Makefile | grep -w COMMENT | cut -d= -f2`"
				echo ""
				echo "Packing list:"
				cat /usr/ports/$i/pkg-plist
				echo ""
			done
		else
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				pkg_info -f `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
			done
		fi
	done
	exit 0
}

pkg_info-xk() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`

		if [ ! -z "$info" ]; then
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				pkg_info -k `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5` 
			done	
		else
			echo "bpkg: no installed packages match $e"
		fi
	done
	exit 0
}

pkg_info-xD() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`

		if [ ! -z "$info" ]; then
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				pkg_info -D `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5` 
			done	
		else
			echo "bpkg: no installed packages match $e"
		fi
	done
	exit 0
}

pkg_info-x() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
	
		if [ -z "$info" ]; then
			path=`cd /usr/ports && make search path=/$e.* | grep -w Path | cut -d/ -f4,5`
			for i in $path; do
				echo -e "\033[33m*** not installed ***\033[0m"
				echo "$i: `cat /usr/ports/$i/Makefile | grep -w COMMENT | cut -d= -f2`"
				echo ""
				echo "Description:"
				echo "`cat /usr/ports/$i/pkg-descr`"
				echo ""
			done
		else
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				pkg_info `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
			done
		fi
	done
	exit 0
}

pkg_ver() {
	echo -e "\033[33m*** installed ***\033[0m"
	pkg_version -Iv
	echo "***`pkg_info | wc -l` packages installed     ***"
	exit 0
}

pkg_path() {
	path=`cd /usr/ports && make search path=/$pkg | grep -w Path | cut -d/ -f4,5`
	for e in $path; do
		echo "$e" ; cat /usr/ports/$e/Makefile | grep -w COMMENT | cut -d= -f2
	done
	exit 0
}

pkg_makefile() {
	path=`cd /usr/ports && make search path=/$pkg$ | grep -w Path | cut -d/ -f4,5`
	[ -z "$path" ] && missing

	less /usr/ports/$path/Makefile 2>/dev/null
	exit 0
}

make_search() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
	
		if [ -z "$info" ]; then
			path=`cd /usr/ports && make search path=/$e | grep -w Path | cut -d/ -f4,5`
			for i in $path; do
				echo -e "\033[33m*** not installed ***\033[0m"
				cd /usr/ports && make search path=/$i$
			done
		else
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				cd /usr/ports && make search path=/$i$
			done
		fi
	done
	exit 0
}

make_search_S() {
	for e in $pkg; do
		cd /usr/ports && make search path=/$e
	done
	exit 0
}

make_search_info() {
	for e in $pkg; do
		cd /usr/ports && make search info=$e
	done
	exit 0
}

pkg_find() {
	arch=`uname -m`
	sys=`uname -r | cut -d- -f1,2 | tr '[:upper:]' '[:lower:]'`

	for e in $pkg; do
		echo "ls $e*" >> /tmp/bpkg.tmp
	done
	echo "ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-$sys/Latest/"
	ftp -4Va ftp://ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-$sys/Latest/ < /tmp/bpkg.tmp
	rm /tmp/bpkg.tmp
	exit 0
}

pkg_latestftp() {
	arch=`uname -m`

	for e in $pkg; do
		echo "ls $e*" >> /tmp/bpkg.tmp
	done
	echo "ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-stable/Latest/"
	ftp -4Va ftp://ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-stable/Latest/ < /tmp/bpkg.tmp
	rm /tmp/bpkg.tmp
	exit 0
}

pkg_delete-xr() {
	root
	z=`pkg_info -xoQ $pkg 2>/dev/null`

	if [ -z "$z" ]; then
        	echo "bpkg: no installed packages match pattern(s)"
		exit 0
	fi

	echo -e "\033[33m*** installed ***\033[0m"
	pkg_info -xoQ $pkg | awk -F: '{OFS=": " ; print $2, $1}'
	touch /root/ports.lst
	for e in $pkg; do 
		sed -i '' s,.*$e,,g /root/ports.lst 1>/dev/null 2>&1
	done
	echo ""
	echo -n "Do you want to use recursive removal? [n] "
	read key

	case $key in
        	y) echo -n "Do you want to use force removal? [n] "
		read key2
		case $key2 in
			y) pkg_delete -xrfi $pkg
			exit 0;;
			*) pkg_delete -xri $pkg
			exit 0;;
		esac;;
		*) echo -n "Do you want to use force removal? [n] "
		read key2
		case $key2 in
			y) pkg_delete -xf $pkg
			exit 0;;
			*) pkg_delete -x $pkg
			exit 0;;
		esac;;
	esac
}

pkg_clean() {
	root
	echo "Cleaning /usr/ports/distfiles/*"
	rm -rf /usr/ports/distfiles/* 1>/dev/null 2>&1
	echo "Done."
	exit 0
}

pkg_clean2() {
	root
	echo "Cleaning /usr/ports/distfiles/* and /usr/ports/*/*/work/"
	rm -rf /usr/ports/distfiles/* 1>/dev/null 2>&1 ; rm -rf /usr/ports/*/*/work/ 1>/dev/null 2>&1
	echo "Done."
	exit 0
}

pkg_which-() {
	grep "$pkg"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
	sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
	awk -F: '{ print $1 ":\t" $2 }'
	exit 0
}

pkg_backup() {
	root
	z=`pkg_info -xoQ $pkg 2>/dev/null`

	if [ -z "$z" ]; then
        	echo "bpkg: no installed packages match pattern(s)"
		exit 0
	fi

	pkg_install=`pkg_info -xoQ $pkg | cut -d: -f1 | awk '{ORS=" " ; print}'`
	echo "Creating backup package(s) "$pkg_install"in /usr/obj/"
	e=`pkg_info -xoQ $pkg | cut -d: -f1`
	cd /usr/obj/ && pkg_create -xb $e 1>/dev/null 2>&1
	echo "Done."
	exit 0
}	

pkg_time() {
	echo "Packages (date of installation):"
	/bin/ls -lUTt /var/db/pkg/ | awk -F' ' '{ print $6,$7,$8,$9,$10 }' | cut -d/ -f1,5 
	echo "***`pkg_info | wc -l` packages installed     ***"
	exit 0
}

make_showc() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
	
		if [ -z "$info" ]; then
			path=`cd /usr/ports && make search path=/$e.* | grep Path | cut -d/ -f4,5`
			for i in $path; do
				echo -e "\033[33m*** not installed ***\033[0m"
				echo "$i: `cat /usr/ports/$i/Makefile | grep COMMENT | cut -d= -f2`"
				echo ""
				echo -n "Do you want to display config options recursively? [n] "
				read key
				case $key in
					y) cd /usr/ports/$i && make showconfig-recursive;;
					*) cd /usr/ports/$i && make showconfig;; 
				esac
				echo ""
			done
		else
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				echo -n "Do you want to display config options recursively? [n] "
				read key
				case $key in
					y) cd /usr/ports/$i && make showconfig-recursive;;
					*) cd /usr/ports/$i && make showconfig;; 
				esac
				echo ""
			done
		fi
	done
	exit 0
}

make_rmc() {
	root
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
	
		if [ -z "$info" ]; then
			path=`cd /usr/ports && make search path=/$e.* | grep Path | cut -d/ -f4,5`
			for i in $path; do
				echo -e "\033[33m*** not installed ***\033[0m"
				echo "$i: `cat /usr/ports/$i/Makefile | grep COMMENT | cut -d= -f2`"
				echo ""
				echo -n "Do you want to remove config options recursively? [n] "
				read key
				case $key in
					y) cd /usr/ports/$i && make rmconfig-recursive;;
					*) cd /usr/ports/$i && make rmconfig;; 
				esac
				echo ""
			done
		else
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				echo -n "Do you want to remove config options recursively? [n] "
				read key
				case $key in
					y) cd /usr/ports/$i && make rmconfig-recursive;;
					*) cd /usr/ports/$i && make rmconfig;; 
				esac
				echo ""
			done
		fi
	done
	exit 0
}

make_config() {
	root
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
	
		if [ -z "$info" ]; then
			path=`cd /usr/ports && make search path=/$e.* | grep Path | cut -d/ -f4,5`
			for i in $path; do
				echo -e "\033[33m*** not installed ***\033[0m"
				echo "$i: `cat /usr/ports/$i/Makefile | grep COMMENT | cut -d= -f2`"
				echo ""
				echo -n "Do you want to set config options recursively? [n] "
				read key
				case $key in
					y) cd /usr/ports/$i && make config-recursive;;
					*) cd /usr/ports/$i && make config;; 
				esac
				echo ""
			done
		else
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				echo -n "Do you want to set config options recursively? [n] "
				read key
				case $key in
					y) cd /usr/ports/$i && make config-recursive;;
					*) cd /usr/ports/$i && make config;; 
				esac
				echo ""
			done
		fi
	done
	exit 0
}

make_depends() {
	root
	if [ -z "$pkg" ]; then
		echo "bpkg: you didn't specify any package to install/upgrade"
		exit 0
	fi

	echo "Available in ports:"
	for i in $pkg; do
		cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }' 
	done

	for z in $pkg; do
		pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`

		for e in $pkg_install; do
			e_stripped=`echo $e | cut -d/ -f2`
			e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`

			if [ -z "$e_installed" ]; then
				echo -n "Do you want to install new $e? [y] "
			else
				echo -n "Do you want to upgrade installed $e_installed? [y] "
			fi
			read key
			case $key in
				n) ;;
				*) 
				if [ ! -z "$e_installed" ]; then
					echo -n "Creating backup package in /usr/obj/$e_installed.tbz... "
					cd /usr/obj/ && pkg_create -b $e_installed
					echo "Done."
				fi

				echo ""
				if [ ! -z "$e_installed" ]; then
					echo "Upgrading installed port and all dependencies:"
					pkg_delete -f $e_installed 1>/dev/null 2>&1
					if [ ! -z `pkg_info -oq $e_installed 2>/dev/null` ]; then
						echo "*** cannot proceed without first removing the package ***"
						exit 0
					fi
				else
					echo "Installing new port and all dependencies:"
				fi

				echo -n "Do you want to explicitly set config options now? [n] "
				read key2
				case $key2 in
					y) echo -n "Recursive? [n] "
					read key
					case $key in
						y) cd /usr/ports/$e && make config-recursive
						cd /usr/ports/$e && make depends && make install clean
						exit 0;;
						*) cd /usr/ports/$e && make config
						cd /usr/ports/$e && make depends && make install clean
						exit 0;;
					esac;;

					*) cd /usr/ports/$e && make depends && make install clean
					exit 0;;
				esac
	   			exit 0;;
			esac
		done
	done
}

make_ldd() {
	for e in $pkg; do
		info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
	
		if [ -z "$info" ]; then
			echo "bpkg: no installed packages match $e"
		else
			for i in $info; do
				echo -e "\033[33m*** installed ***\033[0m"
				echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`" 
				echo ""
				echo "List of dynamic object dependencies:"
				echo ""
				pkg=`grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
				bin=`pkg_info -L $pkg | awk '/\/usr\/local\/bin/ /\/usr\/local\/sbin/ /usr\/local\/libexec/'`
				for o in $bin; do
					/usr/bin/ldd -a $o
				done
				echo ""
			done
		fi
	done
	exit 0
}

make_ldd_all() {
	echo ""
	echo "List of all missing dynamic object dependencies:"
	echo ""

	for e in `/bin/ls -l /bin/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /bin/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /sbin/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /sbin/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/bin/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/bin/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/games/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/games/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/libexec/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/libexec/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/sbin/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/sbin/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/local/bin/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/local/bin/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/local/libexec/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/local/libexec/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/local/sbin/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/local/sbin/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/X11R6/bin/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/X11R6/bin/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/X11R6/libexec/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/X11R6/libexec/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	for e in `/bin/ls -l /usr/X11R6/sbin/ 2>/dev/null | awk -F' ' '{print $9}'`; do 
		libs=`/usr/bin/ldd -a /usr/X11R6/sbin/$e 2>/dev/null | grep found`
		if [ ! -z "$libs" ]; then 
			grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
			sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
			awk -F: '{ print $1 ":\t" $2 }'
			echo "$libs"
			for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
				grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
				sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
				awk -F: '{ print $2 "\t [" $1 "]" }'
			done
			echo ""
		fi
	done
	exit 0
}

help() {
	echo "bpkg version `pkg_info -xI bpkg | cut -d- -f2 | cut -d' ' -f1`" 
	echo ""
	echo "Usage: bpkg [-bBdDeEfFgiIjkLmMnoOpqQrsSwz] pkg-name ..."
	echo "       bpkg [-aAcChltvZ]"
	echo ""
	echo "Please see the bpkg(8) man page for more information"
	echo ""
	exit 0
}

# End of functions
################################################################################

while getopts b:B:d:D:e:E:f:F:g:i:I:j:k:L:m:M:n:o:O:p:q:Q:r:s:S:w:z:aAcChltvZ opts; do
	case $opts in
		b) pkg=$OPTARG
		   build_port;;
		B) pkg=$OPTARG
		   pkg_backup;;	
		d) pkg=$OPTARG
		   pkg_delete-xr;;
		D) pkg=$OPTARG
		   pkg_info-x;;
		e) pkg=$OPTARG
		   make_config;;
		E) pkg=$OPTARG
		   make_depends;;
		f) pkg=$OPTARG
		   pkg_info-xf;;
		F) pkg=$OPTARG
		   pkg_find;;
		g) pkg=$OPTARG
		   pkg_info-xg;;
		i) pkg=$OPTARG
		   make_search;;
		I) pkg=$OPTARG
		   pkg_info-xI;;
		j) pkg=$OPTARG
		   make_search_info;;
		k) pkg=$OPTARG
		   pkg_info-xk;;
		L) pkg=$OPTARG
		   pkg_info-xL;;
		m) pkg=$OPTARG
		   pkg_makefile;;
		M) pkg=$OPTARG
		   pkg_info-xD;;
		n) pkg=$OPTARG
		   simulation;;
		o) pkg=$OPTARG
		   make_showc;;
		O) pkg=$OPTARG
		   make_rmc;;
		p) pkg=$OPTARG
		   pkg_path;;
		q) pkg=$OPTARG
		   pkg_latest;;
		Q) pkg=$OPTARG
		   pkg_latestftp;;
		r) pkg=$OPTARG
		   pkg_info-xr;;
		s) pkg=$OPTARG
		   pkg_info-xs;;
		S) pkg=$OPTARG
		   make_search_S;;
		w) pkg=$OPTARG
		   pkg_which-;;
		z) pkg=$OPTARG
		   make_ldd;;
		a) all;;
		A) all_non-interactive;;
		c) pkg_clean;;
		C) pkg_clean2;;
		h) help;;
		l) pkg_inf;;
		t) pkg_time;;
		v) pkg_ver;;
		Z) make_ldd_all;;
		*) help;;
	esac
done

main