Class: Debci::HTML

Inherits:
Object
  • Object
show all
Includes:
ActiveSupport::NumberHelper, HTMLHelpers, ERB::Util
Defined in:
lib/debci/html.rb

Constant Summary

Constants included from HTMLHelpers

Debci::HTMLHelpers::ICONS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from HTMLHelpers

#icon

Constructor Details

#initialize(root_directory = Debci.config.html_dir) ⇒ HTML

Returns a new instance of HTML



18
19
20
21
22
23
24
25
# File 'lib/debci/html.rb', line 18

def initialize(root_directory=Debci.config.html_dir)
  @root_directory = root_directory
  @repository = Debci::Repository.new
  @package_prefixes = @repository.prefixes

  @head = read_config_file('head.html')
  @footer = read_config_file('footer.html')
end

Instance Attribute Details

#root_directoryObject (readonly)

Returns the value of attribute root_directory



16
17
18
# File 'lib/debci/html.rb', line 16

def root_directory
  @root_directory
end

Instance Method Details

#blacklist(filename) ⇒ Object



93
94
95
96
# File 'lib/debci/html.rb', line 93

def blacklist(filename)
  @status_nav = load_template(:status_nav)
  expand_template(:blacklist, filename)
end

#expand_url(url, suite) ⇒ Object

expand { SUITE } macro in URLs



116
117
118
# File 'lib/debci/html.rb', line 116

def expand_url(url, suite)
  url && url.gsub('{SUITE}', suite)
end

#filesize(filename, format) ⇒ Object



120
121
122
123
124
# File 'lib/debci/html.rb', line 120

def filesize(filename,format)
  if File.exist?(filename)
    format % number_to_human_size(File.size(filename))
  end
end

#history(package, suite, architecture, filename) ⇒ Object



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/debci/html.rb', line 126

def history(package, suite, architecture, filename)
  @package = package
  @suite = suite
  @architecture = architecture
  @packages_dir = 'data/packages'
  @package_dir = File.join(suite, architecture, package.prefix, package.name)
  @site_url = expand_url(Debci.config.url_base, @suite)
  @artifacts_url_base = expand_url(Debci.config.artifacts_url_base, @suite)
  @moretitle = "#{package.name}/#{suite}/#{architecture}"
  history = package.history(@suite, @architecture)
  @latest = history && history.first
  @history = package.history(@suite, @architecture)
  @latest = @history && @history.first
  @package_links = load_template(:package_links)
  expand_template(:history, filename)
end

#index(filename) ⇒ Object



27
28
29
30
# File 'lib/debci/html.rb', line 27

def index(filename)
  @news = @repository.global_news
  expand_template(:index, filename)
end

#obsolete_packages_page(filename) ⇒ Object



111
112
113
# File 'lib/debci/html.rb', line 111

def obsolete_packages_page(filename)
  expand_template(:packages, filename)
end

#package(package, filename) ⇒ Object



98
99
100
101
102
103
# File 'lib/debci/html.rb', line 98

def package(package, filename)
  @package = package
  @moretitle = package.name
  @package_links = load_template(:package_links)
  expand_template(:package, filename)
end

#platform_specific_issues(dirname) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/debci/html.rb', line 78

def platform_specific_issues(dirname)
  @status_nav = load_template(:status_nav)

  @filters = {
    "#{dirname}": ["All", -1],
    "#{dirname}/last_thirty_days": ["Last 30 Days", 30],
    "#{dirname}/last_one_eighty_days": ["Last 180 Days", 180],
    "#{dirname}/last_year": ["Last Year", 365]
  }

  @filters.each do |target, filter|
    generate_platform_specific_issues(target, filter)
  end
end

#prefix(prefix, filename) ⇒ Object



105
106
107
108
109
# File 'lib/debci/html.rb', line 105

def prefix(prefix, filename)
  @prefix = prefix
  @moretitle = prefix
  expand_template(:packagelist, filename)
end

#status(filename) ⇒ Object



32
33
34
35
# File 'lib/debci/html.rb', line 32

def status(filename)
  @status_nav = load_template(:status_nav)
  expand_template(:status, filename)
end

#status_alerts(filename) ⇒ Object



37
38
39
40
41
# File 'lib/debci/html.rb', line 37

def status_alerts(filename)
  @tmpfail = @repository.tmpfail_packages
  @alert_number = @tmpfail.length
  expand_template(:status_alerts, filename)
end

#status_failing(dirname) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/debci/html.rb', line 61

def status_failing(dirname)
  @status_nav = load_template(:status_nav)

  packages = @repository.failing_packages
  @packages_per_page = Debci.config.failing_packages_per_page.to_i

  @filters = { 'had_success': 'Had Success',
               'always_failing': 'Always Failing' }

  generate_status_failing(dirname, packages, @filters.each_key,
                          @packages_per_page)
  @repository.suites.map do |suite|
    generate_status_failing(dirname, packages, @filters.each_key,
                            @packages_per_page, suite)
  end
end

#status_pending_jobs(dirname) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/debci/html.rb', line 48

def status_pending_jobs(dirname)
  @status_nav = load_template(:status_nav)
  @status_per_page = Debci.config.pending_status_per_page.to_i
  @pending_jobs = Debci::Job.pending.length

  @suites_jobs = Hash[@repository.suites.map do |x|
    [x, Debci::Job.pending.where(suite: x).count]
  end
  ]
  generate_status_pending(dirname, nil) # For 'All suites'
  @suites_jobs.each_key { |suite| generate_status_pending(dirname, suite) }
end

#status_slow(filename) ⇒ Object



43
44
45
46
# File 'lib/debci/html.rb', line 43

def status_slow(filename)
  @slow = @repository.slow_packages
  expand_template(:status_slow, filename)
end