# Script for checking which projects have unsubmitted modifications in them.
#
# Usage:
# - recommended to add a alias/bat/sh for a shorter command
# - running without parameters will check any existing known dE projects.
# - can give projects names on command line, if only wish to check a sub-set
# e.g., git-check.py delibs deqp
import os
import sys
COMMANDS = ["pull", "push", "check"]
ALL_REPOS = ["delibs", "deqp", "movies", "domeni", "demisc"]
# Defaults.
command = "check"
repos = ALL_REPOS
# Parse command line.
numArgs = len(sys.argv)
if (numArgs == 1):
pass
else:
if (sys.argv[1] in COMMANDS):
command = sys.argv[1]
if (numArgs > 2):
repos = sys.argv[2:]
else:
repos = sys.argv[1:]
def findRepo(x):
for repo in ALL_REPOS:
if repo.startswith(x):
return repo
print "%s not a valid repository directory" % x
sys.exit(1)
repoDirs = [findRepo(x) for x in repos]
# Find git base repo directory.
oldDir = os.getcwd()
baseDir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "../.."))
foundAny = False
# Execute the command.
print "## Executing '%s' on repos: %s" % (command.upper(), ", ".join(repoDirs))
print ""
for gitDir in repoDirs:
subDir = os.path.join(baseDir, gitDir)
if os.path.exists(subDir):
foundAny = True
print "***** Check directory '%s' *****" % subDir
os.chdir(subDir)
if command == "check":
os.system("git status")
os.system("git push --dry-run")
elif command == "push":
os.system("git push")
elif command == "pull":
os.system("git pull")
else:
assert False
print ""
if not foundAny:
print "No subdirs found -- tried %s" % repoDirs
print "Searching in '%s'" % baseDir
os.chdir(oldDir)