Advertisement
Guest User

Untitled

a guest
Jul 21st, 2023
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.22 KB | None | 0 0
  1. #!/usr/bin/env micropython
  2.  
  3. import urequests
  4. import sys
  5. import os
  6.  
  7. ARCHITECTURE_MAP = {
  8.     "armv6l": "armv6",
  9.     "armv7l": "armv7",
  10.     "aarch64": "aarch64",
  11.     "i686": "x86",
  12.     "x86_64": "x86_64" if "ld-linux-x86-64.so.2" in os.listdir("/lib") else "x86"
  13. }
  14.  
  15. bytes_to_mb = lambda size_in_bytes: size_in_bytes / (1024 * 1024)
  16.  
  17. def GetRemoteTextFile(filename):
  18.     response = urequests.get(f"{BuildMirror()}/tcz/{filename}")
  19.     if response.status_code == 200:
  20.         return response.text
  21.     else:
  22.         print(f"Error downloading file {filename}. Status code: {response.status_code}")
  23.         sys.exit(1)
  24.  
  25. def GetLocalTextFile(filename):
  26.     try:
  27.         with open(filename, "r") as f:
  28.             content = f.read().strip()
  29.             if not content:
  30.                 print(f"File {filename} is empty")
  31.                 sys.exit(1)
  32.             return content
  33.     except Exception as e:
  34.         print(f"Error: {e}")
  35.         sys.exit(1)
  36.  
  37. def BuildMirror():
  38.     mirror = GetLocalTextFile("/opt/tcemirror")
  39.     version = GetLocalTextFile("/etc/os-release")
  40.     version_lines = version.splitlines()
  41.     for line in version_lines:
  42.         if line.startswith("VERSION_ID="):
  43.             version = line.split("=")[1].strip().split(".")[0] + ".x"
  44.             break
  45.     architecture = GetLocalTextFile("/proc/sys/kernel/arch")
  46.     architecture = ARCHITECTURE_MAP.get(architecture)
  47.     return f"{mirror}{version}/{architecture}"
  48.  
  49. if len(sys.argv) < 2:
  50.     print("Please enter the package name.")
  51.     sys.exit(1)
  52.  
  53. package = sys.argv[1]
  54.  
  55. if not package.endswith(".tcz"):
  56.     package += ".tcz"
  57.  
  58. sizelist = GetRemoteTextFile("sizelist")
  59. packageTree = GetRemoteTextFile(f"{package}.tree")
  60.  
  61. print("  Filename                                 Size (bytes)   Size (MB)")
  62. print("------------------------------------------------------------------")
  63.  
  64. # Create a dictionary mapping the file name to its size in bytes
  65. size_dict = {line.split()[0]: int(line.split()[1]) for line in sizelist.splitlines()}
  66.  
  67. # Print the results directly from the list comprehension
  68. print("\n".join(f"{filename:<40} {size_in_bytes:<13} {bytes_to_mb(size_in_bytes):<8.2f}" for filename, size_in_bytes in size_dict.items() if filename in packageTree))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement