bundler_timer 1.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ *.gem
data/README.md ADDED
@@ -0,0 +1,32 @@
1
+ Bundler Timer
2
+ =============
3
+ Ever find yourself staring at your terminal wondering, "Sweet baby jesus, how many hours of my life do I spend waiting for Bundler?!".
4
+ Well know you can know just how much of your time has been given to our friend, Bundler.
5
+
6
+ Bundler Timer will log those precious seconds and report back a depressing little report each time you run Bundler.
7
+
8
+ Installation
9
+ ------------
10
+ gem install bundler_timer
11
+
12
+ # By default, bundler_timer provides a binary named 'b' which you can use
13
+ # just like bundler. If you'd rather replace the bundler command, do
14
+ # something like:
15
+ echo "alias bundle='b'" >> ~/.bash_profile
16
+
17
+ # Now you can just run it as usual and keep track of your shortening life!
18
+ cd ~/code/sweet_project/
19
+ b install
20
+ Using activesupport (3.0.3)
21
+ Using builder (2.1.2)
22
+ ...[snip]...
23
+
24
+ Congratulations, you've spent 12 minutes today staring at your screen (5.6 hours overall)
25
+
26
+ # To just see the damage:
27
+ b stats
28
+
29
+
30
+ To Do
31
+ ------
32
+ * maybe add a daily breakdown in the stats
data/Rakefile ADDED
@@ -0,0 +1,24 @@
1
+ gemspec = eval(File.read(Dir["*.gemspec"].first))
2
+
3
+
4
+ desc "Validate the gemspec"
5
+ task :gemspec do
6
+ gemspec.validate
7
+ end
8
+
9
+ desc "Build gem locally"
10
+ task :build => :gemspec do
11
+ system "gem build #{gemspec.name}.gemspec"
12
+ FileUtils.mkdir_p "pkg"
13
+ FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", "pkg"
14
+ end
15
+
16
+ desc "Install gem locally"
17
+ task :install => :build do
18
+ system "gem install pkg/#{gemspec.name}-#{gemspec.version}"
19
+ end
20
+
21
+ desc "Clean automatically generated files"
22
+ task :clean do
23
+ FileUtils.rm_rf "pkg"
24
+ end
data/bin/b ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler_timer'
@@ -0,0 +1,17 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.version = '1.0.1'
5
+ s.date = '2011-04-04'
6
+
7
+ s.name = 'bundler_timer'
8
+ s.authors = %w[bassnode]
9
+ s.summary = 'times bundler'
10
+ s.description = 'times bundler'
11
+
12
+ s.default_executable = 'b'
13
+ s.executables = %w[b]
14
+ s.files = `git ls-files`.split
15
+
16
+ s.add_dependency "sequel", '>= 0'
17
+ end
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'benchmark'
4
+ require 'sequel'
5
+ require 'fileutils'
6
+ require 'date'
7
+
8
+ def smart_time(seconds)
9
+ if (minutes = seconds/60.0) >= 1
10
+ if (hours = minutes/60.0) >= 1
11
+ ('%3.1f' % hours) + ' hours'
12
+ else
13
+ ('%2.1f' % minutes) + ' minutes'
14
+ end
15
+ else
16
+ "#{seconds.round} seconds"
17
+ end
18
+ end
19
+
20
+ storage_dir = File.join(ENV['HOME'], ".bundler_timer")
21
+ FileUtils.mkdir(storage_dir) unless File.exists?(storage_dir)
22
+
23
+ DB = Sequel.sqlite(File.join(storage_dir, 'bundler_timer.db'))
24
+ DB.create_table? :executions do
25
+ primary_key :id
26
+ String :command, :null => false
27
+ Float :runtime, :null => false
28
+ Date :run_at, :null => false
29
+
30
+ index :run_at
31
+ end
32
+
33
+ # runs bundle install by default
34
+ command = ARGV[0] || 'install'
35
+
36
+ unless command == 'stats'
37
+
38
+ time = Benchmark.realtime do
39
+ system "bundle #{command}"
40
+ end
41
+
42
+ DB[:executions].insert :command => command, :runtime => time, :run_at => Date.today
43
+ end
44
+
45
+ day_total = DB[:executions].where(:run_at => Date.today).sum(:runtime)
46
+ total = DB[:executions].sum(:runtime)
47
+
48
+ puts "\n\tCongratulations, you've spent #{smart_time(day_total)} today staring at your screen (#{smart_time(total)} overall)."
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bundler_timer
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 1
10
+ version: 1.0.1
11
+ platform: ruby
12
+ authors:
13
+ - bassnode
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-04 00:00:00 -07:00
19
+ default_executable: b
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: sequel
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: times bundler
36
+ email:
37
+ executables:
38
+ - b
39
+ extensions: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ files:
44
+ - .gitignore
45
+ - README.md
46
+ - Rakefile
47
+ - bin/b
48
+ - bundler_timer.gemspec
49
+ - lib/bundler_timer.rb
50
+ has_rdoc: true
51
+ homepage:
52
+ licenses: []
53
+
54
+ post_install_message:
55
+ rdoc_options: []
56
+
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ hash: 3
65
+ segments:
66
+ - 0
67
+ version: "0"
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ requirements: []
78
+
79
+ rubyforge_project:
80
+ rubygems_version: 1.3.7
81
+ signing_key:
82
+ specification_version: 3
83
+ summary: times bundler
84
+ test_files: []
85
+