Enable use of categories for packages
This commit is contained in:
		
							parent
							
								
									da2aa65f7c
								
							
						
					
					
						commit
						e8ac82955e
					
				
					 1 changed files with 61 additions and 5 deletions
				
			
		
							
								
								
									
										66
									
								
								bs.sh
									
										
									
									
									
								
							
							
						
						
									
										66
									
								
								bs.sh
									
										
									
									
									
								
							| 
						 | 
					@ -130,6 +130,43 @@ usercheck() {
 | 
				
			||||||
			--yesno "The user \`$name\` already exists on this system. LARBS can install for a user already existing.\\n\\nLARBS will change $name's password to the one you just gave." 14 70
 | 
								--yesno "The user \`$name\` already exists on this system. LARBS can install for a user already existing.\\n\\nLARBS will change $name's password to the one you just gave." 14 70
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					selectcategories() {
 | 
				
			||||||
 | 
						([ -f "$progsfile" ] && cp "$progsfile" /tmp/progs.csv) ||
 | 
				
			||||||
 | 
							curl -Ls "$progsfile" | sed '/^#/d' >/tmp/progs.csv
 | 
				
			||||||
 | 
						selectedcats=$(whiptail --title "Select package categories" --separate-output \
 | 
				
			||||||
 | 
							--checklist "Categories" 20 100 12 \
 | 
				
			||||||
 | 
							"amd" "AMD specific packages" ON \
 | 
				
			||||||
 | 
							"anki" "Anki" ON \
 | 
				
			||||||
 | 
							"backup" "Packages for backing the system up (borg)" ON \
 | 
				
			||||||
 | 
							"crypto" "Cryptocurrencies" ON \
 | 
				
			||||||
 | 
							"cysec" "Packages i use for my work in Cybersecurity" ON \
 | 
				
			||||||
 | 
							"dumb" "silly things I like to have" ON \
 | 
				
			||||||
 | 
							"editing" "Audio/video editing" ON \
 | 
				
			||||||
 | 
							"electronics" "Packages used for electronics and FPGA work" ON \
 | 
				
			||||||
 | 
							"fonts" "Fonts" ON \
 | 
				
			||||||
 | 
							"go" "Packages for work with golang" ON \
 | 
				
			||||||
 | 
							"gui" "Packages needed for my GUI and dotfiles to work" ON \
 | 
				
			||||||
 | 
							"haskell" "Haskell and things needed for it" ON \
 | 
				
			||||||
 | 
							"latex" "LaTeX" ON \
 | 
				
			||||||
 | 
							"lisp" "All sorts of Lisps" ON \
 | 
				
			||||||
 | 
							"lowlev" "Packages for programming in low-level languages (C,C++,Rust,etc)" ON \
 | 
				
			||||||
 | 
							"mail" "Mail client and related programs" ON \
 | 
				
			||||||
 | 
							"matrix" "Matrix clients" ON \
 | 
				
			||||||
 | 
							"ml" "Machine learning" ON \
 | 
				
			||||||
 | 
							"office" "Office packages" ON \
 | 
				
			||||||
 | 
							"passwords" "Password manager and related" ON \
 | 
				
			||||||
 | 
							"python" "Packages for python programming" ON \
 | 
				
			||||||
 | 
							"retro" "Retrocomputing" ON \
 | 
				
			||||||
 | 
							"rss" "RSS" ON \
 | 
				
			||||||
 | 
							"stats" "Statistics (R)" ON \
 | 
				
			||||||
 | 
							"system" "Packages I expect on my system" ON \
 | 
				
			||||||
 | 
							"tcl" "Tcl/Tk and related" ON \
 | 
				
			||||||
 | 
							"torrent" "Torrent clients" ON \
 | 
				
			||||||
 | 
							"virtual" "Virtual machine packages" ON \
 | 
				
			||||||
 | 
							"webdev" "Web-development" ON \
 | 
				
			||||||
 | 
							"www" "Browsers" ON 3>&1 1>&2 2>&3 3>&1) || exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
preinstallmsg() {
 | 
					preinstallmsg() {
 | 
				
			||||||
	whiptail --title "Let's get this party started!" --yes-button "Let's go!" \
 | 
						whiptail --title "Let's get this party started!" --yes-button "Let's go!" \
 | 
				
			||||||
		--no-button "No, nevermind!" \
 | 
							--no-button "No, nevermind!" \
 | 
				
			||||||
| 
						 | 
					@ -193,15 +230,31 @@ manualinstall() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
maininstallations() {
 | 
					maininstallations() {
 | 
				
			||||||
	([ -f "$progsfile" ] && cp "$progsfile" /tmp/progs.csv) ||
 | 
					 | 
				
			||||||
		curl -Ls "$progsfile" | sed '/^#/d' >/tmp/progs.csv
 | 
					 | 
				
			||||||
	total=$(wc -l </tmp/progs.csv)
 | 
					 | 
				
			||||||
	aurinstalled=$(pacman -Qqm)
 | 
						aurinstalled=$(pacman -Qqm)
 | 
				
			||||||
	# Field 1: install-type, Field 2: program, Field 3: comment
 | 
						# Field 1: install-type, Field 2: program, Field 3: comment
 | 
				
			||||||
	# Install pacman packages:
 | 
						# Install pacman packages:
 | 
				
			||||||
	pacman --noconfirm -Rnd vim # Remove vim as it will conflict with gvim
 | 
						pacman --noconfirm -Rnd vim # Remove vim as it will conflict with gvim
 | 
				
			||||||
	awk -F "," '$1 ~ /^$/ { print $2 }'  </tmp/progs.csv | xargs pacman --noconfirm --needed -S
 | 
						awk -F',' -v tags="${selectedcats}" '
 | 
				
			||||||
	awk -F "," '$1 ~ /^A$/ { print $2 }' </tmp/progs.csv | xargs sudo -u "$name" "$aurhelper" --noconfirm --needed -S
 | 
						BEGIN {
 | 
				
			||||||
 | 
						    # Convert selectedcats string to an array in awk
 | 
				
			||||||
 | 
						    n = split(tags, sel_cats, " ");
 | 
				
			||||||
 | 
						    for (i = 1; i <= n; i++) {
 | 
				
			||||||
 | 
						        selected[sel_cats[i]] = 1;
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						    # Assuming tags are in the 3rd column
 | 
				
			||||||
 | 
						    split($3, tag_list, "-");
 | 
				
			||||||
 | 
						    for (i in tag_list) {
 | 
				
			||||||
 | 
						        if (tag_list[i] in selected) {
 | 
				
			||||||
 | 
						            print $0;
 | 
				
			||||||
 | 
						            next;
 | 
				
			||||||
 | 
						        }
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
						}' /tmp/progs.csv >/tmp/filtered-progs.csv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						awk -F "," '$1 ~ /^$/ { print $2 }'  </tmp/filtered-progs.csv | xargs pacman --noconfirm --needed -S
 | 
				
			||||||
 | 
						awk -F "," '$1 ~ /^A$/ { print $2 }' </tmp/filtered-progs.csv | xargs sudo -u "$name" "$aurhelper" --noconfirm --needed -S
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
finalize() {
 | 
					finalize() {
 | 
				
			||||||
| 
						 | 
					@ -226,6 +279,9 @@ getuserandpass || error "User exited."
 | 
				
			||||||
# Give warning if user already exists.
 | 
					# Give warning if user already exists.
 | 
				
			||||||
usercheck || error "User exited."
 | 
					usercheck || error "User exited."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Select package categories to install
 | 
				
			||||||
 | 
					selectcategories || error "User exited."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Last chance for user to back out before install.
 | 
					# Last chance for user to back out before install.
 | 
				
			||||||
preinstallmsg || error "User exited."
 | 
					preinstallmsg || error "User exited."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue