def get_package_repo(name, verbose=False): for package_repo in get_package_repos(verbose=verbose): if package_repo.name == name: return package_repo import wasanbon raise wasanbon.RepositoryNotFoundException()
def get_repo(self, name, user=None, verbose=False): try : if user: if verbose: sys.stdout.write(' - Searching Repository %s/%s\n' % (user, name)) repo = self._github.get_user(user).get_repo(name) pass else: if verbose: sys.stdout.write(' - Searching Repository %s/%s\n' % (self.user, name)) repo = self._github.get_user().get_repo(name) except Exception, ex: raise wasanbon.RepositoryNotFoundException()
def status(self, args): """ Show status of package local repository """ options, argv = self.parse_args(args[:]) verbose = options.verbose_flag p = admin.package.get_package_from_path(os.getcwd()) sys.stdout.write('%s :\n' % p.name) repo = admin.repository.get_repository_from_path(os.getcwd(), verbose=verbose) if repo is None: raise wasanbon.RepositoryNotFoundException() if admin.repository.is_modified(repo, verbose=verbose): sys.stdout.write(' Modified\n') elif admin.repository.is_untracked(repo, verbose=verbose): sys.stdout.write(' Untracked files found\n') elif admin.repository.is_added(repo, verbose=False): sys.stdout.write(' Added\n') else: sys.stdout.write(' Up-to-date\n') return 0
def commit(self, args): """ Commit changes to local Package repository """ self.parser.add_option('-p', '--push', help='Push simultaneously', default=False, dest='push_flag', action='store_true') options, argv = self.parse_args(args[:]) verbose = options.verbose_flag push = options.push_flag p = admin.package.get_package_from_path(os.getcwd()) sys.stdout.write('# Committing package %s to local repository\n' % p.name) repo = admin.repository.get_repository_from_path(os.getcwd(), verbose=verbose) wasanbon.arg_check(argv, 4) comment = argv[3] if repo is None: raise wasanbon.RepositoryNotFoundException() if admin.repository.commit(repo, comment, verbose=verbose) == 0: sys.stdout.write('## Success.\n') if push: sys.stdout.write('# Pushing Package %s\n' % os.path.basename(os.getcwd())) repo = admin.repository.get_repository_from_path( os.getcwd(), verbose=verbose) if admin.repository.push(repo, verbose=verbose) != 0: sys.stdout.write('## Failed.\n') return -1 sys.stdout.write('## Success.\n') return 0 sys.stdout.write('## Failed.\n') return -1
def fork_repo(self, user, name, newname, verbose=False): if verbose: sys.stdout.write(' - Forking Repositoy %s/%s\n' % (user, name)) if self.exists_repo(name, verbose): raise wasanbon.RepositoryAlreadyExistsException() his_repo = self.get_repo(user=user, name=name, verbose=verbose) ret = self._github.get_user().create_fork(his_repo) time.sleep(5) for i in range(0, 5): # try 5 times try: if verbose: sys.stdout.write(' - Trying to check your repository %s\n' % name) forked_repo = self.get_repo(name) forked_repo.edit(newname) return forked_repo except: time.sleep(1) pass if verbose: sys.stdout.write(' - Can not find your repository.\n') raise wasanbon.RepositoryNotFoundException()
def get_rtcprofile(self, args): """ Get RTCProfile from Repository $ mgr.py repository get_rtcprofile [RTC_NAME] """ #self.parser.add_option('-p', '--pathuri', help='Directory point the url of repository (default="None")', default="None", type="string", dest="url") self.parser.add_option( '-t', '--type', help='Set the type of repository (default="git")', default="git", type="string", dest="type") self.parser.add_option('-u', '--username', help='Username of github', default=None, dest='username', action='store', type='string') self.parser.add_option('-p', '--password', help='Password of github', default=None, dest='password', action='store', type='string') options, argv = self.parse_args(args[:], self._print_alternative_rtcs) verbose = options.verbose_flag url = options.url typ = options.type username, password = wasanbon.user_pass(options.username, passwd=options.password) github = admin.github.Github(user=username, passwd=password) if url is "None": wasanbon.arg_check(argv, 4) pack = admin.package.get_package_from_path(os.getcwd()) repos = admin.binder.get_rtc_repos() curdir = os.getcwd() os.chdir(pack.get_rtcpath()) match = False if url is "None": failed_flag = False for rtc_name in argv[3:]: for repo in repos: if repo.name == argv[3]: sys.stdout.write( '# Accessing Remote repository named %s\n' % repo.name) if verbose: sys.stdout.write('## Repository Service is %s\n' % repo.service) if repo.service != 'github': sys.stdout.write( '## Error Service (%s) is not available\n' % repo.service) continue github = admin.github.Github(user=username, passwd=password) github.get_file_contents(repo.owner, repo.repo_name, 'RTC.xml', verbose=verbose) """ sys.stdout.write('# Cloning RTC (%s)\n' % rtc_name) ret = admin.repository.clone_rtc(repo, verbose=verbose) if ret < 0: sys.stdout.write('## Failed. Return Code = %s\n' % ret) failed_flag = True else: sys.stdout.write('## Success.\n') pass """ match = True else: match = True rtc_name = os.path.basename(url) repo = admin.binder.Repository(os.path.basename(url), type=typ, platform=wasanbon.platform, url=url, description="") sys.stdout.write('# Cloning RTC (%s)\n' % rtc_name) ret = admin.repository.clone_rtc(repo, verbose=verbose) if ret < 0: sys.stdout.write('## Failed. Return Code = %s\n' % ret) failed_flag = True else: sys.stdout.write('## Success.\n') pass match = True os.chdir(curdir) if not match: raise wasanbon.RepositoryNotFoundException() if failed_flag: return -1 return 0
def clone(self, args): """ Clone RTC. $ mgr.py repository clone [repo_name] """ self.parser.add_option( '-u', '--url', help='Directory point the url of repository (default="None")', default="None", type="string", dest="url") self.parser.add_option( '-t', '--type', help='Set the type of repository (default="git")', default="git", type="string", dest="type") options, argv = self.parse_args(args[:], self._print_alternative_rtcs) verbose = options.verbose_flag url = options.url typ = options.type if url is "None": wasanbon.arg_check(argv, 4) pack = admin.package.get_package_from_path(os.getcwd()) repos = admin.binder.get_rtc_repos() curdir = os.getcwd() os.chdir(pack.get_rtcpath()) match = False failed_flag = False if url is "None": for rtc_name in argv[3:]: for repo in repos: if repo.name == argv[3]: sys.stdout.write('# Cloning RTC (%s)\n' % rtc_name) ret = admin.repository.clone_rtc(repo, verbose=verbose) if ret < 0: sys.stdout.write('## Failed. Return Code = %s\n' % ret) failed_flag = True else: sys.stdout.write('## Success.\n') pass match = True break else: match = True rtc_name = os.path.basename(url) repo = admin.binder.Repository(os.path.basename(url), type=typ, platform=wasanbon.platform, url=url, description="") sys.stdout.write('# Cloning RTC (%s)\n' % rtc_name) ret = admin.repository.clone_rtc(repo, verbose=verbose) if ret < 0: sys.stdout.write('## Failed. Return Code = %s\n' % ret) failed_flag = True else: sys.stdout.write('## Success.\n') pass match = True os.chdir(curdir) if not match: raise wasanbon.RepositoryNotFoundException() if failed_flag: return -1 return 0