Merge: fix ci nitunit some
[nit.git] / lib / github / loader.nit
index 175f3d7..fe8e0bc 100644 (file)
@@ -120,9 +120,7 @@ class LoaderConfig
 
        # Github tokens wallet\13
        var wallet: GithubWallet is lazy do
-               var wallet = new GithubWallet.from_tokens(tokens)
-               wallet.no_colors = no_colors
-               return wallet
+               return new GithubWallet(tokens)
        end
 
        # Use colors in console display
@@ -236,13 +234,13 @@ class Loader
                return new IssueEventRepo(config.db.collection("issue_events"))
        end
 
-       fun start(repo_full_name: String) do
-               var job = jobs.find_by_id(repo_full_name)
+       fun start(repo_slug: String) do
+               var job = jobs.find_by_id(repo_slug)
                if job == null then
-                       log.info "Creating new job for `{repo_full_name}`"
-                       job = add_job(repo_full_name)
+                       log.info "Creating new job for `{repo_slug}`"
+                       job = add_job(repo_slug)
                else
-                       log.info "Resuming pending job for `{repo_full_name}`"
+                       log.info "Resuming pending job for `{repo_slug}`"
                end
                print "Load history for {job}..."
                get_branches(job)
@@ -250,18 +248,18 @@ class Loader
                finish_job(job)
        end
 
-       fun remove(repo_full_name: String) do
-               var job = jobs.find_by_id(repo_full_name)
+       fun remove(repo_slug: String) do
+               var job = jobs.find_by_id(repo_slug)
                if job == null then
-                       log.info "No job found for `{repo_full_name}`"
+                       log.info "No job found for `{repo_slug}`"
                else
-                       jobs.remove_by_id(repo_full_name)
-                       log.info "Deleted job for `{repo_full_name}`"
+                       jobs.remove_by_id(repo_slug)
+                       log.info "Deleted job for `{repo_slug}`"
                end
        end
 
        # Show wallet status
-       fun show_wallet do config.wallet.show_status
+       fun show_wallet do config.wallet.show_status(config.no_colors)
 
        # Show jobs status
        fun show_jobs do
@@ -274,10 +272,10 @@ class Loader
        end
 
        # Add a new job
-       fun add_job(repo_full_name: String): LoaderJob do
-               var repo = config.wallet.api.get_repo(repo_full_name)
+       fun add_job(repo_slug: String): LoaderJob do
+               var repo = config.wallet.api.get_repo(repo_slug)
                assert repo != null else
-                       error "Repository `{repo_full_name}` not found"
+                       error "Repository `{repo_slug}` not found"
                end
                repos.save repo
                var job = new LoaderJob(repo, config.start_from_issue)
@@ -296,7 +294,7 @@ class Loader
 
                var api = config.wallet.api
                var repo = job.repo
-               for branch in api.get_repo_branches(repo) do
+               for branch in api.get_repo_branches(repo.full_name) do
                        branch.repo = repo
                        branches.save branch
                        get_commits(job, branch)
@@ -311,7 +309,7 @@ class Loader
        fun get_commit(job: LoaderJob, commit_sha: String) do
                if commits.find_by_id(commit_sha) != null then return
                var api = config.wallet.api
-               var commit = api.get_commit(job.repo, commit_sha)
+               var commit = api.get_commit(job.repo.full_name, commit_sha)
                # print commit or else "NULL"
                if commit == null then return
                var message = commit.message or else "no message"
@@ -329,30 +327,24 @@ class Loader
        fun get_issues(job: LoaderJob) do
                if config.no_issues then return
 
-               var i = job.last_issue
-               var last_issue = get_last_issue(job)
-               if last_issue != null then
-                       while i <= last_issue.number do
-                               get_issue(job, i)
-                               job.last_issue = i
+               var api = config.wallet.api
+               var page = 1
+               var issues = api.get_repo_issues(job.repo.full_name, page, 100)
+               while issues.not_empty do
+                       for issue in issues do
+                               get_issue(job, issue.number)
+                               job.last_issue = issue.number
                                jobs.save job
-                               i += 1
                        end
                end
        end
 
-       # Load the `repo` last issue or abort.
-       private fun get_last_issue(job: LoaderJob): nullable Issue do
-               var api = config.wallet.api
-               return api.get_repo_last_issue(job.repo)
-       end
-
        # Load an issue or abort.
        private fun get_issue(job: LoaderJob, issue_number: Int) do
                if issues.find_by_id("{job.repo.mongo_id}/{issue_number}") != null then return
 
                var api = config.wallet.api
-               var issue = api.get_issue(job.repo, issue_number)
+               var issue = api.get_issue(job.repo.full_name, issue_number)
                assert issue != null else
                        check_error(api, "Issue #{issue_number} not found")
                end
@@ -371,7 +363,7 @@ class Loader
        private fun get_issue_comments(job: LoaderJob, issue: Issue) do
                if config.no_comments then return
                var api = config.wallet.api
-               for comment in api.get_issue_comments(job.repo, issue) do
+               for comment in api.get_issue_comments(job.repo.full_name, issue.number) do
                        comment.repo = job.repo
                        issue_comments.save comment
                end
@@ -382,7 +374,7 @@ class Loader
                if config.no_events then return
 
                var api = config.wallet.api
-               for event in api.get_issue_events(job.repo, issue) do
+               for event in api.get_issue_events(job.repo.full_name, issue.number) do
                        event.repo = job.repo
                        issue_events.save event
                end
@@ -391,7 +383,7 @@ class Loader
        # Load a pull request or abort.
        private fun get_pull(job: LoaderJob, issue: Issue): PullRequest do
                var api = config.wallet.api
-               var pr = api.get_pull(job.repo, issue.number)
+               var pr = api.get_pull(job.repo.full_name, issue.number)
                assert pr != null else
                        check_error(api, "Pull request #{issue.number} not found")
                end
@@ -407,7 +399,7 @@ class Loader
                if config.no_events then return
 
                var api = config.wallet.api
-               for event in api.get_issue_events(job.repo, pull) do
+               for event in api.get_issue_events(job.repo.full_name, pull.number) do
                        event.repo = job.repo
                        issue_events.save event
                end