1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import json
- import os
-
-
- class repo(dict):
- KEY_URL = "URL"
- KEY_TARGET = "TARGET"
-
- INIT_SCRIPTNAME = "reposinit"
-
- def __init__(self, data, base_url):
- self.__base_url__ = base_url
- dict.__init__(self, data)
-
- def print_gn(self, txt):
- print("\033[1;32m" + txt + "\033[00m")
-
- def print_ye(self, txt):
- print("\033[1;33m" + txt + "\033[00m")
-
- def init_repo(self):
- if os.path.exists(self.target_path()):
- self.print_ye("skip: Cloning repository %s (already exists)..." % self.repo_url())
- else:
- self.print_gn("clone: Cloning repository %s..." % self.repo_url())
- os.system("git clone %s %s" % (self.url(), self.target_path()))
- if os.path.exists(os.path.join(self.target_path(), self.INIT_SCRIPTNAME)):
- self.print_gn("exec: Executing init script for repository %s..." % self.repo_url())
- os.system("cd %s; ./%s" % (self.target_path(), self.INIT_SCRIPTNAME))
- print()
-
- def submodules(self):
- return self[self.KEY_SUBMODULES]
-
- def url(self):
- return self.__base_url__ + '/' + self.repo_url()
-
- def repo_url(self):
- return self[self.KEY_URL]
-
- def target_path(self):
- return os.path.join(self[self.KEY_TARGET], os.path.basename(self.url()) if not os.path.basename(self.url()).lower().endswith('.git') else os.path.basename(self.url())[:-4])
-
-
- class repositories(dict):
- KEY_BASEURL = "BASE_URL"
- KEY_REPOS = "REPO_LIST"
-
- def __init__(self, filename):
- with open(filename, 'r') as fh:
- data = json.loads(fh.read())
- for i in range(0, len(data[self.KEY_REPOS])):
- data[self.KEY_REPOS][i] = repo(data[self.KEY_REPOS][i], data[self.KEY_BASEURL])
- dict.__init__(self, data)
-
- def repolist(self):
- return self[self.KEY_REPOS]
-
- if __name__ == "__main__":
- rl = repositories("repos.json")
- for r in rl.repolist():
- r.init_repo()
|