示例#1
0
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()
示例#2
0
    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()
示例#3
0
    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
示例#4
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
示例#5
0
 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()
示例#6
0
    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
示例#7
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