#!/usr/bin/env python3 import sys import os import platform profile = None if platform.system() == "Windows": profile = os.environ['USERPROFILE'] else: profile = os.environ['HOME'] def echo0(*args, **kwargs): print(*args, file=sys.stderr, **kwargs) def showNotInOriginal(patched, original, root=None, ignores=[]): ''' Print rm relative ('rm ./...') commands to standard output where a file in patched doesn't exist in original. Keyword arguments: root -- Remove this from the beginning of the rm commands and replace it with ".". If None, it is set to patched. ignores -- files to ignore ''' if root is None: root = patched for sub in os.listdir(patched): originalPath = os.path.join(original, sub) patchedPath = os.path.join(patched, sub) if sub in ignores: continue if os.path.isdir(patchedPath): showNotInOriginal(patchedPath, originalPath, root=root, ignores=ignores) continue if not os.path.isfile(originalPath): relPath = patchedPath[len(root):] dotPath = "." + relPath dotPathShell = dotPath if "'" in dotPathShell: dotPathShell = '"{}"'.format(dotPathShell) elif '"' in dotPathShell: dotPathShell = "'{}'".format(dotPathShell) print("rm {}".format(dotPathShell)) def main(): original = os.path.join(profile, "minetest", "games", "Bucket_Game") patched = os.path.abspath(".") originalMods = os.path.join(original, "mods") patchedMods = os.path.join(patched, "mods") if not os.path.isdir(originalMods): echo0("Error: \"{}\" doesn't seem to be a game since it doesn't" " have a \"mods\" directory.".format(original)) return 1 if not os.path.isdir(patchedMods): echo0("Error: \"{}\" doesn't seem to be a game since it doesn't" " have a \"mods\" directory.".format(patched)) return 2 myName = os.path.split(sys.argv[0])[1] # echo0("myName:{}".format(myName)) showNotInOriginal(patched, original, None, ignores=[myName]) return 0 if __name__ == "__main__": sys.exit(main())