mirror of
https://github.com/corpnewt/gibMacOS.git
synced 2024-12-04 13:33:26 +01:00
Allow to override download (output) directory using --download-dir
This commit is contained in:
parent
f2aa823496
commit
880d7f6319
20
gibMacOS.py
20
gibMacOS.py
@ -9,8 +9,9 @@ class ProgramError(Exception):
|
|||||||
|
|
||||||
|
|
||||||
class gibMacOS:
|
class gibMacOS:
|
||||||
def __init__(self, interactive = True):
|
def __init__(self, interactive = True, download_dir = None):
|
||||||
self.interactive = interactive
|
self.interactive = interactive
|
||||||
|
self.download_dir = download_dir
|
||||||
self.d = downloader.Downloader()
|
self.d = downloader.Downloader()
|
||||||
self.u = utils.Utils("gibMacOS", interactive=interactive)
|
self.u = utils.Utils("gibMacOS", interactive=interactive)
|
||||||
self.r = run.Run()
|
self.r = run.Run()
|
||||||
@ -65,7 +66,6 @@ class gibMacOS:
|
|||||||
self.catalog_data = None
|
self.catalog_data = None
|
||||||
self.scripts = "Scripts"
|
self.scripts = "Scripts"
|
||||||
self.plist = "sucatalog.plist"
|
self.plist = "sucatalog.plist"
|
||||||
self.saves = "macOS Downloads"
|
|
||||||
self.save_local = False
|
self.save_local = False
|
||||||
self.force_local = False
|
self.force_local = False
|
||||||
self.find_recovery = self.settings.get("find_recovery",False)
|
self.find_recovery = self.settings.get("find_recovery",False)
|
||||||
@ -292,6 +292,7 @@ class gibMacOS:
|
|||||||
# Takes a dictonary of details and downloads it
|
# Takes a dictonary of details and downloads it
|
||||||
self.resize()
|
self.resize()
|
||||||
name = "{} - {} {} ({})".format(prod["product"], prod["version"], prod["title"], prod["build"]).replace(":","").strip()
|
name = "{} - {} {} ({})".format(prod["product"], prod["version"], prod["title"], prod["build"]).replace(":","").strip()
|
||||||
|
download_dir = self.download_dir or os.path.join(os.path.dirname(os.path.realpath(__file__)), "macOS Downloads", self.current_catalog, name)
|
||||||
dl_list = []
|
dl_list = []
|
||||||
for x in prod["packages"]:
|
for x in prod["packages"]:
|
||||||
if not x.get("URL",None):
|
if not x.get("URL",None):
|
||||||
@ -316,9 +317,7 @@ class gibMacOS:
|
|||||||
self.u.grab("Press [enter] to return...")
|
self.u.grab("Press [enter] to return...")
|
||||||
return
|
return
|
||||||
# Only check the dirs if we need to
|
# Only check the dirs if we need to
|
||||||
cwd = os.getcwd()
|
if self.download_dir is None and os.path.exists(download_dir):
|
||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
|
||||||
if os.path.exists(os.path.join(os.getcwd(), self.saves, self.current_catalog, name)):
|
|
||||||
while True:
|
while True:
|
||||||
self.u.head("Already Exists")
|
self.u.head("Already Exists")
|
||||||
self.u.info("It looks like you've already downloaded {}\n".format(name))
|
self.u.info("It looks like you've already downloaded {}\n".format(name))
|
||||||
@ -332,9 +331,9 @@ class gibMacOS:
|
|||||||
if menu[0].lower() == "y":
|
if menu[0].lower() == "y":
|
||||||
break
|
break
|
||||||
# Remove the old copy, then re-download
|
# Remove the old copy, then re-download
|
||||||
shutil.rmtree(os.path.join(os.getcwd(), self.saves, self.current_catalog, name))
|
shutil.rmtree(download_dir)
|
||||||
# Make it new
|
# Make it new
|
||||||
os.makedirs(os.path.join(os.getcwd(), self.saves, self.current_catalog, name))
|
os.makedirs(download_dir)
|
||||||
for x in dl_list:
|
for x in dl_list:
|
||||||
c += 1
|
c += 1
|
||||||
self.u.head("Downloading File {} of {}".format(c, len(dl_list)))
|
self.u.head("Downloading File {} of {}".format(c, len(dl_list)))
|
||||||
@ -345,7 +344,7 @@ class gibMacOS:
|
|||||||
self.u.info("NOTE: Only Downloading DMG Files\n")
|
self.u.info("NOTE: Only Downloading DMG Files\n")
|
||||||
self.u.info("Downloading {} for {}...\n".format(os.path.basename(x), name))
|
self.u.info("Downloading {} for {}...\n".format(os.path.basename(x), name))
|
||||||
try:
|
try:
|
||||||
self.d.stream_to_file(x, os.path.join(os.getcwd(), self.saves, self.current_catalog, name, os.path.basename(x)))
|
self.d.stream_to_file(x, os.path.join(download_dir, os.path.basename(x)))
|
||||||
done.append({"name":os.path.basename(x), "status":True})
|
done.append({"name":os.path.basename(x), "status":True})
|
||||||
except:
|
except:
|
||||||
done.append({"name":os.path.basename(x), "status":False})
|
done.append({"name":os.path.basename(x), "status":False})
|
||||||
@ -364,7 +363,7 @@ class gibMacOS:
|
|||||||
self.u.info(" {}".format(x["name"]))
|
self.u.info(" {}".format(x["name"]))
|
||||||
else:
|
else:
|
||||||
self.u.info(" None")
|
self.u.info(" None")
|
||||||
self.u.info("\nFiles saved to:\n {}\n".format(os.path.join(os.getcwd(), self.saves, self.current_catalog, name)))
|
self.u.info("\nFiles saved to:\n {}\n".format(download_dir))
|
||||||
if self.interactive:
|
if self.interactive:
|
||||||
self.u.grab("Press [enter] to return...")
|
self.u.grab("Press [enter] to return...")
|
||||||
elif len(failed):
|
elif len(failed):
|
||||||
@ -606,9 +605,10 @@ if __name__ == '__main__':
|
|||||||
parser.add_argument("-i", "--print-urls", help="only prints the download URLs, does not actually download them", action="store_true")
|
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("-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")
|
parser.add_argument("--no-interactive", help="run in non-interactive mode", action="store_true")
|
||||||
|
parser.add_argument("-o", "--download-dir", help="overrides directory where the downloaded files are saved")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
g = gibMacOS(interactive=not args.no_interactive)
|
g = gibMacOS(interactive=not args.no_interactive, download_dir=args.download_dir)
|
||||||
if args.recovery:
|
if args.recovery:
|
||||||
args.dmg = False
|
args.dmg = False
|
||||||
g.find_recovery = args.recovery
|
g.find_recovery = args.recovery
|
||||||
|
Loading…
Reference in New Issue
Block a user