jkr 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
-