Rip out patching mechanism

Conceived in a dream, this feature turned out to be more of a bug. The
whole idea of tbxi is to work with easily-editable text files and naked
binaries. Patching is best accomplished with a separate script.
This commit is contained in:
Elliot Nunn 2019-06-02 09:57:33 +08:00
parent b5af802944
commit f2353d63c7
1 changed files with 0 additions and 35 deletions

View File

@ -1,8 +1,5 @@
import importlib
from subprocess import run, PIPE
import fnmatch
import os
from os import path
@ -19,17 +16,6 @@ class WrongFormat(Exception):
pass
def strip_patch_name_ext(name):
# We need to match patch filenames to other filenames using fnmatch,
# but first we need to remove '.patch.sh' or '.patch' from the title
# If it isn't a patch, return None
for i in range(2):
name, ext = path.splitext(name)
if ext.lower() == '.patch': return name
def build_dir(p):
for fmt in FORMATS:
mod = importlib.import_module('..%s_build' % fmt, __name__)
@ -61,27 +47,6 @@ def build(p):
with open(p, 'rb') as f:
data = f.read()
# Search the directory of the file for executable patches
for sib in sorted(os.scandir(parent), key=lambda ent: ent.name):
# Does the filename match?
pattern = strip_patch_name_ext(sib.name)
if pattern and fnmatch.fnmatch(name, pattern):
# This is a bit unsafe, so prompt the user (to pipe in `yes`...)
if input('Apply %s to %s? [y/N] ' % (sib.name, name)).lower().startswith('y'):
# The script is told the original filename, but it should READ FROM STDIN!
cmd = [sib.path, name]
# Run the script as a unixy filter
result = run(cmd, cwd=parent, input=data, stdout=PIPE)
# Return 0 to apply stdout, 1 to nop, anything else to fail
if result.returncode == 0:
data = result.stdout
elif result.returncode == 1:
pass
else:
result.check_returncode()
return data