@@ -736,149 +736,132 @@ parser() {
736736# # List
737737# list all the avalible suites varients and their status
738738list () {
739-
739+ TITLE " list() "
740740 export size=false
741741 export show_installed_only=false
742- local show_pretty =false
742+ local show_remote_download_size =false
743743 local path=$DEFAULT_FS_INSTALL_DIR
744744
745745 while [ $# -gt 0 ]; do
746746 case $1 in
747747 --size) size=true; shift 1;;
748+ --download-size | -ds) show_remote_download_size=true; shift 1;;
748749 --list-installed) show_installed_only=true; shift 1;;
749750 --path) path=$2 ; LOG " list(): looking in $path " ; shift 2;;
750751 --help) help_list; exit 0;;
751- --pretty) show_pretty=true; shift 1;;
752752 * ) shift ;;
753753 esac
754754 done
755755
756- fetch_distro_data " offline"
757-
756+ if ! $show_remote_download_size ; then
757+ fetch_distro_data " offline"
758+ else
759+ fetch_distro_data " online"
760+ fi
761+
758762 suites=$( cat $distro_data | jq -r ' .suites[]' )
763+ tempfile=$( mktemp udroid-list-table-XXXXXX)
759764
760- if ! $show_pretty ; then
761- # loop over suites
762- for suite in $suites ; do
763- echo " $suite : "
764- varients=$( cat $distro_data | jq -r " .$suite .varients[]" )
765-
766- # loop over varients
767- for varient in $varients ; do
768- # get name
769- name=$( cat $distro_data | jq -r " .$suite .$varient .Name" )
770- supported_arch=$( cat $distro_data | jq -r " .$suite .$varient .arch" )
771-
772- host_arch=$( dpkg --print-architecture)
773- if [[ $host_arch =~ $supported_arch ]]; then
774- supported=true
775- else
776- supported=false
777- fi
778-
779- # check if installed
780- if [[ -d $path /$name ]]; then
781- _installed=" [installed]"
782- else
783- _installed=" "
784- fi
785-
786- # check size
787- if [[ $size == true ]]; then
788- if [[ -d $path /$name ]]; then
789- _size=" [ SIZE: $( du -sh $path /$name | awk ' {print $1}' ) ]"
790- else
791- _size=" "
792- fi
793- else
794- _size=" "
795- fi
796-
797- # set support status
798- if [[ $supported == true ]]; then
799- support_status=" \e[1;32m [supported]\e[0m"
800- else
801- support_status=" \e[31m [unsupported]\e[0m"
802- fi
803-
804- # print out
805- if ! $show_installed_only ; then
806- echo -e " \t- $varient $support_status $_installed $_size "
807- else
808- if [[ -d $path /$name ]]; then
809- echo -e " \t- $varient $support_status $_installed $_size "
810- fi
811- fi
812- done
813- done
765+ if $size ; then
766+ _size_header=" size |"
767+ _size_line=" --|"
814768 else
815- tempfile=$( mktemp udroid-list-table-XXXXXX)
816-
817- if $size ; then
818- _size_header=" size |"
819- _size_line=" --|"
820- else
821- _size_header=" "
822- _size_line=" "
823- fi
824-
825- # header
826- echo -e " | suites | supported | status |$_size_header " > $tempfile
827- echo -e " |--------|-----------|--------|$_size_line " >> $tempfile
828-
829- for suite in $suites ; do
830- varients=$( cat $distro_data | jq -r " .$suite .varients[]" )
831-
832- # loop over varients
833- for varient in $varients ; do
834- # get name
835- name=$( cat $distro_data | jq -r " .$suite .$varient .Name" )
836- supported_arch=$( cat $distro_data | jq -r " .$suite .$varient .arch" )
837-
838- host_arch=$( dpkg --print-architecture)
839- if [[ $host_arch =~ $supported_arch ]]; then
840- supported=true
841- else
842- supported=false
843- fi
844-
845- # check if installed
846- if [[ -d $path /$name ]]; then
847- _installed=" [installed]"
769+ _size_header=" "
770+ _size_line=" "
771+ fi
772+
773+ if $show_remote_download_size ; then
774+ _r_size_header=" down* size |"
775+ _r_size_line=" --|"
776+ else
777+ _r_size_header=" "
778+ _r_size_line=" "
779+ fi
780+
781+ echo -e " reading data ( This a may take a minute ) ..."
782+
783+ # header
784+ echo -e " | suites | supported | status |$_size_header$_r_size_header " > $tempfile
785+ echo -e " |--------|-----------|--------|$_size_line " $_r_size_line >> $tempfile
786+
787+ for suite in $suites ; do
788+ varients=$( cat $distro_data | jq -r " .$suite .varients[]" )
789+ # loop over varients
790+ for varient in $varients ; do
791+ # get name
792+ name=$( cat $distro_data | jq -r " .$suite .$varient .Name" )
793+ supported_arch=$( cat $distro_data | jq -r " .$suite .$varient .arch" )
794+ host_arch=$( dpkg --print-architecture)
795+
796+ if [[ $host_arch =~ $supported_arch ]]; then
797+ supported=true
848798 else
849- _installed= " "
850- fi
799+ supported=false
800+ fi
851801
852- # check size
853- if [[ $size == true ]]; then
854- if [[ -d $path /$name ]]; then
855- _size=" $( du -sh $path /$name 2> /dev/null | awk ' {print $1}' ) "
802+ if $supported ; then
803+ if $show_remote_download_size ; then
804+ link=$( cat $distro_data | jq -r " .$suite .$varient .${host_arch} url" )
805+ remote_size=$( wget --spider -m -np $link 2>&1 | grep -i Length | awk ' {print $2}' )
806+ if [[ -z $remote_size ]]; then
807+ remote_size=" ?"
856808 else
857- _size= " "
809+ remote_size= $( numfmt --to=iec-i --suffix=B --padding=7 $remote_size ) # <- By GitHub Copilot
858810 fi
859- else
860- _size=" "
861811 fi
812+ fi
862813
863- # set support status
864- if [[ $supported == true ]]; then
865- support_status=" YES"
814+ # check if installed
815+ if [[ -d $path /$name ]]; then
816+ _installed=" [installed]"
817+ else
818+ _installed=" "
819+ fi
820+
821+ # check size
822+ if [[ $size == true ]]; then
823+ if [[ -d $path /$name ]]; then
824+ _size=" $( du -sh $path /$name 2> /dev/null | awk ' {print $1}' ) |"
866825 else
867- support_status= " NO "
826+ _size= " | "
868827 fi
869-
870- # print out
871- if ! $show_installed_only ; then
872- echo -e " |$suite :$varient |$support_status |$_installed |$_size " >> $tempfile
873- else
874- if [[ -d $path /$name /bin ]]; then
875- echo -e " |$suite :$varient |$support_status |$_installed |$_size " >> $tempfile
876- fi
828+ else
829+ _size=" "
830+ fi
831+
832+ # set support status
833+ if [[ $supported == true ]]; then
834+ support_status=" YES"
835+ else
836+ support_status=" NO"
837+ fi
838+
839+ # print out
840+ if ! $show_installed_only ; then
841+ echo -e " |$suite :$varient |$support_status |$_installed |$_size$remote_size " >> $tempfile
842+ else
843+ if [[ -d $path /$name /bin ]]; then
844+ echo -e " |$suite :$varient |$support_status |$_installed |$_size$remote_size " >> $tempfile
877845 fi
878- done
846+ fi
879847 done
880- g_format $tempfile
881- fi
848+ done
849+
850+ # footer
851+ {
852+ echo " "
853+ echo " "
854+ echo " **SIZE**: space occupied by installed distro"
855+ echo " **DOWN SIZE**: download size of suite"
856+ echo " "
857+ echo " To install a suite (ex: **jammy:raw**), run:"
858+ echo " \`\`\` bash"
859+ echo " udroid install jammy:raw"
860+ echo " \`\`\` "
861+ echo " "
862+ } >> $tempfile
863+
864+ g_format $tempfile
882865}
883866
884867remove () {
0 commit comments