poikilos
3 years ago
2 changed files with 217 additions and 0 deletions
@ -0,0 +1,59 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
from __future__ import print_function |
||||
|
import sys |
||||
|
import os |
||||
|
|
||||
|
from headcompare import ( |
||||
|
error, |
||||
|
compareBranch, |
||||
|
defaultVirtualReposDir, |
||||
|
minetestPath, |
||||
|
gamesPath, |
||||
|
gamePath, |
||||
|
profile, |
||||
|
) |
||||
|
|
||||
|
me = os.path.basename(__file__) |
||||
|
|
||||
|
def usage(): |
||||
|
error("Usage:") |
||||
|
sys.stderr.write("Specify a branch") |
||||
|
parent = "Bucket_Game-base" |
||||
|
if os.path.isdir(parent): |
||||
|
error(" from Bucket_Game-base:") |
||||
|
for sub in os.listdir(parent): |
||||
|
subPath = os.path.join(parent, sub) |
||||
|
if sub.startswith("."): |
||||
|
continue |
||||
|
if os.path.isdir(subPath): |
||||
|
error(subPath) |
||||
|
else: |
||||
|
error(" from Bucket_Game-base.") |
||||
|
|
||||
|
error("{} <branch name (see above)> [<bucket_game path>]".format(me)) |
||||
|
error("") |
||||
|
|
||||
|
def main(): |
||||
|
global gamePath |
||||
|
gamePath = None |
||||
|
if len(sys.argv) < 2: |
||||
|
usage() |
||||
|
error("Error: You must provide a branch name.\n") |
||||
|
exit(1) |
||||
|
if len(sys.argv) > 3: |
||||
|
usage() |
||||
|
error("Error: There are too many arguments: {}.\n" |
||||
|
"".format(sys.argv)) |
||||
|
exit(1) |
||||
|
if len(sys.argv) > 2: |
||||
|
gamePath = sys.argv[2] |
||||
|
|
||||
|
results = compareBranch(sys.argv[1], gamePath=gamePath, |
||||
|
compareOld=True) |
||||
|
error("# ^ Do that to verify: they MUST match, and the first" |
||||
|
" directory must be unmodified from the original" |
||||
|
" release package.") |
||||
|
|
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
main() |
@ -0,0 +1,158 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
from __future__ import print_function |
||||
|
import sys |
||||
|
import os |
||||
|
import platform |
||||
|
|
||||
|
me = os.path.basename(__file__) |
||||
|
myDir = os.path.dirname(__file__) |
||||
|
defaultVirtualReposDir = myDir |
||||
|
|
||||
|
def error(msg): |
||||
|
sys.stderr.write("{}\n".format(msg)) |
||||
|
sys.stderr.flush() |
||||
|
|
||||
|
|
||||
|
def usage(): |
||||
|
error("Usage:") |
||||
|
sys.stderr.write("Specify a branch") |
||||
|
parent = "Bucket_Game-branches" |
||||
|
if os.path.isdir(parent): |
||||
|
error(" from Bucket_Game-branches:") |
||||
|
for sub in os.listdir(parent): |
||||
|
subPath = os.path.join(parent, sub) |
||||
|
if sub.startswith("."): |
||||
|
continue |
||||
|
if os.path.isdir(subPath): |
||||
|
error(subPath) |
||||
|
else: |
||||
|
error(" from Bucket_Game-branches.") |
||||
|
|
||||
|
error("{} <branch name (see above)> [<bucket_game path>]".format(me)) |
||||
|
error("") |
||||
|
|
||||
|
|
||||
|
profile = None |
||||
|
if platform.system() == "Windows": |
||||
|
profile = os.environ.get('USERPROFILE') |
||||
|
if profile is None: |
||||
|
error("Error: USERPROFILE is not set.") |
||||
|
exit(1) |
||||
|
else: |
||||
|
profile = os.environ.get('HOME') |
||||
|
if profile is None: |
||||
|
error("Error: HOME is not set.") |
||||
|
exit(1) |
||||
|
|
||||
|
minetestPath = os.path.join(profile, "minetest") |
||||
|
gamesPath = os.path.join(minetestPath, "games") |
||||
|
gamePath = None |
||||
|
|
||||
|
|
||||
|
def compareBranch(branchName, gamePath=None, bgVersion=None, |
||||
|
bgVersionsPath=minetestPath, compareOld=False, |
||||
|
branchesPath=None, |
||||
|
vReposDir=defaultVirtualReposDir): |
||||
|
results = {} |
||||
|
''' |
||||
|
Keyword arguments: |
||||
|
gamePath -- Specify a bucket_game base path to which to compare. |
||||
|
bgVersion -- Specify a bucket_game version that is stored outside |
||||
|
of the games directory but directly in bgVersionsPath (If |
||||
|
bgVersion is not None, the function will fail if the directory |
||||
|
"bucket_game-{}".format(bgVersion) doesn't exist in |
||||
|
bgVersionsPath. |
||||
|
compareOld: Set to True to use |
||||
|
patchesDir = os.path.join(myDir, "Bucket_Game-base") |
||||
|
instead of |
||||
|
patchesDir = os.path.join(myDir, "Bucket_Game-branches") |
||||
|
(The option is ignored if branchesPath is set). |
||||
|
branchesPath -- Specify what directory contains the head branches. |
||||
|
vReposDir -- Specify what directory contains |
||||
|
Bucket_Game-branches and Bucket_Game-base (The option is ignored |
||||
|
if branchesPath is set). |
||||
|
|
||||
|
Raises: |
||||
|
- ValueError if the bgVersion is neither specified nor detected |
||||
|
after "-vs-" in the patch name. |
||||
|
- ValueError if the bgVersion directory isn't found |
||||
|
- ValueError if the branch isn't found |
||||
|
''' |
||||
|
detectedBGVer = None |
||||
|
parts = branchName.split("-") |
||||
|
versionMsg = "specified" |
||||
|
if (len(parts) > 2) and (parts[-2] == "vs"): |
||||
|
detectedBGVer = parts[-1] |
||||
|
if bgVersion is not None: |
||||
|
if detectedBGVer is not None: |
||||
|
print("WARNING: detected version {} but you specified {}" |
||||
|
"".format(detectedBGVer, bgVersion)) |
||||
|
else: |
||||
|
bgVersion = detectedBGVer |
||||
|
versionMsg = "detected" |
||||
|
''' |
||||
|
tryGame = "bucket_game" |
||||
|
tryGamePath = os.path.join(gamesPath, tryGame) |
||||
|
if not os.path.isdir(tryGamePath): |
||||
|
tryGame = "Bucket_Game" |
||||
|
tryGamePath = os.path.join(gamesPath, tryGame) |
||||
|
''' |
||||
|
if bgVersion is None: |
||||
|
raise ValueError("The game version was neither specified nor " |
||||
|
" after \"-vs-\" in the patch name.") |
||||
|
|
||||
|
specifiedGame = "bucket_game-{}".format(bgVersion) |
||||
|
# os.path.join(bgVersionsPath, specifiedGame) |
||||
|
specifiedGamePath = os.path.join(bgVersionsPath, specifiedGame) |
||||
|
if not os.path.isdir(specifiedGamePath): |
||||
|
usage() |
||||
|
raise ValueError("The {} game version is not present at" |
||||
|
" {}".format(versionMsg, specifiedGamePath)) |
||||
|
if branchesPath is None: |
||||
|
if compareOld: |
||||
|
branchesPath = os.path.join(vReposDir, |
||||
|
"Bucket_Game-base") |
||||
|
else: |
||||
|
branchesPath = os.path.join(vReposDir, |
||||
|
"Bucket_Game-branches") |
||||
|
if os.path.sep in branchName: |
||||
|
branchName = os.path.split(branchName)[1] |
||||
|
branchPath = os.path.join(branchesPath, branchName) |
||||
|
if not os.path.isdir(branchPath): |
||||
|
raise ValueError("The branch wasn't found at \"{}\"" |
||||
|
"".format(branchPath)) |
||||
|
branchPath = os.path.realpath(branchPath) |
||||
|
print("meld \"{}\" \"{}\"".format(specifiedGamePath, branchPath)) |
||||
|
patchFilePath = branchPath+".patch" |
||||
|
print("diff -ru \"{}\" \"{}\" > \"{}\"" |
||||
|
"".format(specifiedGamePath, branchPath, patchFilePath)) |
||||
|
results = { |
||||
|
'gamePath': specifiedGamePath, |
||||
|
'branchPath': specifiedGamePath, |
||||
|
'patchFilePath': specifiedGamePath, |
||||
|
} |
||||
|
return results |
||||
|
|
||||
|
def main(): |
||||
|
global gamePath |
||||
|
gamePath = None |
||||
|
if len(sys.argv) < 2: |
||||
|
usage() |
||||
|
error("Error: You must provide a branch name.\n") |
||||
|
exit(1) |
||||
|
if len(sys.argv) > 3: |
||||
|
usage() |
||||
|
error("Error: There are too many arguments: {}.\n" |
||||
|
"".format(sys.argv)) |
||||
|
exit(1) |
||||
|
if len(sys.argv) > 2: |
||||
|
gamePath = sys.argv[2] |
||||
|
|
||||
|
results = compareBranch(sys.argv[1], gamePath=gamePath) |
||||
|
error("# ^ Do that to see the difference or generate a patch," |
||||
|
" but the first directory must be unmodified from the" |
||||
|
" original release package.") |
||||
|
|
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
main() |
Loading…
Reference in new issue