mirror of
https://github.com/corpnewt/gibMacOS.git
synced 2024-12-04 13:33:26 +01:00
Add support for printing product metadata in JSON
This commit is contained in:
parent
36e51f43f7
commit
11bfad8304
18
gibMacOS.py
18
gibMacOS.py
@ -38,6 +38,7 @@ class gibMacOS:
|
||||
self.current_macos = self.settings.get("current_macos",17) # if > 16, assume X-5, else 10.X
|
||||
self.min_macos = 5
|
||||
self.print_urls = self.settings.get("print_urls",False)
|
||||
self.print_json = False
|
||||
self.mac_os_names_url = {
|
||||
"8" : "mountainlion",
|
||||
"7" : "lion",
|
||||
@ -303,7 +304,10 @@ class gibMacOS:
|
||||
raise ProgramError("There were no files to download")
|
||||
c = 0
|
||||
done = []
|
||||
if self.print_urls:
|
||||
if self.print_json:
|
||||
print(self.product_to_json(prod))
|
||||
return
|
||||
elif self.print_urls:
|
||||
self.u.head("Download Links")
|
||||
print("{}:\n".format(name))
|
||||
print("\n".join([" - {} \n --> {}".format(os.path.basename(x), x) for x in dl_list]))
|
||||
@ -366,6 +370,14 @@ class gibMacOS:
|
||||
elif len(failed):
|
||||
raise ProgramError("{} files failed to download".format(len(failed)))
|
||||
|
||||
def product_to_json(self, prod):
|
||||
return json.dumps({
|
||||
**{key: value for key, value in prod.items()
|
||||
if key in ["product", "version", "build", "title", "size", "packages"]},
|
||||
"date": prod["date"].isoformat(),
|
||||
"deviceIds": list(prod["device_ids"]),
|
||||
})
|
||||
|
||||
def show_catalog_url(self):
|
||||
self.resize()
|
||||
self.u.head()
|
||||
@ -592,6 +604,7 @@ if __name__ == '__main__':
|
||||
parser.add_argument("-m", "--maxos", help="sets the max macOS version to consider when building the url - eg 10.14")
|
||||
parser.add_argument("-D", "--device-id", help="use with --version or --latest to search for versions supporting the specified Device ID - eg VMM-x86_64 for any x86_64")
|
||||
parser.add_argument("-i", "--print-urls", help="only prints the download URLs, does not actually download them", action="store_true")
|
||||
parser.add_argument("-j", "--print-json", help="only prints the product metadata in JSON, does not actually download it", action="store_true")
|
||||
parser.add_argument("--no-interactive", help="run in non-interactive mode", action="store_true")
|
||||
args = parser.parse_args()
|
||||
|
||||
@ -609,6 +622,9 @@ if __name__ == '__main__':
|
||||
if args.print_urls:
|
||||
g.print_urls = True
|
||||
|
||||
if args.print_json:
|
||||
g.print_json = True
|
||||
|
||||
if args.maxos:
|
||||
try:
|
||||
version = g.macos_to_num(args.maxos)
|
||||
|
Loading…
Reference in New Issue
Block a user