#!/usr/bin/env python
'''Find under which SCM directory is'''
__author__ = "Miki Tebeka <miki.tebeka@gmail.com>"
from os import sep
from os.path import join, isdir, abspath
from itertools import ifilter, imap
def updirs(path):
parts = path.split(sep)
if not parts[0]:
parts[0] = sep # FIXME: Windows
while parts:
yield join(*parts)
parts.pop()
def scmdirs(path, scms):
for scmext in scms:
yield join(path, scmext)
def scm(dirname):
return dirname[-3:].lower()
def scms(path, scms):
return imap(scm, ifilter(isdir, scmdirs(path, scms)))
def whichscm(path):
path = abspath(path)
for scm in scms(path, (".svn", "CVS")):
return scm
scmdirs = (".bzr", ".hg", ".git")
for dirname in updirs(path):
for scm in scms(dirname, (".bzr", ".hg", ".git")):
return scm
def main(argv=None):
if argv is None:
import sys
argv = sys.argv
from optparse import OptionParser
parser = OptionParser("usage: %prog [DIRNAME]")
opts, args = parser.parse_args(argv[1:])
if len(args) not in (0, 1):
parser.error("wrong number of arguments") # Will exit
dirname = args[0] if args else "."
if not isdir(dirname):
raise SystemExit("error: %s is not a directory" % dirname)
scm = whichscm(dirname)
if not scm:
raise SystemExit("error: can't find scm for %s" % dirname)
print scm
if __name__ == "__main__":
main()
If it won't be simple, it simply won't be. [Hire me, source code] by Miki Tebeka, CEO, 353Solutions
Sunday, July 20, 2008
whichscm
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment