Class: Lariat::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/lariat/cli.rb

Class Method Summary collapse

Class Method Details

.gather_project_roundup_data(gh, queries, build_stats) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/lariat/cli.rb', line 6

def self.gather_project_roundup_data(gh, queries, build_stats)
  args = { report_date: 1.week.ago.to_s.split(/ /).first }
  issue_category_queries = queries["issue_category_queries"]

  issue_summary_results = queries["issue_summary_queries"].map do |query|
    results = gh.search_issues(query["query"] % args)
    {:title => query["title"], total: results.total_count }
  end

  issue_category_results = issue_category_queries.keys.map do |key|
    results = issue_category_queries[key].map do |query|
      results = gh.search_issues(query["query"] % args)
      results.total_count
    end
    { key => results }
  end

  pr_results = queries["pr_queries"].map do |query|
    results = gh.search_issues(query["query"] % args)
    {:section => query["section"], :title => query["title"], total: results.total_count }
  end

  top_issues_results = queries["top_issue_queries"].map do |query_definition|
    results = gh.search_issues(query_definition["query"])
    {:section => query_definition["section"], :title => query_definition["title"], :issues => results.to_h["items"] }
  end

  ::Lariat::IssueWriter.write_issue(build_stats, top_issues_results, issue_summary_results, issue_category_results, pr_results)
end

.generate_project_roundup(build_stats = nil) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/lariat/cli.rb', line 36

def self.generate_project_roundup(build_stats = nil)
  build_stats ||= ::Lariat::SabotageStats.gather_stats("https://sabotage.internal.mx/stats.json", 7)
  gh = ::Lariat::Github.new("config/github.yml")
  queries = load_queries

  issue_body = gather_project_roundup_data(gh, queries, build_stats)
  process_project_roundup(gh, queries["project_roundup_defaults"].first, issue_body)
end

.load_queriesObject



56
57
58
# File 'lib/lariat/cli.rb', line 56

def self.load_queries
  ::Lariat.load_config_from_yaml("config/queries.yml")
end

.process_project_roundup(gh, issue_defaults, issue_body) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/lariat/cli.rb', line 45

def self.process_project_roundup(gh, issue_defaults, issue_body)
  # find and close previous roundup
  previous_issue = gh.search_issues('is:issue is:open user:%{user} repo:%{repository} label:"%{label}"' % issue_defaults.symbolize_keys)

  gh.close_issue(previous_issue.items.first) if previous_issue.total_count > 0

  # create new issue
  date_params = { week_ending: Date.today.to_s }
  gh.create_issue(issue_defaults["user"], issue_defaults["repository"], issue_defaults["title"] % date_params, issue_body, [issue_defaults["label"]])
end