scripts

scripts
git clone git://git.wimdupont.com/scripts.git
Log | Files | Refs | README | LICENSE

sinstaller (2934B)


      1 #!/bin/bash
      2 
      3 source ~/.config/scripts/properties
      4 
      5 all=0
      6 save_diff=0
      7 while getopts "as" arg; do
      8 	case $arg in
      9 		a) all=1;;
     10 		s) save_diff=1;;
     11 	esac
     12 done
     13 
     14 shift $((OPTIND-1))
     15 
     16 program=$1
     17 
     18 readonly ROOT_DIR=$HOME/repositories/suckless
     19 readonly GIT_BASE_URL=https://git.suckless.org
     20 
     21 PROGRAMS=(
     22 	"dmenu"
     23 	"dwm"
     24 	"dwmstatus"
     25 	"ii"
     26 	"libgrapheme"
     27 	"lchat"
     28 	"sic"
     29 	"slock"
     30 	"st"
     31 	"surf"
     32 )
     33 
     34 PATCHES=(
     35 	"st;https://st.suckless.org/patches/alpha_focus_highlight/st-focus-20230610-68d1ad9.diff"
     36 	"st;https://st.suckless.org/patches/scrollback/st-scrollback-0.8.5.diff"
     37 	"dwm;https://dwm.suckless.org/patches/statuspadding/dwm-statuspadding-6.3.diff"
     38 	"dwm;https://dwm.suckless.org/patches/alpha/dwm-fixborders-6.2.diff"
     39 	"slock;https://tools.suckless.org/slock/patches/background-image/slock-background-image-20220318-1c5a538.diff"
     40 	"surf;https://surf.suckless.org/patches/homepage/surf-2.0-homepage.diff"
     41 	"surf;https://surf.suckless.org/patches/playexternal/surf-playexternal-20190724-b814567.diff"
     42 	"surf;https://surf.suckless.org/patches/quit-hotkey/surf-quit_hotkey-20210830-11dca18.diff"
     43 )
     44 
     45 download(){
     46 	declare -r PROGRAM=$1
     47 
     48 	mkdir -p "${ROOT_DIR}"
     49 	mkdir -p "${ROOT_DIR}/patches/$PROGRAM"
     50 
     51 	cd "${ROOT_DIR}"
     52 
     53 	git clone "${GIT_BASE_URL}/$PROGRAM"
     54 	cd $PROGRAM
     55 	git checkout -b patched
     56 
     57 	download_patches "$PROGRAM"
     58 }
     59 
     60 download_patches(){
     61 	declare -r PROGRAM=$1
     62 	rm "$ROOT_DIR/patches/$PROGRAM/"*
     63 	i=0
     64 	for patch in "${PATCHES[@]}"
     65 	do
     66 		name=$(echo "$patch" | cut -f1 -d ';')
     67 		
     68 		if [[ "${name}" == "${PROGRAM}" ]]; then
     69 			((i++))
     70 			patch_url=$(echo "$patch" | cut -f2 -d ';')
     71 			curl "$patch_url" > "$ROOT_DIR/patches/$PROGRAM/$i-${patch_url##*/}"
     72 		fi
     73 	done
     74 }
     75 
     76 cleanup_and_patch(){
     77 	declare -r PROGRAM=$1
     78 	cd "${ROOT_DIR}/$PROGRAM" 	
     79 
     80 	git checkout patched
     81 
     82 	git reset --hard HEAD
     83 	git clean -xf
     84 
     85 	git checkout surf-webkit2
     86 	git checkout master
     87 	git pull
     88 
     89 	git branch -D patched
     90 	git checkout -b patched
     91 	
     92 	for file in "$ROOT_DIR/patches/$PROGRAM/"*; do
     93 		test -f $file || continue;
     94 		patch -i $file
     95 	done
     96 
     97 	git add .
     98 	git -c commit.gpgsign=false commit -m "patched"
     99 }
    100 
    101 patch_config(){
    102 	declare -r PROGRAM=$1
    103 	cd "${ROOT_DIR}/$PROGRAM" 	
    104 
    105 	git checkout patched
    106 
    107 	config_file="$ROOT_DIR/patches-config/$PROGRAM-config.diff"
    108 	test -f "$config_file" && patch -i "$config_file"
    109 }
    110 
    111 
    112 save_config(){
    113 	declare -r PROGRAM=$1
    114 	cd "${ROOT_DIR}/$PROGRAM" 	
    115 	git diff > "$ROOT_DIR/patches-config/$PROGRAM-config.diff"
    116 }
    117 
    118 execute_installer(){
    119 	declare -r PROGRAM=$1
    120 
    121 	[[ ! -d "${ROOT_DIR}/$PROGRAM" ]] && download $PROGRAM
    122 	test "$save_diff" == 1 && save_config $PROGRAM
    123 	cleanup_and_patch $PROGRAM
    124 	patch_config $PROGRAM
    125 
    126 	cd "${ROOT_DIR}/$PROGRAM" 	
    127 	sudo make clean install
    128 }
    129 
    130 test "$all" == 0 && [ -z $program ] && notify-send "Insufficient parameters" "Either use -a for all or specifify program as arg." && exit 1;
    131 
    132 if [[ "$all" == 1 ]]; then
    133 	for i in "${PROGRAMS[@]}"
    134 	do
    135 		execute_installer $i
    136 	done
    137 else
    138 	execute_installer $program
    139 fi