past_yer_eyes 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c18495e807b2ce25602f8aa69a49244221f94eb3
4
- data.tar.gz: 5a7ae5401634428f61835934c5e71c28a133a09a
3
+ metadata.gz: 333fad456bbf57ba8052aac6fc2376e776817ece
4
+ data.tar.gz: ee28f4d78a8cd09a4acd9e2fb7fd314f607a689e
5
5
  SHA512:
6
- metadata.gz: cdb39c2f08f957aa4225a277a67791f71e04c9e097a961f292a52caef7fd8a5c73bf6adb3f32cbdcaf77072857b43cede625d545cf6fc6aeb168d508a1d8580c
7
- data.tar.gz: 75d921c89fb9b0b8efdcc91ac96cd7d15c3d7e7a48cf9754849dcb079c7f4c9005ca36086d4be4816487a9335524ea7797adb339ec3d5d61f5cce920ee0a5212
6
+ metadata.gz: 90e29fc54c05e511f1a1713be3f54cd03073e3836b25952c103f3f316422cbc4c30d6e485ce9ece06827b9cac90c7a839951106dee7666741ad54ea974d9f766
7
+ data.tar.gz: ebed44de77d1d32b27e5b32e708e83a9f75d79d5e0c516c033055cdda338f0136c48cbc2aaa02d6d321582cab29673c150ed02bdc3b40587d2e945a5e098cbc5
@@ -0,0 +1,28 @@
1
+ module PastYerEyes
2
+ class BatchRecord
3
+ attr_accessor :name, :guid, :status, :duration, :base_temperature, :batch_key, :events
4
+
5
+ def self.parse(key, data)
6
+ record = ::PastYerEyes::BatchRecord.new
7
+ record.batch_key = key
8
+ record.guid = data.fetch("guid", "")
9
+ record.status = data.fetch("status", "")
10
+ record.duration = data.fetch("duration", "")
11
+ record.base_temperature = data.fetch("base_temperature")
12
+ record.name = data.fetch("name", "")
13
+
14
+ record.events = data["events"].map do |key, value|
15
+ ::PastYerEyes::BatchEvent.parse(key, value)
16
+ end
17
+
18
+ record
19
+ end
20
+ end
21
+
22
+ class BatchEvent < Struct.new(:guid, :data_point, :data_type, :timestamp)
23
+ def self.parse(key, event_hash)
24
+ ::PastYerEyes::BatchEvent.new(key, event_hash["data"], event_hash["name"], event_hash["timestamp"])
25
+ end
26
+ end
27
+ end
28
+
@@ -20,16 +20,18 @@ module PastYerEyes
20
20
  option :log_name, :type => :string, :default => "./pasteurization.json", :aliases => "-l"
21
21
  option :sheet_name, :type => :string, :aliases => "-s"
22
22
  option :session, :type => :string, :default => "./session.json", :aliases => "-e"
23
-
23
+ option :exclude, :type => :boolean, :default => false
24
24
  def create_spreadsheet
25
25
  spreadsheet_name = options.fetch(:log_name, default_spreadsheet_name)
26
26
  logfile_name = options[:log_name]
27
27
  session_file = options[:session]
28
+ filter_options = {}
29
+ filter_options[:completed] = options[:exclude]
28
30
 
29
31
  fail "#{session_file} does not exist" unless File.exist?(session_file)
30
32
  fail "#{logfile_name} does not exist" unless File.exist?(logfile_name)
31
33
 
32
- ::PastYerEyes::LogParser.parse(session_file, logfile_name, spreadsheet_name)
34
+ ::PastYerEyes::LogParser.parse(filter_options, session_file, logfile_name, spreadsheet_name)
33
35
  end
34
36
 
35
37
  default_task :create_spreadsheet
@@ -1,61 +1,19 @@
1
1
  require "json"
2
- require "google/api_client"
3
- require "google_drive"
4
-
5
- TIMESTAMP_COL = 1
6
- READING_COL = 2
7
- DATA_COL = 3
2
+ require "pry"
3
+ require "awesome_print"
8
4
 
9
5
  module PastYerEyes
10
6
  class LogParser
11
- def self.parse(session_file, logfile_name, spreadsheet_name)
12
- session = GoogleDrive.saved_session(session_file)
13
-
14
- sheet = session.create_spreadsheet(spreadsheet_name)
15
-
7
+ def self.parse(options, session_file, logfile_name, spreadsheet_name)
16
8
  file = File.read(logfile_name)
17
9
 
18
10
  records = JSON.parse(file)
19
11
 
20
- records.each do |record|
21
- print_record(sheet, record)
22
- end
23
- end
24
-
25
- def self.print_footer(ws, row, batch_name, batch_record)
26
- ws[row, 1] = "Batch Name"
27
- ws[row, 2] = batch_name
28
- row += 1
29
- ws[row, 1] = "Duration"
30
- ws[row, 2] = batch_record['duration']
31
- row += 1
32
- ws[row, 1] = "Base Temperature"
33
- ws[row, 2] = batch_record['base_temperature']
34
- row += 1
35
- ws[row, 1] = "Status"
36
- ws[row, 2] = batch_record['status']
37
- ws.save
38
- end
39
-
40
- def self.print_record(sheet, record)
41
- batch_name = record.first
42
- batch_record = record[1]
43
-
44
- ws = sheet.add_worksheet("#{batch_record['name']}: #{batch_record['status']}")
45
-
46
- ws[1,TIMESTAMP_COL] = "Timestamp"
47
- ws[1,READING_COL] = "Reading"
48
- ws[1,DATA_COL] = "Value"
49
-
50
- row = 2
51
- batch_record['events'].each do |key, value|
52
- ws[row, TIMESTAMP_COL] = value["timestamp"]
53
- ws[row, READING_COL] = value["name"]
54
- ws[row, DATA_COL] = value["data"]
55
- row += 1
12
+ batches = records["batches"].map do |key, value|
13
+ ::PastYerEyes::BatchRecord.parse(key, value)
56
14
  end
57
15
 
58
- print_footer(ws, row + 1, batch_name, batch_record)
16
+ SpreadsheetWriter.write_spreadsheet(options, session_file, spreadsheet_name, batches)
59
17
  end
60
18
  end
61
19
  end
@@ -0,0 +1,66 @@
1
+ require "google/api_client"
2
+ require "google_drive"
3
+
4
+ module PastYerEyes
5
+ TIMESTAMP_COL = 1
6
+ READING_COL = 2
7
+ DATA_COL = 3
8
+
9
+ class SpreadsheetWriter
10
+ def self.suppress_record(options, record)
11
+ if options[:completed]
12
+ return record.status != "Completed"
13
+ end
14
+
15
+ false
16
+ end
17
+
18
+ def self.write_spreadsheet(options, session_file, spreadsheet_name, records)
19
+ session = GoogleDrive.saved_session(session_file)
20
+
21
+ puts "Creating Spreadsheet #{spreadsheet_name}"
22
+ sheet = session.create_spreadsheet(spreadsheet_name)
23
+
24
+ records.each do |record|
25
+ print_record(sheet, record) unless suppress_record(options, record)
26
+ end
27
+ end
28
+
29
+ def self.print_footer(ws, row, record)
30
+ ws[row, 1] = "Batch Name"
31
+ ws[row, 2] = record.name
32
+ row += 1
33
+ ws[row, 1] = "Duration"
34
+ ws[row, 2] = record.duration
35
+ row += 1
36
+ ws[row, 1] = "Base Temperature"
37
+ ws[row, 2] = record.base_temperature
38
+ row += 1
39
+ ws[row, 1] = "Status"
40
+ ws[row, 2] = record.status
41
+ ws.save
42
+ end
43
+
44
+ def self.print_record(sheet, record)
45
+ worksheet_name = "#{record.name}: #{record.status}"
46
+ puts "Creating worksheet for #{worksheet_name}"
47
+ ws = sheet.add_worksheet(worksheet_name)
48
+
49
+ ws[1,TIMESTAMP_COL] = "Timestamp"
50
+ ws[1,READING_COL] = "Reading"
51
+ ws[1,DATA_COL] = "Value"
52
+
53
+ row = 2
54
+
55
+ record.events.each do |event|
56
+ ws[row, TIMESTAMP_COL] = event.timestamp
57
+ ws[row, READING_COL] = event.data_type
58
+ ws[row, DATA_COL] = event.data_point unless event.data_point == 0
59
+ row += 1
60
+ end
61
+
62
+ print_footer(ws, row + 1, record)
63
+ end
64
+ end
65
+ end
66
+
@@ -1,3 +1,3 @@
1
1
  module PastYerEyes
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
data/lib/past_yer_eyes.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require "past_yer_eyes/cli"
2
+ require "past_yer_eyes/batch_record"
2
3
  require "past_yer_eyes/log_parser"
4
+ require "past_yer_eyes/spreadsheet_writer"
3
5
 
4
6
  require "past_yer_eyes/version"
5
7
 
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.add_dependency "thor", "~> 0.19"
21
21
  spec.add_dependency "google_drive", "~> 1.0"
22
22
 
23
+ spec.add_development_dependency "pry"
24
+ spec.add_development_dependency "awesome_print", "~> 1.6"
23
25
  spec.add_development_dependency "bundler", "~> 1.11"
24
26
  spec.add_development_dependency "rake", "~> 10.0"
25
27
  spec.add_development_dependency "rspec", "~> 3.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: past_yer_eyes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Newell
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: awesome_print
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -100,8 +128,10 @@ files:
100
128
  - bin/past_yer_eyes
101
129
  - bin/setup
102
130
  - lib/past_yer_eyes.rb
131
+ - lib/past_yer_eyes/batch_record.rb
103
132
  - lib/past_yer_eyes/cli.rb
104
133
  - lib/past_yer_eyes/log_parser.rb
134
+ - lib/past_yer_eyes/spreadsheet_writer.rb
105
135
  - lib/past_yer_eyes/version.rb
106
136
  - past_yer_eyes.gemspec
107
137
  homepage: