コード例 #1
0
    def __choose_repo(self):
        """
        Return the path of a repository, either the only repo or presenting the user
        with a choice.
        """

        repositories = Repository.all()

        if len(repositories) == 1:
            return repositories[0]
        elif len(repositories) == 0:
            print "You do not have a Mercury module repository."
            if self.confirm("Would you like to create one?") == "y":
                while True:
                    path = self.ask("Path to new repository: ")

                    try:
                        Repository.create(path)

                        print "Initialised repository at %s.\n" % path

                        return Repository.all()[0]
                    except NotEmptyException:
                        print "The target (%s) already exists.\n" % path

                return None
            else:
                return None
        else:
            print "You have %d Mercury module repositories. Which would you like to install into?\n" % len(
                repositories)
            for i in xrange(len(repositories)):
                print "  %5d  %s" % (i + 1, repositories[i])
            print

            while (True):
                print "repo>",
                try:
                    idx = int(raw_input().strip())

                    if idx >= 1 and idx <= len(repositories):
                        print

                        return repositories[idx - 1]
                    else:
                        raise ValueError(idx)
                except ValueError:
                    print "Not a valid selection. Please enter a number between 1 and %d." % len(
                        repositories)
コード例 #2
0
ファイル: manager.py プロジェクト: CodingDog/mercury
    def __choose_repo(self):
        """
        Return the path of a repository, either the only repo or presenting the user
        with a choice.
        """

        repositories = Repository.all()

        if len(repositories) == 1:
            return repositories[0]
        elif len(repositories) == 0:
            print "You do not have a Mercury module repository."
            if self.confirm("Would you like to create one?") == "y":
                while True:
                    path = self.ask("Path to new repository: ")

                    try:
                        Repository.create(path)

                        print "Initialised repository at %s.\n" % path

                        return Repository.all()[0]
                    except NotEmptyException:
                        print "The target (%s) already exists.\n" % path

                return None
            else:
                return None
        else:
            print "You have %d Mercury module repositories. Which would you like to install into?\n" % len(repositories)
            for i in xrange(len(repositories)):
                print "  %5d  %s" % (i + 1, repositories[i])
            print

            while True:
                print "repo>",
                try:
                    idx = int(raw_input().strip())

                    if idx >= 1 and idx <= len(repositories):
                        print

                        return repositories[idx - 1]
                    else:
                        raise ValueError(idx)
                except ValueError:
                    print "Not a valid selection. Please enter a number between 1 and %d." % len(repositories)
コード例 #3
0
ファイル: repository_test.py プロジェクト: 0xr0ot/drozer
 def testItShouldDeleteAModuleRepository(self):
     Configuration._Configuration__config = self.mockConfigWithoutRepos()
     
     Repository.create("./tmp")
     Repository.delete("./tmp")
     
     assert not os.path.exists("./tmp")
     
     assert Repository.all() == []
コード例 #4
0
ファイル: manager.py プロジェクト: CodingDog/mercury
    def __list_repositories(self):
        """
        Print a list of Mercury repositories (a) on the local system, and
        (b) registered as remotes.
        """

        print "Local repositories:"
        for repo in Repository.all():
            print "  %s" % repo
        print
コード例 #5
0
    def __list_repositories(self):
        """
        Print a list of Mercury repositories (a) on the local system, and
        (b) registered as remotes.
        """

        print "Local repositories:"
        for repo in Repository.all():
            print "  %s" % repo
        print
コード例 #6
0
ファイル: repository_test.py プロジェクト: 0xr0ot/drozer
 def testItShouldCreateAModuleRepository(self):
     Configuration._Configuration__config = self.mockConfigWithoutRepos()
     
     Repository.create("./tmp")
     
     assert os.path.exists("./tmp")
     assert os.path.exists("./tmp/__init__.py")
     assert os.path.exists("./tmp/.mercury_repository")
     
     assert Repository.all() == ["./tmp"]
     
     shutil.rmtree("./tmp")
コード例 #7
0
ファイル: repository_test.py プロジェクト: 0xr0ot/drozer
 def testItShouldEnableAModuleRepository(self):
     Configuration._Configuration__config = self.mockConfigWithoutRepos()
     
     Repository.create("./tmp")
     
     Configuration._Configuration__config = self.mockConfigWithoutRepos()
     
     Repository.enable("./tmp")
     
     assert Repository.all() == ["./tmp"]
     
     shutil.rmtree("./tmp")
コード例 #8
0
ファイル: repository_test.py プロジェクト: 0xr0ot/drozer
 def testItShouldNotEnableAFolderThatIsnNotAModuleRepository(self):
     Configuration._Configuration__config = self.mockConfigWithoutRepos()
     
     os.mkdir("./tmp")
     
     try:
         Repository.enable("./tmp")
         
         assert False, "expected UnknownRepository"
     except UnknownRepository:
         pass
     
     assert Repository.all() == []
     
     shutil.rmtree("./tmp")
コード例 #9
0
ファイル: repository_test.py プロジェクト: 0xr0ot/drozer
 def testItShouldRetrieveAllWithoutAConfigFile(self):
     Configuration._Configuration__config = self.mockConfigWithoutRepos()
     
     assert Repository.all() == []
コード例 #10
0
ファイル: repository_test.py プロジェクト: 0xr0ot/drozer
 def testItShouldRetrieveAnAdditionalRepository(self):
     Configuration._Configuration__config = self.mockConfigWithRepos(['/usr/local/mercury/modules'])
     
     assert Repository.all() == ['/usr/local/mercury/modules']
コード例 #11
0
ファイル: repository_test.py プロジェクト: 0xr0ot/drozer
 def testItShouldRetrieveNoAdditionalRepositories(self):
     Configuration._Configuration__config = self.mockConfigWithRepos([])
     
     assert Repository.all() == []