jkr 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
metadata CHANGED
@@ -1,89 +1,197 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jkr
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
5
  platform: ruby
6
- authors:
7
- - Yuto HAYAMIZU
6
+ authors:
7
+ - Yuto Hayamizu
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
-
12
- date: 2010-05-17 00:00:00 +09:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rubyforge
11
+ date: 2016-10-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: term-ansicolor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '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: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
17
76
  type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 2.0.4
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: hoe
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard-rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
27
104
  type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 2.6.0
34
- version:
35
- description: FIX (describe your package)
36
- email:
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Jkr is a script execution manager for experimental measurements.
126
+ email:
37
127
  - y.hayamizu@gmail.com
38
- executables:
128
+ executables:
39
129
  - jkr
40
130
  extensions: []
41
-
42
- extra_rdoc_files:
43
- - History.txt
44
- - Manifest.txt
45
- - README.txt
46
- files:
131
+ extra_rdoc_files: []
132
+ files:
133
+ - ".gitignore"
134
+ - ".rspec"
135
+ - Gemfile
136
+ - Gemfile.lock
137
+ - Guardfile
47
138
  - History.txt
139
+ - LICENSE.txt
48
140
  - Manifest.txt
49
- - README.txt
141
+ - README.rdoc
50
142
  - Rakefile
51
- - bin/jkr
143
+ - bin/console
144
+ - etc/example.plan
145
+ - etc/zsh-comp.sh
146
+ - exe/jkr
147
+ - jkr.gemspec
52
148
  - lib/jkr.rb
53
149
  - lib/jkr/analysis.rb
150
+ - lib/jkr/analytics.rb
151
+ - lib/jkr/array.rb
152
+ - lib/jkr/blktrace.rb
153
+ - lib/jkr/cli.rb
154
+ - lib/jkr/cpu_usage.rb
155
+ - lib/jkr/cpufreq.rb
156
+ - lib/jkr/dirlock.rb
54
157
  - lib/jkr/env.rb
158
+ - lib/jkr/error.rb
159
+ - lib/jkr/numeric.rb
55
160
  - lib/jkr/plan.rb
161
+ - lib/jkr/planfinder.rb
162
+ - lib/jkr/plot.rb
56
163
  - lib/jkr/rake.rb
164
+ - lib/jkr/stat.rb
165
+ - lib/jkr/stat/kmeans-1d.rb
166
+ - lib/jkr/su_cmd
167
+ - lib/jkr/sysinfo.rb
57
168
  - lib/jkr/trial.rb
58
169
  - lib/jkr/userutils.rb
59
170
  - lib/jkr/utils.rb
60
- - test/test_jkr.rb
61
- has_rdoc: true
62
- homepage: http://github.com/hayamiz/jkr
171
+ - lib/jkr/version.rb
172
+ - sample-jkr.plan
173
+ homepage: https://github.com/as110-tkl/jkr
174
+ licenses:
175
+ - GPL-3.0
176
+ metadata: {}
63
177
  post_install_message:
64
- rdoc_options:
65
- - --main
66
- - README.txt
67
- require_paths:
178
+ rdoc_options: []
179
+ require_paths:
68
180
  - lib
69
- required_ruby_version: !ruby/object:Gem::Requirement
70
- requirements:
181
+ required_ruby_version: !ruby/object:Gem::Requirement
182
+ requirements:
71
183
  - - ">="
72
- - !ruby/object:Gem::Version
73
- version: "0"
74
- version:
75
- required_rubygems_version: !ruby/object:Gem::Requirement
76
- requirements:
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ required_rubygems_version: !ruby/object:Gem::Requirement
187
+ requirements:
77
188
  - - ">="
78
- - !ruby/object:Gem::Version
79
- version: "0"
80
- version:
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
81
191
  requirements: []
82
-
83
- rubyforge_project: jkr
84
- rubygems_version: 1.3.1
192
+ rubyforge_project:
193
+ rubygems_version: 2.5.1
85
194
  signing_key:
86
- specification_version: 2
87
- summary: FIX (describe your package)
88
- test_files:
89
- - test/test_jkr.rb
195
+ specification_version: 4
196
+ summary: Script execution manager for experimental measurements.
197
+ test_files: []
data/bin/jkr DELETED
@@ -1,224 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'fileutils'
4
- require 'optparse'
5
- require 'jkr'
6
-
7
- def ul(str)
8
- "\033[4m#{str}\033[24m"
9
- end
10
-
11
- def identity
12
-
13
- end
14
-
15
- class JkrCmd
16
- def jkr_commands()
17
- self.methods.map{|method_sym|
18
- if method_sym.to_s =~ /^([a-z_-]+)_cmd$/
19
- $~[1]
20
- else
21
- nil
22
- end
23
- }.compact
24
- end
25
-
26
- def setup_optparser()
27
- @optparser = OptionParser.new
28
-
29
- @optparser.banner = <<EOS
30
- Usage: #{$0} [#{ul('command')} [#{ul('options')}]]
31
-
32
- Available commands: #{self.jkr_commands.join(', ')}
33
-
34
- '#{$0} help #{ul('command')}' shows detailed usage of #{ul('command')}
35
-
36
- EOS
37
-
38
- @options[:directory] = Dir.pwd
39
- @optparser.on('-C', '--directory DIR',
40
- "Change to directory DIR before reading jkr config files."
41
- ) do |directory|
42
- @options[:directory] = directory
43
- end
44
-
45
- @options[:jkr_directory] = File.join(@options[:directory], "jkr")
46
- @optparser.on('-f', '--jkr-directory DIR',
47
- "Jkr specification file."
48
- ) do |jkr_directory|
49
- @options[:jkr_directory] = jkr_directory
50
- end
51
- end
52
-
53
- def parse_args(argv)
54
- @optparser.parse!(argv)
55
- @options
56
- end
57
-
58
- def initialize()
59
- @options = Hash.new
60
- self.setup_optparser()
61
- @jkr_env = Jkr::Env.new(@options[:directory], @options[:jkr_directory])
62
- end
63
-
64
- def dispatch(argv)
65
- self.parse_args(argv) # argv updated destructively
66
-
67
- if argv.empty?
68
- argv = ["run"]
69
- end
70
- command = argv.shift
71
- unless self.jkr_commands.include?(command)
72
- $stderr.puts "No such command: #{command}"
73
- puts
74
- puts @optparser.help
75
- exit 1
76
- end
77
-
78
- self.send("#{command}_cmd", argv)
79
- end
80
-
81
- ## Command definitions
82
-
83
- def analyze_cmd(argv)
84
- argv.each do |arg|
85
- Jkr::Analysis.analyze(@jkr_env, arg)
86
- end
87
- end
88
- def analyze_cmd_help()
89
- {
90
- :summary => "analyze results",
91
- :desc => "Usage: #{$0} analyze #{ul('RESULT_ID')} ..."
92
- }
93
- end
94
-
95
- def list_cmd(argv)
96
- puts "Existing plans:"
97
- puts
98
- plans = @jkr_env.plans.map do |plan_file_path|
99
- plan = Jkr::Plan.new(@jkr_env, plan_file_path)
100
- [File.basename(plan_file_path, ".plan"), plan.title]
101
- end
102
- maxlen = plans.map{|plan| plan[0].size}.max
103
- plans.each do |plan|
104
- printf(" %#{maxlen}s : %s\n", plan[0], plan[1])
105
- end
106
- puts
107
- end
108
- def list_cmd_help()
109
- {
110
- :summary => "list existing plans",
111
- :desc => "list existing plans"
112
- }
113
- end
114
-
115
- def run_cmd(argv)
116
- filter = (if argv.empty?
117
- lambda{|x| true}
118
- else
119
- lambda do |plan_file_path|
120
- argv.map{|arg|
121
- Regexp.compile(arg)
122
- }.any?{|regex|
123
- File.basename(plan_file_path) =~ regex
124
- }
125
- end
126
- end)
127
- @jkr_env.plans.each do |plan_file_path|
128
- if filter.call(plan_file_path)
129
- plan = Jkr::Plan.new(@jkr_env, plan_file_path)
130
- Jkr::Trial.run(@jkr_env, plan)
131
- end
132
- end
133
- end
134
- def run_cmd_help()
135
- {
136
- :summary => "run experiments",
137
- :desc => ""
138
- }
139
- end
140
-
141
- def install_cmd(argv)
142
- jkr_dir = File.join(@options[:directory], "jkr")
143
- result_dir = File.join(@options[:directory], "jkr", "result")
144
- plan_dir = File.join(@options[:directory], "jkr", "plan")
145
- [jkr_dir, result_dir, plan_dir].each{|dir| FileUtils.mkdir(dir) }
146
- File.open(File.join(plan_dir, "sample.plan"), "w") do |file|
147
- file.puts <<EOSS
148
- # -*- mode: ruby -*-
149
-
150
- title "Sample experiment plan"
151
- description <<EOS
152
- This is a sample experiment plan specification file.
153
- EOS
154
-
155
- # Discard this file after the experiments conducted.
156
- discard_on_finish
157
-
158
- def_experiment_plan do |p|
159
- # 'p.variable' for variables
160
- # 'p.param' for static parameters
161
-
162
- p.variable :num_xxx => 1..10
163
- p.param :use_yyy => false
164
-
165
- if p.param[:use_yyy]
166
- p.param[:yyy_zzz] = "foo"
167
- else
168
- p.param[:yyy_zzz] = "bar"
169
- end
170
- end
171
-
172
- def_execution do |params|
173
- puts "hello world, #\{params.num_xxx\}, #\{params[:num_xxx]\}"
174
- end
175
- EOSS
176
- end
177
- end
178
- def install_cmd_help()
179
- {
180
- :summary => "install jkr skelton setting files",
181
- :desc => ""
182
- }
183
- end
184
-
185
- def help_cmd(argv)
186
- case argv[0]
187
- when /^commands/
188
- commands = self.jkr_commands
189
- puts "Available commands:"
190
- max_len = commands.map(&:size).max
191
- commands.each do |command|
192
- help = self.send("#{command}_cmd_help")
193
- printf " %#{max_len}s : #{help[:summary]}\n", command
194
- end
195
- puts
196
- else
197
- commands = argv.select{|arg| self.jkr_commands.include?(arg)}
198
- if commands.size > 0
199
- commands.each do |cmd|
200
- help = self.send("#{cmd}_cmd_help")
201
- puts("== help: #{cmd} ==\n#{help[:summary]}\n\n#{help[:desc]}\n")
202
- end
203
- else
204
- puts @optparser.help
205
- end
206
- end
207
- end
208
- def help_cmd_help()
209
- {
210
- :summary => "show helps",
211
- :desc => ""
212
- }
213
- end
214
-
215
- end
216
-
217
- def main(argv)
218
- JkrCmd.new.dispatch(argv)
219
- end
220
-
221
- if __FILE__ == $0
222
- main(ARGV.dup)
223
- end
224
-