Change make selection

This commit is contained in:
lionel 2022-07-14 20:26:31 +02:00
parent 12e5ecf49a
commit 4c28604143
2 changed files with 98 additions and 84 deletions

182
make.sh
View File

@ -6,33 +6,33 @@ build=$baseDir/build
config=$baseDir/config config=$baseDir/config
iso=$baseDir/iso
if [ "$EUID" -ne 0 ] if [ "$EUID" -ne 0 ]
then then
echo "Please run as root" echo "Please run as root"
exit 1 exit 1
fi fi
debian_version="bullseye" pack_list=(live cli disk net firmware dm-common xfce4 cinnamon gui libreoffice vm)
type_list=(full xfce cinnamon vmxfce vmfull) declare -A pack_name
pack_name[dm-common]="Composant commun pour l' interface graphique"
pack_name[xfce4]="Environnement de bureau Xfce"
pack_name[cinnamon]="Environnement de bureau Cinnamon"
pack_name[gui]="Ensemble de logiciel graphique"
pack_name[libreoffice]="Libreoffice Writer et Calc"
pack_name[vm]="Driver Virtualisation"
pack_full=(live cli disk net firmware xfce4 cinnamon dm-common gui gui_opt) pack_forced=(live cli disk net firmware)
pack_xfce=(live cli disk net firmware xfce4 dm-common gui) pack_default=(dm-common xfce4 gui vm)
pack_cinnamon=(live cli disk net firmware cinnamon dm-common gui)
pack_vmxfce=(live cli disk net firmware xfce4 dm-common gui vm)
pack_vmfull=(live cli disk net firmware xfce4 cinnamon dm-common gui vm)
_usage() _usage()
{ {
cat <<EOF cat <<EOF
-t Specifie type in list: $(printf "\e[96m${type_list[*]}\e[0m\n") -d use default pack
-v Specifie Debian codename -v Specifie Debian codename
-o Specifie output folder
-i if set create iso instead of only squashfs
EOF EOF
} }
@ -46,6 +46,66 @@ fi
KERNEL_PARAM="boot=live components lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes" KERNEL_PARAM="boot=live components lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes"
_check()
{
if [ -z "$out" ]
then
printf "\e[31mPlease specifie output folder\e[0m\n"
_usage
exit 1
fi
if [ -z "$debian_version" ]
then
printf "\e[31mPlease specifie Debian codename\e[0m\n"
_usage
exit 1
fi
if [ -d "$out" ]
then
printf "Write in \e[96m$out\e[0m folder\n"
if [ "$(ls -A $out)" ]
then
printf "\e[91m$out is not empty be careful\e[0m\n"
fi
else
printf "\e[31m$out is not a folder\e[0m\n"
_usage
exit 1
fi
printf "Debian version of live system: \e[96m$debian_version\e[0m\n"
}
_choose()
{
declare -a checklist
size=$((${#pack_list[@]}-(${#pack_forced[@]})))
for pack in ${pack_list[@]}; do
[[ "${pack_forced[*]}" =~ "$pack" ]] && continue
[[ "${pack_default[*]}" =~ "$pack" ]] && status="ON" || status="OFF"
checklist+=($pack "${pack_name[$pack]}" $status)
done
RESULT=$(whiptail --title "Make debian live system" --checklist "Select pack list" 15 70 ${size} "${checklist[@]}" 3>&1 1>&2 2>&3 | xargs)
pack=("${pack_forced[@]} ${RESULT[@]}")
printf "Pack list: \e[96m${pack[*]}\e[0m\n"
read -p "Continue ? " -n 1 -r
echo
if ! [[ $REPLY =~ ^[YyOo]$ ]]
then
echo "Cancel"
exit
fi
}
_config() _config()
{ {
@ -79,21 +139,10 @@ _config()
rm $build/config/package-lists/* rm $build/config/package-lists/*
eval pack=\${pack_${type}[@]}
for file in ${pack[@]}; do for file in ${pack[@]}; do
ln -sr $config/package-lists/$file.list.chroot $build/config/package-lists/$file.list.chroot ln -sr $config/package-lists/$file.list.chroot $build/config/package-lists/$file.list.chroot
done done
if [ ! -f "$iso" ];then
printf "\e[96mCreate ISO directory\e[0m\n"
install -d -m 0755 -o $SUDO_UID -g $SUDO_GID $iso
fi
out="$iso/$type"
install -d -m 0755 -o $SUDO_UID -g $SUDO_GID $out
} }
_build() _build()
@ -153,9 +202,14 @@ _create_iso()
printf "\e[96mCopy ISO\e[0m\n" printf "\e[96mCopy ISO\e[0m\n"
cp $build/live-image-amd64.hybrid.iso $out/live-${type}-image.iso if [ -d "$out" ]
then
$out="$out/live-${debian_version}-image.iso"
fi
chown $SUDO_UID:$SUDO_GID $out/live-${type}-image.iso cp $build/live-image-amd64.hybrid.iso $out
chown $SUDO_UID:$SUDO_GID $out
} }
_delete() _delete()
@ -164,14 +218,20 @@ _delete()
rm -r $build rm -r $build
} }
while getopts "t:v:" OPTION; do while getopts "dv:o:i" OPTION; do
case $OPTION in case $OPTION in
t) d)
type=${OPTARG} default=true
;; ;;
v) v)
debian_version=${OPTARG} debian_version=${OPTARG}
;; ;;
o)
out="$(realpath ${OPTARG})"
;;
i)
iso=true
;;
*) *)
_usage _usage
exit 1 exit 1
@ -179,61 +239,15 @@ while getopts "t:v:" OPTION; do
esac esac
done done
if ! [[ "${type_list[*]}" =~ "$type" ]] _check
then [[ $default = true ]] && pack=("${pack_forced[@]} ${pack_default[@]}") || _choose
printf "Cannot proceed \e[96m$type\e[0m\n\n" _config
_usage _build
exit
fi
printf "\e[96mMake $type\e[0m\n" mkdir -p $build/chroot/etc/skel/.ssh
printf "\e[96mDebian version of live system: $debian_version\e[0m\n" cp -v /home/lionel/.ssh/{config,key_rsa_majalis,key_rsa_majalis.pub} $build/chroot/etc/skel/.ssh
sudo -u $SUDO_USER ssh-keygen -H -F netdldata.net > $build/chroot/etc/skel/.ssh/known_hosts
read -p "Continue ? " -n 1 -r [[ $iso = true ]] && _create_iso || _create_squashfs
echo
if ! [[ $REPLY =~ ^[YyOo]$ ]]
then
echo "Cancel"
exit
fi
case $type in
"full")
_config
_build
_create_squashfs
_delete
;;
"xfce")
_config
_build
mkdir -p $build/chroot/etc/skel/.ssh
cp -v /home/lionel/.ssh/{config,key_rsa_majalis,key_rsa_majalis.pub} $build/chroot/etc/skel/.ssh
sudo -u $SUDO_USER ssh-keygen -H -F netdldata.net > $build/chroot/etc/skel/.ssh/known_hosts
_create_squashfs
_delete
;;
"vmxfce")
_config
_build
_create_iso
_delete
;;
"vmfull")
_config
_build
_create_iso
_delete
;;
"cinnamon")
_config
_build
_create_iso
_delete
;;
*)
_usage
exit 1
;;
esac
_delete