clocker 0.1.5 → 0.1.6

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: debd54564a6bbb21e26970160a5cbe8683328e8b
4
- data.tar.gz: 77a4c22b06f10e8469bc0654c8f0613312159734
3
+ metadata.gz: e356e7d0d50521af9d67ef4698607fa341f746c3
4
+ data.tar.gz: 48f595a7020894dc8f649a3085d098ed96be1475
5
5
  SHA512:
6
- metadata.gz: 1e4b7a7f2d11f3aa403a731dc25f50a396667a565e6dc581208ca72b5872ae94f95eeefb951a49db59f1bd35ce5f78390e66cbd86251da0378a3357a9401c8b8
7
- data.tar.gz: fd3284a01a511e99c3ba9d0e8209bc668b49380d6c1bc96831841deda1db8026e13f9f3b4bed889cf9281e59aa3eedcf303dbebb9ab8909c567a4e45f7389735
6
+ metadata.gz: 2408d28b66ba3c6261f7ecdc7e4f900dc9457b153aad468282474a2ca230863f3987d5d4390aee3fec8f7a4473a6e28c7b4efd96ee83038b8b055245deee9080
7
+ data.tar.gz: af3169ae0ab1ff937dcac51d4f3468b413a269896b19b6cac2e1dcc829c7090e6fda147560ac6cbd668bd45b92532eee38a8eb29c9a80821dd6ed476e8bf206a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- clocker (0.1.0)
4
+ clocker (0.1.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -18,4 +18,4 @@ DEPENDENCIES
18
18
  rake (~> 10.0)
19
19
 
20
20
  BUNDLED WITH
21
- 1.10.5
21
+ 1.10.6
data/README.md CHANGED
@@ -1,9 +1,37 @@
1
1
  # Clocker
2
+ Quick way to find out how long that command or block of code takes to run.
2
3
 
3
- Find out how long that block of code takes to run.
4
+ ## Usage
5
+ ### Command Line
6
+ Simply run `clocker` followed by a command or block in double quotes. Add an `-m` before the command or block to print out start and end times.
7
+
8
+ Ex. 1
9
+ ```
10
+ $ clocker "puts 'hi'"
11
+ hi
12
+ Clocked at 0 mins, 0 secs, 0 ms
13
+ ```
4
14
 
5
- ## Installation
15
+ Ex. 2
16
+ ```
17
+ $ clocker "2.times { puts 'hello world'; sleep(0.6) }"
18
+ hello world
19
+ hello world
20
+
21
+ Clocked at 0 mins, 1 secs, and 210 ms
22
+ ```
6
23
 
24
+ Ex. 3
25
+ ```
26
+ $ clocker -m "1.upto(5) { |i| print i+1; sleep(0.4) }"
27
+ start: 2015-08-18 16:16:47 -0700
28
+ 23456
29
+ ended: 2015-08-18 16:16:49 -0700
30
+
31
+ Clocked at 0 mins, 2 secs, and 12 ms
32
+ ```
33
+
34
+ ### As Gem Library
7
35
  Add this line to your application's Gemfile:
8
36
 
9
37
  ```ruby
@@ -11,18 +39,46 @@ gem 'clocker'
11
39
  ```
12
40
 
13
41
  And then execute:
14
-
15
- $ bundle
42
+ ```
43
+ $ bundle
44
+ ```
16
45
 
17
46
  Or install it yourself as:
47
+ ```
48
+ $ gem install clocker
49
+ ```
18
50
 
19
- $ gem install clocker
51
+ Sample code block:
52
+ ```ruby
53
+ >> clocker = Clocker.new
54
+ >> clocker.clock do
55
+ >> # code here
56
+ >> end
57
+ ```
20
58
 
21
- ## Usage
59
+ By default, clocker will not print out the start time before the command|block, or the end time after the command|block, unless you pass the instance `show_messages: true`.
60
+
61
+ ```ruby
62
+ >> c1 = Clocker.new
63
+ >> duration = c1.clock do
64
+ >> 3.times { print 'c1'; sleep(1) }
65
+ >> end
66
+ >> puts
67
+ >> puts duration
68
+
69
+ c1c1c1
70
+ {:mins=>0, :secs=>3, :ms=>13}
71
+ ```
72
+
73
+ ```ruby
74
+ >> c2 = Clocker.new(show_messages: true)
75
+ >> duration = c2.clock do
76
+ >> 3.times { purint 'c2'; sleep(1) }
77
+ >> end
78
+ >> puts duration
22
79
 
80
+ start: 2015-08-18 16:07:17 -0700
81
+ c2c2c2
82
+ ended: 2015-08-18 16:07:20 -0700
83
+ {:mins=>0, :secs=>3, :ms=>14}
23
84
  ```
24
- clocker = Clocker.new
25
- clocker.clock do
26
- # code here
27
- end
28
- ```
data/bin/clocker ADDED
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+
5
+ require_relative '../lib/clocker'
6
+ require_relative '../lib/clocker/version'
7
+
8
+ BINARY_NAME = $PROGRAM_NAME.split('/').last
9
+
10
+ def parse_options
11
+ options = {
12
+ show_messages: false
13
+ }
14
+
15
+ optparse = OptionParser.new do |opts|
16
+ opts.banner = "usage: #{BINARY_NAME} [command|block]"
17
+
18
+ opts.on('-m', '--message', 'Show start and ended messages') do |m|
19
+ options[:show_messages] = m
20
+ end
21
+
22
+ opts.on('-v', '--version', 'Display version number and exit') do
23
+ puts "#{BINARY_NAME} #{Clocker::VERSION}"
24
+ exit
25
+ end
26
+
27
+ opts.on('-h', '--help', 'Display this screen and exit') do
28
+ puts opts
29
+ exit
30
+ end
31
+ end
32
+
33
+ optparse.parse!()
34
+
35
+ return options
36
+ end
37
+
38
+ def print_error(error)
39
+ case error
40
+ when OptionParser::InvalidOption
41
+ puts "#{BINARY_NAME}: illegal option #{error.args.join(' ')}"
42
+ else
43
+ puts "An unexpected error occurred while running #{BINARY_NAME}:"
44
+ puts " #{error}\n"
45
+ end
46
+ end
47
+
48
+ begin
49
+ options = parse_options
50
+
51
+ if (ARGV.count > 0)
52
+ c = Clocker.new(options)
53
+ t = c.clock { eval(ARGV[0]) }
54
+ puts
55
+ puts "Clocked at #{t[:mins]} mins, #{t[:secs]} secs, and #{t[:ms]} ms"
56
+ else
57
+ puts "#{BINARY_NAME} error: missing command or block"
58
+ end
59
+ rescue => error
60
+ print_error(error)
61
+ exit(false)
62
+ end
data/lib/clocker.rb CHANGED
@@ -11,27 +11,31 @@ class Clocker
11
11
  self.options = options
12
12
  end
13
13
 
14
- def clock
14
+ def clock(&block)
15
15
  @start = Time.now
16
- unless options[:show_messages].nil?
17
- puts "start: #{@start}"
16
+
17
+ if options[:show_messages]
18
+ puts "\nstart: #{@start}"
18
19
  end
19
-
20
+
20
21
  begin
21
- yield
22
+ block.call
22
23
  rescue StandardError => e
23
24
  puts e.message
24
25
  end
25
- stop
26
+
27
+ return stop
26
28
  end
27
-
29
+
28
30
  def stop
29
31
  @stop = Time.now
30
- unless options[:show_messages].nil?
31
- puts "ended: #{@stop}"
32
+
33
+ if options[:show_messages]
34
+ puts "\nended: #{@stop}"
32
35
  end
36
+
33
37
  ms = ((@stop - @start) * 1000).to_i
34
-
38
+
35
39
  if ms > 60000
36
40
  mins = ms / 60000
37
41
  ms = ms - (60000 * mins)
@@ -39,15 +43,15 @@ class Clocker
39
43
  secs = ms / 1000
40
44
  ms = ms % 1000
41
45
  end
42
-
43
- { mins: mins, secs: secs, ms: ms }
46
+
47
+ return { mins: mins, secs: secs, ms: ms }
44
48
  elsif ms > 1000
45
49
  secs = ms / 1000
46
50
  ms = ms % 1000
47
-
48
- { mins: 0, secs: secs, ms: ms }
51
+
52
+ return { mins: 0, secs: secs, ms: ms }
49
53
  else
50
- { mins: 0, secs: 0, ms: ms }
54
+ return { mins: 0, secs: 0, ms: ms }
51
55
  end
52
56
  end
53
57
  end
@@ -1,3 +1,6 @@
1
- module Clocker
2
- VERSION = '0.1.5'
1
+ # lib/clocker/version.rb
2
+ # Version of Clocker
3
+
4
+ class Clocker
5
+ VERSION = '0.1.6'
3
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clocker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Chadwick
@@ -42,7 +42,8 @@ description: Give Clocker some code to process, and it will run it and display h
42
42
  long it took to finish.
43
43
  email:
44
44
  - mike@codana.me
45
- executables: []
45
+ executables:
46
+ - clocker
46
47
  extensions: []
47
48
  extra_rdoc_files: []
48
49
  files:
@@ -54,6 +55,7 @@ files:
54
55
  - LICENSE.txt
55
56
  - README.md
56
57
  - Rakefile
58
+ - bin/clocker
57
59
  - clocker.gemspec
58
60
  - lib/clocker.rb
59
61
  - lib/clocker/version.rb