Class: Debci::HTML::JSON

Inherits:
Rooted
  • Object
show all
Defined in:
lib/debci/html.rb

Instance Attribute Summary collapse

Attributes inherited from Rooted

#root

Instance Method Summary collapse

Constructor Details

#initialize(suite, arch) ⇒ JSON

Returns a new instance of JSON.



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

def initialize(suite, arch)
  super()
  self.suite = suite
  self.arch = arch
end

Instance Attribute Details

#archObject

Returns the value of attribute arch.



85
86
87
# File 'lib/debci/html.rb', line 85

def arch
  @arch
end

#suiteObject

Returns the value of attribute suite.



84
85
86
# File 'lib/debci/html.rb', line 84

def suite
  @suite
end

Instance Method Details

#datadirObject



87
88
89
# File 'lib/debci/html.rb', line 87

def datadir
  'status'
end

#historyObject



127
128
129
130
131
132
133
# File 'lib/debci/html.rb', line 127

def history
  status_history = (root / suite / arch).glob('[0-9]*/[0-9]*/[0-9]*.json')
  status_history_data = status_history.sort.map { |f| ::JSON.parse(f.read) }

  h = root / suite / arch / 'history.json'
  h.write(::JSON.pretty_generate(status_history_data))
end

#packagesObject



135
136
137
138
# File 'lib/debci/html.rb', line 135

def packages
  p = root / suite / arch / 'packages.json'
  p.write(::JSON.pretty_generate(status_packages_data.map(&:job).as_json))
end

#statusObject



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/debci/html.rb', line 102

def status
  data = {
    pass: 0,
    fail: 0,
    neutral: 0,
    tmpfail: 0,
    total: 0,
  }
  status_packages_data.each do |package_status|
    status = package_status.job.status
    data[status.to_sym] += 1
    data[:total] += 1
  end
  data[:date] = Time.now.strftime('%Y-%m-%dT%H:%M:%S')

  output = ::JSON.pretty_generate(data)

  today = root / suite / arch / Time.now.strftime('%Y/%m/%d.json')
  today.parent.mkpath
  today.write(output)

  current = root / suite / arch / 'status.json'
  current.write(output)
end

#status_packages_dataObject



97
98
99
100
# File 'lib/debci/html.rb', line 97

def status_packages_data
  @status_packages_data ||=
    Debci::PackageStatus.where(suite: suite, arch: arch).includes(:job)
end