Skip to content

Commit 4c51f38

Browse files
Merge pull request #32 from RandomCoderOrg/revamp-v2.5-list-remote-size
Revamp v2.5 list remote size
2 parents 3d3a510 + 50c59ee commit 4c51f38

File tree

2 files changed

+105
-120
lines changed

2 files changed

+105
-120
lines changed

udroid/src/help_udroid.sh

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,13 @@ help_root() {
4848
# help_list: show help for list
4949
help_list() {
5050
echo "udroid [ list| --list ] [options]"
51+
echo "show a table of all available distros/suites"
5152
echo "options:"
52-
echo " -h, --help show this help message and exit"
53-
echo " --size show size of each distro"
54-
echo " --path <path> path to look for distros"
55-
echo " --list-installed show only installed distros"
53+
echo " -h, --help show this help message and exit"
54+
echo " --size show size of each distro"
55+
echo " --download-size | -ds show download size of each distro"
56+
echo " --path <path> path to look for distros"
57+
echo " --list-installed show only installed distros"
5658
}
5759

5860
# help_upgrade: show help for upgrade

udroid/src/udroid.sh

Lines changed: 99 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -736,149 +736,132 @@ parser() {
736736
## List
737737
# list all the avalible suites varients and their status
738738
list() {
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

884867
remove() {

0 commit comments

Comments
 (0)