4 Commits

Author SHA1 Message Date
zx
d1c3bc6908 chore: bump version to v1.1.5 2024-09-15 15:17:40 -04:00
zx
8fe0fc2984 fix: plist changing operations (#3)
lol, this is so fucking stupid, i was trying to fix #3 but also found that `Plist.change()` was being used incorrectly EVERYWHERE in cyan, LMAO

slight oversight since i forgot i had even changed its usage, but at least it's fixed now
2024-09-15 15:16:43 -04:00
zx
e315454544 docs: acknowledgements 2024-09-14 21:01:04 -04:00
zx
9072c91965 docs(install): remove ensurepath step 2024-09-14 20:51:06 -04:00
5 changed files with 12 additions and 11 deletions

View File

@@ -32,14 +32,13 @@ also obviously install python, version 3.9 or greater is required
<ol> <ol>
<li>install <a href="https://github.com/pypa/pipx?tab=readme-ov-file#install-pipx">pipx</a></li> <li>install <a href="https://github.com/pypa/pipx?tab=readme-ov-file#install-pipx">pipx</a></li>
<li>install OR update cyan: <code>pipx install --force https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip</code></li> <li>install OR update cyan: <code>pipx install --force https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip</code></li>
<li>add cyan to PATH: <code>pipx ensurepath</code></li>
<li><b>if you want to inject dylibs ON AARCH64 LINUX</b>: <code>pipx inject cyan lief</code></li> <li><b>if you want to inject dylibs ON AARCH64 LINUX</b>: <code>pipx inject cyan lief</code></li>
<li><b>if you want to change app icons (iOS NOT supported)</b>: <code>pipx inject cyan Pillow</code></li> <li><b>if you want to change app icons (iOS NOT supported)</b>: <code>pipx inject cyan Pillow</code></li>
</ol> </ol>
</details> </details>
<details> <details>
<summary><b>jailbroken iOS instructions</b></summary> <summary><b>jailbroken iOS instructions / automated environment (github workflow, etc)</b></summary>
<br/> <br/>
<ol> <ol>
<li>install OR update cyan: <code>pip install --force-reinstall https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip</code></li> <li>install OR update cyan: <code>pip install --force-reinstall https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip</code></li>
@@ -56,4 +55,6 @@ cyan comes bundled with the `cgen` command, which lets you generate `.cyan` file
- [Al4ise](https://github.com/Al4ise) for the original [Azule](https://github.com/Al4ise/Azule) - [Al4ise](https://github.com/Al4ise) for the original [Azule](https://github.com/Al4ise/Azule)
- [lief-project](https://github.com/lief-project) for [LIEF](https://github.com/lief-project/LIEF) - [lief-project](https://github.com/lief-project) for [LIEF](https://github.com/lief-project/LIEF)
- [tyilo](https://github.com/tyilo) for [insert_dylib](https://github.com/tyilo/insert_dylib/) (macOS/iOS)
- [LeanVel](https://github.com/LeanVel) for [insert_dylib](https://github.com/LeanVel/insert_dylib) (linux)

View File

@@ -95,7 +95,7 @@ def main() -> None:
) )
parser.add_argument( parser.add_argument(
"--version", action="version", version="cyan v1.1.4" "--version", action="version", version="cyan v1.1.5"
) )
from cyan import logic from cyan import logic

View File

@@ -86,6 +86,6 @@ def main(parser: ArgumentParser) -> None:
if os.path.isdir(args.o): if os.path.isdir(args.o):
shutil.rmtree(args.o) shutil.rmtree(args.o)
shutil.move(app_path, args.o) shutil.move(app.path, args.o)
print(f"[*] generated app at {args.o}") print(f"[*] generated app at {args.o}")

View File

@@ -44,6 +44,7 @@ class Plist:
try: try:
if all(self[key] == val for key in keys): if all(self[key] == val for key in keys):
return False return False
raise KeyError # lets pretend this was always here..
except KeyError: except KeyError:
for key in keys: for key in keys:
self[key] = val self[key] = val
@@ -67,15 +68,14 @@ class Plist:
print("[?] documents support was already enabled") print("[?] documents support was already enabled")
def change_name(self, name: str) -> None: def change_name(self, name: str) -> None:
if self.change("CFBundleName", "CFBundleDisplayName", name): if self.change(name, "CFBundleName", "CFBundleDisplayName"):
print(f"[*] changed name to \"{name}\"") print(f"[*] changed name to \"{name}\"")
changed = 0 changed = 0
for lproj in glob(f"{self.app_path}/*.lproj"): for lproj in glob(f"{self.app_path}/*.lproj"):
try: try:
pl = Plist(f"{lproj}/InfoPlist.strings", None, False) pl = Plist(f"{lproj}/InfoPlist.strings", None, False)
pl["CFBundleDisplayName"] = name pl.change(name, "CFBundleName", "CFBundleDisplayName")
pl["CFBundleName"] = name
pl.save() pl.save()
changed += 1 changed += 1
except Exception: except Exception:
@@ -87,7 +87,7 @@ class Plist:
print(f"[?] name was already \"{name}\"") print(f"[?] name was already \"{name}\"")
def change_version(self, version: str) -> None: def change_version(self, version: str) -> None:
if self.change("CFBundleVersion", "CFBundleShortVersionString", version): if self.change(version, "CFBundleVersion", "CFBundleShortVersionString"):
print(f"[*] changed version to \"{version}\"") print(f"[*] changed version to \"{version}\"")
else: else:
print(f"[?] version was already \"{version}\"") print(f"[?] version was already \"{version}\"")
@@ -95,7 +95,7 @@ class Plist:
def change_bundle_id(self, bundle_id: str) -> None: def change_bundle_id(self, bundle_id: str) -> None:
orig = self["CFBundleIdentifier"] orig = self["CFBundleIdentifier"]
if self.change("CFBundleIdentifier", bundle_id): if self.change(bundle_id, "CFBundleIdentifier"):
print(f"[*] changed bundle id to \"{bundle_id}\"") print(f"[*] changed bundle id to \"{bundle_id}\"")
changed = 0 changed = 0
@@ -116,7 +116,7 @@ class Plist:
print(f"[?] bundle id was already \"{bundle_id}\"") print(f"[?] bundle id was already \"{bundle_id}\"")
def change_minimum_version(self, minimum: str) -> None: def change_minimum_version(self, minimum: str) -> None:
if self.change("MinimumOSVersion", minimum): if self.change(minimum, "MinimumOSVersion"):
print(f"[*] changed minimum version to \"{minimum}\"") print(f"[*] changed minimum version to \"{minimum}\"")
else: else:
print(f"[?] minimum version was already \"{minimum}\"") print(f"[?] minimum version was already \"{minimum}\"")

View File

@@ -4,7 +4,7 @@ from setuptools import setup
setup( setup(
name="cyan", name="cyan",
version="1.1.4", version="1.1.5",
description="finally, pyzule doesn't suck", description="finally, pyzule doesn't suck",
author="zx", author="zx",
author_email="zx@hrzn.email", author_email="zx@hrzn.email",