mirror of
https://github.com/grahampugh/macadmin-scripts.git
synced 2025-12-17 17:56:33 +00:00
Add munki_bundle_pkg_finder script
This commit is contained in:
parent
1fc3224198
commit
ba1eeab9d0
62
munki_bundle_pkg_finder.py
Executable file
62
munki_bundle_pkg_finder.py
Executable file
@ -0,0 +1,62 @@
|
||||
#!/usr/local/munki/munki-python
|
||||
|
||||
import os
|
||||
import plistlib
|
||||
import sys
|
||||
|
||||
sys.path.append("/usr/local/munki")
|
||||
|
||||
from munkilib import dmgutils
|
||||
from munkilib import pkgutils
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print('Need exactly one parameter: path to a munki repo!', file=sys.stderr)
|
||||
sys.exit(-1)
|
||||
|
||||
repo_path = sys.argv[1]
|
||||
|
||||
all_catalog = os.path.join(repo_path, "catalogs/all")
|
||||
|
||||
with open(all_catalog, mode="rb") as FILE:
|
||||
all_items = plistlib.load(FILE)
|
||||
|
||||
dmg_items = [{"name": item["name"],
|
||||
"version": item["version"],
|
||||
"location": item["installer_item_location"],
|
||||
"package_path": item.get("package_path", "")}
|
||||
for item in all_items
|
||||
if item.get("installer_item_location", "").endswith(".dmg") and
|
||||
item.get("installer_type") is None]
|
||||
|
||||
items_with_bundle_style_pkgs = []
|
||||
for item in dmg_items:
|
||||
full_path = os.path.join(repo_path, "pkgs", item["location"])
|
||||
print("Checking %s..." % full_path)
|
||||
mountpoints = dmgutils.mountdmg(full_path)
|
||||
if mountpoints:
|
||||
pkg_path = item["package_path"]
|
||||
if pkg_path:
|
||||
itempath = os.path.join(mountpoints[0], pkg_path)
|
||||
if os.path.isdir(itempath):
|
||||
print("***** %s--%s has a bundle-style pkg"
|
||||
% (item["name"], item["version"]))
|
||||
items_with_bundle_style_pkgs.append(item)
|
||||
else:
|
||||
for file_item in os.listdir(mountpoints[0]):
|
||||
if pkgutils.hasValidInstallerItemExt(file_item):
|
||||
itempath = os.path.join(mountpoints[0], file_item)
|
||||
if os.path.isdir(itempath):
|
||||
print("***** %s--%s has a bundle-style pkg"
|
||||
% (item["name"], item["version"]))
|
||||
items_with_bundle_style_pkgs.append(item)
|
||||
break
|
||||
dmgutils.unmountdmg(mountpoints[0])
|
||||
else:
|
||||
print("No filesystems mounted from %s" % full_path)
|
||||
continue
|
||||
|
||||
print("Found %s items with bundle-style pkgs."
|
||||
% len(items_with_bundle_style_pkgs))
|
||||
for item in sorted(items_with_bundle_style_pkgs, key=lambda d: d["name"]):
|
||||
print("%s--%s"% (item["name"], item["version"]))
|
||||
print(" %s" % item["location"])
|
||||
Loading…
x
Reference in New Issue
Block a user