urbanopt-cli 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +10 -1
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +36 -0
- data/Gemfile +30 -26
- data/README.md +27 -14
- data/Rakefile +6 -0
- data/developer_nrel_key.rb +1 -0
- data/example_files/Gemfile +22 -36
- data/example_files/example_project.json +1 -1
- data/example_files/mappers/Baseline.rb +112 -93
- data/example_files/mappers/HighEfficiency.rb +2 -1
- data/lib/uo_cli.rb +207 -167
- data/lib/uo_cli/version.rb +2 -1
- data/uo_cli.gemspec +9 -11
- metadata +30 -33
- data/lib/change_log.rb +0 -152
data/lib/uo_cli/version.rb
CHANGED
data/uo_cli.gemspec
CHANGED
@@ -29,18 +29,16 @@ Gem::Specification.new do |spec|
|
|
29
29
|
# spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
30
30
|
spec.executables = ['uo']
|
31
31
|
spec.require_paths = ['lib']
|
32
|
-
spec.required_ruby_version = '~> 2.
|
33
|
-
|
34
|
-
# use specific versions of these dependencies while using Ruby 2.2
|
35
|
-
spec.add_development_dependency 'rack', '2.1.2'
|
32
|
+
spec.required_ruby_version = '~> 2.5.0'
|
36
33
|
|
37
34
|
# use specific versions of urbanopt and openstudio dependencies while under heavy development
|
38
|
-
spec.add_dependency '
|
39
|
-
spec.add_dependency 'urbanopt-
|
40
|
-
|
41
|
-
spec.
|
42
|
-
|
43
|
-
spec.add_development_dependency '
|
44
|
-
spec.add_development_dependency '
|
35
|
+
spec.add_dependency 'optimist'
|
36
|
+
spec.add_dependency 'urbanopt-geojson', '~> 0.3.0'
|
37
|
+
spec.add_dependency 'urbanopt-reopt', '~> 0.3.0'
|
38
|
+
spec.add_dependency 'urbanopt-scenario', '~> 0.3.0'
|
39
|
+
|
40
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
41
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
42
|
+
spec.add_development_dependency 'rspec', '~> 3.7'
|
45
43
|
spec.add_development_dependency 'rubocop', '~> 0.54.0'
|
46
44
|
end
|
metadata
CHANGED
@@ -1,113 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: urbanopt-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: optimist
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: urbanopt-geojson
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.3.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.3.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: urbanopt-
|
42
|
+
name: urbanopt-reopt
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.3.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.3.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: urbanopt-scenario
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
type: :
|
61
|
+
version: 0.3.0
|
62
|
+
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.3.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '2.1'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '2.1'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '13.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '13.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '3.
|
103
|
+
version: '3.7'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '3.
|
110
|
+
version: '3.7'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rubocop
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,7 +136,6 @@ files:
|
|
136
136
|
- ".gitignore"
|
137
137
|
- ".rspec"
|
138
138
|
- ".rubocop.yml"
|
139
|
-
- ".ruby-version"
|
140
139
|
- CHANGELOG.md
|
141
140
|
- CONTRIBUTING.md
|
142
141
|
- Gemfile
|
@@ -162,7 +161,6 @@ files:
|
|
162
161
|
- example_files/weather/USA_NY_Buffalo-Greater.Buffalo.Intl.AP.725280_TMY3.ddy
|
163
162
|
- example_files/weather/USA_NY_Buffalo-Greater.Buffalo.Intl.AP.725280_TMY3.epw
|
164
163
|
- example_files/weather/USA_NY_Buffalo-Greater.Buffalo.Intl.AP.725280_TMY3.stat
|
165
|
-
- lib/change_log.rb
|
166
164
|
- lib/uo_cli.rb
|
167
165
|
- lib/uo_cli/version.rb
|
168
166
|
- uo_cli.gemspec
|
@@ -179,15 +177,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
177
|
requirements:
|
180
178
|
- - "~>"
|
181
179
|
- !ruby/object:Gem::Version
|
182
|
-
version: 2.
|
180
|
+
version: 2.5.0
|
183
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
182
|
requirements:
|
185
183
|
- - ">="
|
186
184
|
- !ruby/object:Gem::Version
|
187
185
|
version: '0'
|
188
186
|
requirements: []
|
189
|
-
|
190
|
-
rubygems_version: 2.4.5.1
|
187
|
+
rubygems_version: 3.1.2
|
191
188
|
signing_key:
|
192
189
|
specification_version: 4
|
193
190
|
summary: URBANopt CLI
|
data/lib/change_log.rb
DELETED
@@ -1,152 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'github_api'
|
4
|
-
require 'date'
|
5
|
-
require 'optparse'
|
6
|
-
require 'optparse/date'
|
7
|
-
|
8
|
-
# Instructions:
|
9
|
-
# Get a token from github's settings (https://github.com/settings/tokens)
|
10
|
-
# For security, set your token as an env variable. This script is prepared for one called GITHUB_CHANGELOG_TOKEN
|
11
|
-
#
|
12
|
-
# Example:
|
13
|
-
# ruby change_log.rb -t abcdefghijklmnopqrstuvwxyz -s 2017-09-06
|
14
|
-
#
|
15
|
-
|
16
|
-
options = {}
|
17
|
-
OptionParser.new do |opts|
|
18
|
-
opts.banner = "Usage: change_log.rb [options]\n" \
|
19
|
-
'Prints New, Open, Closed Issues, and number of accepted PRs'
|
20
|
-
opts.separator ''
|
21
|
-
|
22
|
-
# defaults, go back 90 days
|
23
|
-
options[:start_date] = Date.today - 90
|
24
|
-
# Add one day to end date to make it inclusive of current day.
|
25
|
-
options[:end_date] = Date.today + 1
|
26
|
-
|
27
|
-
opts.on('-s', '--start-date [DATE]', Date, 'Start of data (e.g. 2017-09-06)') do |v|
|
28
|
-
options[:start_date] = v
|
29
|
-
end
|
30
|
-
opts.on('-e', '--end-date [DATE]', Date, 'End of data (e.g. 2017-09-13)') do |v|
|
31
|
-
options[:end_date] = v
|
32
|
-
end
|
33
|
-
opts.on('-t', '--token [String]', String, 'Github API Token') do |v|
|
34
|
-
options[:token] = v
|
35
|
-
end
|
36
|
-
end.parse!
|
37
|
-
|
38
|
-
# Convert dates to time objects
|
39
|
-
options[:start_date] = Time.parse(options[:start_date].to_s)
|
40
|
-
options[:end_date] = Time.parse(options[:end_date].to_s)
|
41
|
-
puts options
|
42
|
-
|
43
|
-
### Repository options
|
44
|
-
repo_owner = 'URBANopt'
|
45
|
-
repo = 'uo-cli'
|
46
|
-
|
47
|
-
github = Github.new
|
48
|
-
if options[:token]
|
49
|
-
puts 'Using github token'
|
50
|
-
github = Github.new oauth_token: options[:token]
|
51
|
-
elsif ENV['GITHUB_CHANGELOG_TOKEN']
|
52
|
-
puts 'Using Github token from user environment'
|
53
|
-
github = Github.new oauth_token: ENV['GITHUB_CHANGELOG_TOKEN']
|
54
|
-
end
|
55
|
-
|
56
|
-
total_open_issues = []
|
57
|
-
total_open_pull_requests = []
|
58
|
-
new_issues = []
|
59
|
-
closed_issues = []
|
60
|
-
accepted_pull_requests = []
|
61
|
-
|
62
|
-
def get_num(issue)
|
63
|
-
issue.html_url.split('/')[-1].to_i
|
64
|
-
end
|
65
|
-
|
66
|
-
def get_issue_num(issue)
|
67
|
-
"\##{get_num(issue)}"
|
68
|
-
end
|
69
|
-
|
70
|
-
def get_html_url(issue)
|
71
|
-
issue.html_url
|
72
|
-
end
|
73
|
-
|
74
|
-
def get_title(issue)
|
75
|
-
issue.title
|
76
|
-
end
|
77
|
-
|
78
|
-
def print_issue(issue)
|
79
|
-
is_feature = false
|
80
|
-
issue.labels.each { |label| is_feature = true if label.name == 'Feature Request' }
|
81
|
-
|
82
|
-
if is_feature
|
83
|
-
"- Improved [#{get_issue_num(issue)}]( #{get_html_url(issue)} ), #{get_title(issue)}"
|
84
|
-
else
|
85
|
-
"- Fixed [#{get_issue_num(issue)}]( #{get_html_url(issue)} ), #{get_title(issue)}"
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
# Process Open Issues
|
90
|
-
results = -1
|
91
|
-
page = 1
|
92
|
-
while results != 0
|
93
|
-
resp = github.issues.list user: repo_owner, repo: repo, sort: 'created', direction: 'asc',
|
94
|
-
state: 'open', per_page: 100, page: page
|
95
|
-
results = resp.length
|
96
|
-
resp.env[:body].each do |issue, _index|
|
97
|
-
created = Time.parse(issue.created_at)
|
98
|
-
if !issue.key?(:pull_request)
|
99
|
-
total_open_issues << issue
|
100
|
-
if created >= options[:start_date] && created <= options[:end_date]
|
101
|
-
new_issues << issue
|
102
|
-
end
|
103
|
-
else
|
104
|
-
total_open_pull_requests << issue
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
page += 1
|
109
|
-
end
|
110
|
-
|
111
|
-
# Process Closed Issues
|
112
|
-
results = -1
|
113
|
-
page = 1
|
114
|
-
while results != 0
|
115
|
-
resp = github.issues.list user: repo_owner, repo: repo, sort: 'created', direction: 'asc',
|
116
|
-
state: 'closed', per_page: 100, page: page
|
117
|
-
results = resp.length
|
118
|
-
resp.env[:body].each do |issue, _index|
|
119
|
-
created = Time.parse(issue.created_at)
|
120
|
-
closed = Time.parse(issue.closed_at)
|
121
|
-
if !issue.key?(:pull_request)
|
122
|
-
if created >= options[:start_date] && created <= options[:end_date]
|
123
|
-
new_issues << issue
|
124
|
-
end
|
125
|
-
if closed >= options[:start_date] && closed <= options[:end_date]
|
126
|
-
closed_issues << issue
|
127
|
-
end
|
128
|
-
elsif closed >= options[:start_date] && closed <= options[:end_date]
|
129
|
-
accepted_pull_requests << issue
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
page += 1
|
134
|
-
end
|
135
|
-
|
136
|
-
closed_issues.sort! { |x, y| get_num(x) <=> get_num(y) }
|
137
|
-
new_issues.sort! { |x, y| get_num(x) <=> get_num(y) }
|
138
|
-
accepted_pull_requests.sort! { |x, y| get_num(x) <=> get_num(y) }
|
139
|
-
total_open_pull_requests.sort! { |x, y| get_num(x) <=> get_num(y) }
|
140
|
-
|
141
|
-
puts "Total Open Issues: #{total_open_issues.length}"
|
142
|
-
puts "Total Open Pull Requests: #{total_open_pull_requests.length}"
|
143
|
-
puts "\nDate Range: #{options[:start_date].strftime('%m/%d/%y')} - #{options[:end_date].strftime('%m/%d/%y')}:"
|
144
|
-
puts "\nNew Issues: #{new_issues.length} (" + new_issues.map { |issue| get_issue_num(issue) }.join(', ') + ')'
|
145
|
-
|
146
|
-
puts "\nClosed Issues: #{closed_issues.length}"
|
147
|
-
closed_issues.each { |issue| puts print_issue(issue) }
|
148
|
-
|
149
|
-
puts "\nAccepted Pull Requests: #{accepted_pull_requests.length}"
|
150
|
-
accepted_pull_requests.each { |issue| puts print_issue(issue) }
|
151
|
-
|
152
|
-
puts "\nAll Open Issues: #{total_open_issues.length} (" + total_open_issues.map { |issue| get_issue_num(issue) }.join(', ') + ')'
|