turbulence 1.2.0 → 1.2.2

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.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZWM3NDQzMzE3NGIwODMyNGE0YmJmZjg1N2E1OThhNzY0M2M3NzNhNQ==
5
- data.tar.gz: !binary |-
6
- MTM3OTcwYmY3MjhmNTljZmI4M2RhMTA0MjVhOTliYjdiNTNmNDM5OA==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MzdhYzRjNGNmMGQwODEwZTk2ZWNiMzRjMmZjMzUyNzgzY2IzNWY5YWZlODFm
10
- MmJlYjNjODAwMDE4YmYyNzlkZDM2NTZkNzY2OWU5NjJmNDVmYzE3OWJlN2I4
11
- YmIyOWZhMGMwOTFhOWJjZWIxY2MwYWU4ODlkODMxNjZiM2I4ZDk=
12
- data.tar.gz: !binary |-
13
- ODk3MmQ1MmUwZmIyOTRkMTRhMjkzYjNjM2M0ZmY0NmQ5ZTMxMDg0OTBiZTIw
14
- NjQ1NDVjNjk5OTgxMWQyMTNlMzZhMmU3NzdlMmFjNTJjYTJlOGEyYjhhZjNl
15
- MTQ0Mzc0ZDk1ZGFiZjBjNzZlNTAxZDk0YWU3MDAwODE1YTliMDA=
2
+ SHA1:
3
+ metadata.gz: 0cc515339556ec42ba24bc366cbabdf099372173
4
+ data.tar.gz: 93f14f3ed0ee121baed68d6e9a25d2bc88f5b123
5
+ SHA512:
6
+ metadata.gz: 9396fedf8cfabf40b3cf7ecf8f4f09184846bd2c3a9489b0c2210056966bf35a9536f3f75bf5ac465f98b8f32531f1621ade7d24e0643a3b8fe1a373993c82ed
7
+ data.tar.gz: 9fcc323fb401edc30a9066d8a3dfe0ecc0c586183dcef4ccc91810a1f7caaac420b64079a7e965575f84520e2f1af122a3c7de31fc43f1ede88de8c1f515fe05
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- turbulence (1.2.0)
4
+ turbulence (1.2.2)
5
5
  flog (~> 4.1)
6
6
  json (>= 1.4.6)
7
7
  launchy (>= 2.0.0)
@@ -10,30 +10,30 @@ GEM
10
10
  remote: http://rubygems.org/
11
11
  specs:
12
12
  addressable (2.3.5)
13
- diff-lcs (1.1.3)
13
+ diff-lcs (1.2.5)
14
14
  flog (4.1.2)
15
15
  ruby_parser (~> 3.1, > 3.1.0)
16
16
  sexp_processor (~> 4.0)
17
- json (1.8.0)
18
- launchy (2.3.0)
17
+ json (1.8.1)
18
+ launchy (2.4.2)
19
19
  addressable (~> 2.3)
20
20
  rake (10.1.0)
21
- rspec (2.6.0)
22
- rspec-core (~> 2.6.0)
23
- rspec-expectations (~> 2.6.0)
24
- rspec-mocks (~> 2.6.0)
25
- rspec-core (2.6.4)
26
- rspec-expectations (2.6.0)
27
- diff-lcs (~> 1.1.2)
28
- rspec-mocks (2.6.0)
21
+ rspec (2.14.1)
22
+ rspec-core (~> 2.14.0)
23
+ rspec-expectations (~> 2.14.0)
24
+ rspec-mocks (~> 2.14.0)
25
+ rspec-core (2.14.7)
26
+ rspec-expectations (2.14.4)
27
+ diff-lcs (>= 1.1.3, < 2.0)
28
+ rspec-mocks (2.14.4)
29
29
  ruby_parser (3.2.2)
30
30
  sexp_processor (~> 4.1)
31
- sexp_processor (4.3.0)
31
+ sexp_processor (4.4.0)
32
32
 
33
33
  PLATFORMS
34
34
  ruby
35
35
 
36
36
  DEPENDENCIES
37
37
  rake
38
- rspec (~> 2.6.0)
38
+ rspec (~> 2.14.0)
39
39
  turbulence!
data/bin/bule CHANGED
@@ -1,14 +1,23 @@
1
- #!/usr/bin/env ruby
2
- require 'turbulence'
3
- require 'turbulence/checks_environment'
1
+ #!/usr/bin/env ruby_executable_hooks
2
+ #
3
+ # This file was generated by RubyGems.
4
+ #
5
+ # The application 'turbulence' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
4
8
 
5
- cli = Turbulence::CommandLineInterface.new(ARGV)
9
+ require 'rubygems'
6
10
 
7
- unless Turbulence::ChecksEnvironment.scm_repo?(Dir.pwd)
8
- STDERR.puts "Turbulence could not calculate metrics, as we could not find a repository in the current directory."
9
- STDERR.puts "Please run bule from inside a repository."
10
- exit
11
+ version = ">= 0"
12
+
13
+ if ARGV.first
14
+ str = ARGV.first
15
+ str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
16
+ if str =~ /\A_(.*)_\z/
17
+ version = $1
18
+ ARGV.shift
19
+ end
11
20
  end
12
21
 
13
- cli.generate_bundle
14
- cli.open_bundle
22
+ gem 'turbulence', version
23
+ load Gem.bin_path('turbulence', 'bule', version)
@@ -16,8 +16,9 @@ class Turbulence
16
16
 
17
17
  attr_reader :exclusion_pattern
18
18
  attr_reader :directory
19
- def initialize(argv)
19
+ def initialize(argv, additional_options = {})
20
20
  Turbulence::Calculators::Churn.scm = Scm::Git
21
+ @graph_type = "turbulence"
21
22
  OptionParser.new do |opts|
22
23
  opts.banner = "Usage: bule [options] [dir]"
23
24
 
@@ -53,6 +54,7 @@ class Turbulence
53
54
  end.parse!(argv)
54
55
 
55
56
  @directory = argv.first || Dir.pwd
57
+ @output = additional_options.fetch(:output, STDOUT)
56
58
  end
57
59
 
58
60
  def copy_templates_into(directory)
@@ -63,7 +65,7 @@ class Turbulence
63
65
  FileUtils.mkdir_p("turbulence")
64
66
 
65
67
  Dir.chdir("turbulence") do
66
- turb = Turbulence.new(directory,STDOUT, @exclusion_pattern)
68
+ turb = Turbulence.new(directory, @output, @exclusion_pattern)
67
69
 
68
70
  generator = case @graph_type
69
71
  when "treemap"
@@ -77,12 +79,7 @@ class Turbulence
77
79
  end
78
80
 
79
81
  def open_bundle
80
- case @graph_type
81
- when "treemap"
82
- Launchy.open("file://#{directory}/turbulence/treemap.html")
83
- else
84
- Launchy.open("file://#{directory}/turbulence/turbulence.html")
85
- end
82
+ Launchy.open("file:///#{directory}/turbulence/#{@graph_type}.html")
86
83
  end
87
84
  end
88
85
  end
@@ -3,7 +3,7 @@ require 'pathname'
3
3
 
4
4
  class Turbulence
5
5
  module Scm
6
- class Perforce
6
+ class Perforce
7
7
  class << self
8
8
  def log_command(commit_range = "")
9
9
  full_log = ""
@@ -33,7 +33,7 @@ class Turbulence
33
33
  end
34
34
 
35
35
  def depot_to_local(depot_file)
36
- abs_path = extract_clientfile_from_fstat_of(depot_file)
36
+ abs_path = extract_clientfile_from_fstat_of(depot_file)
37
37
  Pathname.new(abs_path).relative_path_from(Pathname.new(FileUtils.pwd)).to_s
38
38
  end
39
39
 
@@ -64,7 +64,7 @@ class Turbulence
64
64
  "#{arr[0]}\t0\t#{arr[1]}\n"
65
65
  end
66
66
 
67
- def sum_of_changes(p4_describe_output)
67
+ def sum_of_changes(p4_describe_output)
68
68
  churn = 0
69
69
  p4_describe_output.each_line do |line|
70
70
  next unless line =~ /(add|deleted|changed) .* (\d+) lines/
@@ -1,3 +1,3 @@
1
1
  class Turbulence
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.2"
3
3
  end
@@ -2,7 +2,7 @@ require 'rspec'
2
2
  require 'turbulence'
3
3
 
4
4
  describe Turbulence::CommandLineInterface do
5
- let(:cli) { Turbulence::CommandLineInterface.new(%w(.)) }
5
+ let(:cli) { Turbulence::CommandLineInterface.new(%w(.), :output => nil) }
6
6
  describe "::TEMPLATE_FILES" do
7
7
  Turbulence::CommandLineInterface::TEMPLATE_FILES.each do |template_file|
8
8
  File.dirname(template_file).should == Turbulence::CommandLineInterface::TURBULENCE_TEMPLATE_PATH
@@ -22,7 +22,7 @@ describe Turbulence::CommandLineInterface do
22
22
  end
23
23
 
24
24
  it "passes along exclusion pattern" do
25
- cli = Turbulence::CommandLineInterface.new(%w(--exclude turbulence))
25
+ cli = Turbulence::CommandLineInterface.new(%w(--exclude turbulence), :output => nil)
26
26
  cli.generate_bundle
27
27
  lines = File.new('turbulence/cc.js').readlines
28
28
  lines.any? { |l| l =~ /turbulence\.rb/ }.should be_false
@@ -20,7 +20,7 @@ describe Turbulence::Scm::Git do
20
20
 
21
21
  describe "::log_command" do
22
22
  it "takes an optional argument specify to the range" do
23
- expect{Turbulence::Scm::Git.log_command("d551e63f79a90430e560ea871f4e1e39e6e739bd HEAD")}.to_not raise_error(ArgumentError)
23
+ expect{Turbulence::Scm::Git.log_command("d551e63f79a90430e560ea871f4e1e39e6e739bd HEAD")}.to_not raise_error
24
24
  end
25
25
  it "lists insertions/deletions per file and change" do
26
26
  Turbulence::Scm::Git.log_command.should match(/\d+\t\d+\t[A-z.]*/)
@@ -3,6 +3,7 @@ require 'rspec/mocks'
3
3
 
4
4
  describe Turbulence::Scm::Perforce do
5
5
  let (:p4_scm) { Turbulence::Scm::Perforce }
6
+
6
7
  before do
7
8
  p4_scm.stub(:p4_list_changes) do
8
9
  "Change 62660 on 2005/11/28 by x@client 'CHANGED: adapted to DESCODE '
@@ -13,6 +14,7 @@ Change 11250 on 2004/09/17 by x@client 'CHANGED: trigger now also allow'
13
14
  Change 9250 on 2004/08/20 by x@client 'BUGFIX: bug#1583 (People can so'
14
15
  Change 5560 on 2004/04/26 by x@client 'ADDED: The \"BRANCHED\" tag.'"
15
16
  end
17
+
16
18
  p4_scm.stub(:p4_describe_change).with("5560") do
17
19
  "Change 5560 by x@client on 2004/04/26 17:25:03
18
20
 
@@ -38,20 +40,28 @@ deleted 0 chunks 0 lines
38
40
  changed 1 chunks 3 / 1 lines"
39
41
  end
40
42
  end
43
+
41
44
  describe "::is_repo?" do
45
+ before :each do
46
+ ENV.stub(:[]).with("P4CLIENT").and_return(nil)
47
+ ENV.stub(:[]).with("PATH").and_return("")
48
+ end
49
+
42
50
  it "returns true if P4CLIENT is set " do
43
- ENV['P4CLIENT'] = "c-foo.bar"
44
- Turbulence::Scm::Perforce.is_repo?(".").should == true
51
+ ENV.stub(:[]).with("P4CLIENT").and_return("c-foo.bar")
52
+
53
+ Turbulence::Scm::Perforce.is_repo?(".").should be_true
45
54
  end
55
+
46
56
  it "returns false if P4CLIENT is empty" do
47
- ENV['P4CLIENT'] = ""
48
- Turbulence::Scm::Perforce.is_repo?(".").should == false
57
+ Turbulence::Scm::Perforce.is_repo?(".").should be_false
49
58
  end
59
+
50
60
  it "returns false if p4 is not available" do
51
- ENV['PATH'] = ""
52
- Turbulence::Scm::Perforce.is_repo?(".").should == false
61
+ Turbulence::Scm::Perforce.is_repo?(".").should be_false
53
62
  end
54
63
  end
64
+
55
65
  describe "::log_command" do
56
66
  before do
57
67
  p4_scm.stub(:depot_to_local).with("//admin/scripts/triggers/enforce-submit-comment.py")\
@@ -62,19 +72,22 @@ changed 1 chunks 3 / 1 lines"
62
72
  "Change 5560 on 2004/04/26 by x@client 'ADDED: The \"BRANCHED\" tag.'"
63
73
  end
64
74
  end
75
+
65
76
  it "takes an optional argument to specify the range" do
66
- expect{Turbulence::Scm::Perforce.log_command("@1,2")}.to_not raise_error(ArgumentError)
77
+ expect{Turbulence::Scm::Perforce.log_command("@1,2")}.to_not raise_error
67
78
  end
68
79
 
69
80
  it "lists insertions/deletions per file and change" do
70
81
  Turbulence::Scm::Perforce.log_command().should match(/\d+\t\d+\t[A-z.]*/)
71
82
  end
72
83
  end
84
+
73
85
  describe "::changes" do
74
86
  it "lists changenumbers from parsing 'p4 changes' output" do
75
87
  p4_scm.changes.should =~ %w[62660 45616 45615 45614 11250 9250 5560]
76
88
  end
77
89
  end
90
+
78
91
  describe "::files_per_change" do
79
92
  before do
80
93
  p4_scm.stub(:depot_to_local).with("//admin/scripts/triggers/enforce-submit-comment.py")\
@@ -88,36 +101,42 @@ changed 1 chunks 3 / 1 lines"
88
101
  [1,"triggers/check-consistency.py"]]
89
102
  end
90
103
  end
104
+
91
105
  describe "::transform_for_output" do
92
106
  it "adds a 0 for deletions" do
93
107
  p4_scm.transform_for_output([1,"triggers/check-consistency.py"]).should == "1\t0\ttriggers/check-consistency.py\n"
94
108
  end
95
109
  end
110
+
96
111
  describe "::depot_to_local" do
97
112
  describe "on windows" do
98
113
  before do
99
114
  p4_scm.stub(:extract_clientfile_from_fstat_of).and_return("D:/Perforce/admin/scripts/triggers/enforce-no-head-change.py")
100
115
  FileUtils.stub(:pwd).and_return("D:/Perforce")
101
116
  end
117
+
102
118
  it "converts depot-style paths to local paths using forward slashes" do
103
119
  p4_scm.depot_to_local("//admin/scripts/triggers/enforce-no-head-change.py").should \
104
120
  == "admin/scripts/triggers/enforce-no-head-change.py"
105
121
  end
106
122
  end
123
+
107
124
  describe "on unix" do
108
125
  before do
109
126
  p4_scm.stub(:extract_clientfile_from_fstat_of).and_return("/home/jhwist/admin/scripts/triggers/enforce-no-head-change.py")
110
127
  FileUtils.stub(:pwd).and_return("/home/jhwist")
111
128
  end
129
+
112
130
  it "converts depot-style paths to local paths using forward slashes" do
113
131
  p4_scm.depot_to_local("//admin/scripts/triggers/enforce-no-head-change.py").should \
114
132
  == "admin/scripts/triggers/enforce-no-head-change.py"
115
133
  end
116
134
  end
117
135
  end
136
+
118
137
  describe "::extract_clientfile_from_fstat_of" do
119
138
  before do
120
- p4_scm.stub(:p4_fstat) do
139
+ p4_scm.stub(:p4_fstat) do
121
140
  "... depotFile //admin/scripts/triggers/enforce-no-head-change.py
122
141
  ... clientFile /home/jhwist/admin/scripts/triggers/enforce-no-head-change.py
123
142
  ... isMapped
@@ -130,16 +149,19 @@ changed 1 chunks 3 / 1 lines"
130
149
  ... haveRev 5"
131
150
  end
132
151
  end
152
+
133
153
  it "uses clientFile field" do
134
154
  p4_scm.extract_clientfile_from_fstat_of("//admin/scripts/triggers/enforce-no-head-change.py").should ==
135
155
  "/home/jhwist/admin/scripts/triggers/enforce-no-head-change.py"
136
156
  end
137
157
  end
158
+
138
159
  describe "::sum_of_changes" do
139
160
  it "sums up changes" do
140
161
  output = "add 1 chunks 1 lines\ndeleted 0 chunks 0 lines\nchanged 1 chunks 3 / 3 lines"
141
162
  p4_scm.sum_of_changes(output).should == 4
142
163
  end
164
+
143
165
  it "ignores junk" do
144
166
  output = "add nothing, change nothing"
145
167
  p4_scm.sum_of_changes(output).should == 0
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.add_dependency "flog", "~>4.1"
13
13
  s.add_dependency "json", ">= 1.4.6"
14
14
  s.add_dependency "launchy", ">= 2.0.0"
15
- s.add_development_dependency 'rspec', '~> 2.6.0'
15
+ s.add_development_dependency 'rspec', '~> 2.14.0'
16
16
  s.add_development_dependency 'rake'
17
17
 
18
18
  s.summary = %q{Automates churn + flog scoring on a git repo for a Ruby project}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turbulence
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Fowler
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-09-07 00:00:00.000000000 Z
13
+ date: 2014-03-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: flog
@@ -30,28 +30,28 @@ dependencies:
30
30
  name: json
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ! '>='
33
+ - - '>='
34
34
  - !ruby/object:Gem::Version
35
35
  version: 1.4.6
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ! '>='
40
+ - - '>='
41
41
  - !ruby/object:Gem::Version
42
42
  version: 1.4.6
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: launchy
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ! '>='
47
+ - - '>='
48
48
  - !ruby/object:Gem::Version
49
49
  version: 2.0.0
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ! '>='
54
+ - - '>='
55
55
  - !ruby/object:Gem::Version
56
56
  version: 2.0.0
57
57
  - !ruby/object:Gem::Dependency
@@ -60,26 +60,26 @@ dependencies:
60
60
  requirements:
61
61
  - - ~>
62
62
  - !ruby/object:Gem::Version
63
- version: 2.6.0
63
+ version: 2.14.0
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - ~>
69
69
  - !ruby/object:Gem::Version
70
- version: 2.6.0
70
+ version: 2.14.0
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: rake
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ! '>='
75
+ - - '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - ! '>='
82
+ - - '>='
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  description: Based on this http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=COL&ObjectId=16679&tth=DYN&tt=siteemail&iDyn=2
@@ -88,82 +88,44 @@ email:
88
88
  - mfeathers@obtiva.com
89
89
  - coreyhaines@gmail.com
90
90
  executables:
91
- - !binary |-
92
- YnVsZQ==
91
+ - bule
93
92
  extensions: []
94
93
  extra_rdoc_files: []
95
94
  files:
96
- - !binary |-
97
- LmdpdGlnbm9yZQ==
98
- - !binary |-
99
- LnRyYXZpcy55bWw=
100
- - !binary |-
101
- R2VtZmlsZQ==
102
- - !binary |-
103
- R2VtZmlsZS5sb2Nr
104
- - !binary |-
105
- UkVBRE1FLm1k
106
- - !binary |-
107
- UmFrZWZpbGU=
108
- - !binary |-
109
- YmluL2J1bGU=
110
- - !binary |-
111
- bGliL3R1cmJ1bGVuY2UucmI=
112
- - !binary |-
113
- bGliL3R1cmJ1bGVuY2UvY2FsY3VsYXRvcnMvY2h1cm4ucmI=
114
- - !binary |-
115
- bGliL3R1cmJ1bGVuY2UvY2FsY3VsYXRvcnMvY29tcGxleGl0eS5yYg==
116
- - !binary |-
117
- bGliL3R1cmJ1bGVuY2UvY2hlY2tzX2Vudmlyb25tZW50LnJi
118
- - !binary |-
119
- bGliL3R1cmJ1bGVuY2UvY29tbWFuZF9saW5lX2ludGVyZmFjZS5yYg==
120
- - !binary |-
121
- bGliL3R1cmJ1bGVuY2UvZmlsZV9uYW1lX21hbmdsZXIucmI=
122
- - !binary |-
123
- bGliL3R1cmJ1bGVuY2UvZ2VuZXJhdG9ycy9zY2F0dGVycGxvdC5yYg==
124
- - !binary |-
125
- bGliL3R1cmJ1bGVuY2UvZ2VuZXJhdG9ycy90cmVlbWFwLnJi
126
- - !binary |-
127
- bGliL3R1cmJ1bGVuY2Uvc2NtL2dpdC5yYg==
128
- - !binary |-
129
- bGliL3R1cmJ1bGVuY2Uvc2NtL3BlcmZvcmNlLnJi
130
- - !binary |-
131
- bGliL3R1cmJ1bGVuY2UvdmVyc2lvbi5yYg==
132
- - !binary |-
133
- c3BlYy90dXJidWxlbmNlL2NhbGN1bGF0b3JzL2NodXJuX3NwZWMucmI=
134
- - !binary |-
135
- c3BlYy90dXJidWxlbmNlL2NhbGN1bGF0b3JzL2NvbXBsZXhpdHlfc3BlYy5y
136
- Yg==
137
- - !binary |-
138
- c3BlYy90dXJidWxlbmNlL2NoZWNrc19lbnZpcm9ub21lbnRfc3BlYy5yYg==
139
- - !binary |-
140
- c3BlYy90dXJidWxlbmNlL2NvbW1hbmRfbGluZV9pbnRlcmZhY2Vfc3BlYy5y
141
- Yg==
142
- - !binary |-
143
- c3BlYy90dXJidWxlbmNlL2dlbmVyYXRvcnMvc2NhdHRlcl9wbG90X3NwZWMu
144
- cmI=
145
- - !binary |-
146
- c3BlYy90dXJidWxlbmNlL2dlbmVyYXRvcnMvdHJlZW1hcF9zcGVjLnJi
147
- - !binary |-
148
- c3BlYy90dXJidWxlbmNlL3NjbS9naXRfc3BlYy5yYg==
149
- - !binary |-
150
- c3BlYy90dXJidWxlbmNlL3NjbS9wZXJmb3JjZV9zcGVjLnJi
151
- - !binary |-
152
- c3BlYy90dXJidWxlbmNlL3R1cmJ1bGVuY2Vfc3BlYy5yYg==
153
- - !binary |-
154
- dGVtcGxhdGUvaGlnaGNoYXJ0X3RlbXBsYXRlLmpzLmVyYg==
155
- - !binary |-
156
- dGVtcGxhdGUvaGlnaGNoYXJ0cy5qcw==
157
- - !binary |-
158
- dGVtcGxhdGUvanF1ZXJ5Lm1pbi5qcw==
159
- - !binary |-
160
- dGVtcGxhdGUvdHJlZW1hcC5odG1s
161
- - !binary |-
162
- dGVtcGxhdGUvdHVyYnVsZW5jZS5odG1s
163
- - !binary |-
164
- dHVyYnVsZW5jZS5nZW1zcGVj
165
- - !binary |-
166
- d2luX3Jha2VmaWxlX2xvY2F0aW9uX2ZpeC5yYg==
95
+ - .gitignore
96
+ - .travis.yml
97
+ - Gemfile
98
+ - Gemfile.lock
99
+ - README.md
100
+ - Rakefile
101
+ - bin/bule
102
+ - lib/turbulence.rb
103
+ - lib/turbulence/calculators/churn.rb
104
+ - lib/turbulence/calculators/complexity.rb
105
+ - lib/turbulence/checks_environment.rb
106
+ - lib/turbulence/command_line_interface.rb
107
+ - lib/turbulence/file_name_mangler.rb
108
+ - lib/turbulence/generators/scatterplot.rb
109
+ - lib/turbulence/generators/treemap.rb
110
+ - lib/turbulence/scm/git.rb
111
+ - lib/turbulence/scm/perforce.rb
112
+ - lib/turbulence/version.rb
113
+ - spec/turbulence/calculators/churn_spec.rb
114
+ - spec/turbulence/calculators/complexity_spec.rb
115
+ - spec/turbulence/checks_environoment_spec.rb
116
+ - spec/turbulence/command_line_interface_spec.rb
117
+ - spec/turbulence/generators/scatter_plot_spec.rb
118
+ - spec/turbulence/generators/treemap_spec.rb
119
+ - spec/turbulence/scm/git_spec.rb
120
+ - spec/turbulence/scm/perforce_spec.rb
121
+ - spec/turbulence/turbulence_spec.rb
122
+ - template/highchart_template.js.erb
123
+ - template/highcharts.js
124
+ - template/jquery.min.js
125
+ - template/treemap.html
126
+ - template/turbulence.html
127
+ - turbulence.gemspec
128
+ - win_rakefile_location_fix.rb
167
129
  homepage: http://chadfowler.com
168
130
  licenses: []
169
131
  metadata: {}
@@ -173,39 +135,27 @@ require_paths:
173
135
  - lib
174
136
  required_ruby_version: !ruby/object:Gem::Requirement
175
137
  requirements:
176
- - - ! '>='
138
+ - - '>='
177
139
  - !ruby/object:Gem::Version
178
140
  version: 1.8.7
179
141
  required_rubygems_version: !ruby/object:Gem::Requirement
180
142
  requirements:
181
- - - ! '>='
143
+ - - '>='
182
144
  - !ruby/object:Gem::Version
183
145
  version: '0'
184
146
  requirements: []
185
147
  rubyforge_project: turbulence
186
- rubygems_version: 2.0.7
148
+ rubygems_version: 2.0.6
187
149
  signing_key:
188
150
  specification_version: 4
189
151
  summary: Automates churn + flog scoring on a git repo for a Ruby project
190
152
  test_files:
191
- - !binary |-
192
- c3BlYy90dXJidWxlbmNlL2NhbGN1bGF0b3JzL2NodXJuX3NwZWMucmI=
193
- - !binary |-
194
- c3BlYy90dXJidWxlbmNlL2NhbGN1bGF0b3JzL2NvbXBsZXhpdHlfc3BlYy5y
195
- Yg==
196
- - !binary |-
197
- c3BlYy90dXJidWxlbmNlL2NoZWNrc19lbnZpcm9ub21lbnRfc3BlYy5yYg==
198
- - !binary |-
199
- c3BlYy90dXJidWxlbmNlL2NvbW1hbmRfbGluZV9pbnRlcmZhY2Vfc3BlYy5y
200
- Yg==
201
- - !binary |-
202
- c3BlYy90dXJidWxlbmNlL2dlbmVyYXRvcnMvc2NhdHRlcl9wbG90X3NwZWMu
203
- cmI=
204
- - !binary |-
205
- c3BlYy90dXJidWxlbmNlL2dlbmVyYXRvcnMvdHJlZW1hcF9zcGVjLnJi
206
- - !binary |-
207
- c3BlYy90dXJidWxlbmNlL3NjbS9naXRfc3BlYy5yYg==
208
- - !binary |-
209
- c3BlYy90dXJidWxlbmNlL3NjbS9wZXJmb3JjZV9zcGVjLnJi
210
- - !binary |-
211
- c3BlYy90dXJidWxlbmNlL3R1cmJ1bGVuY2Vfc3BlYy5yYg==
153
+ - spec/turbulence/calculators/churn_spec.rb
154
+ - spec/turbulence/calculators/complexity_spec.rb
155
+ - spec/turbulence/checks_environoment_spec.rb
156
+ - spec/turbulence/command_line_interface_spec.rb
157
+ - spec/turbulence/generators/scatter_plot_spec.rb
158
+ - spec/turbulence/generators/treemap_spec.rb
159
+ - spec/turbulence/scm/git_spec.rb
160
+ - spec/turbulence/scm/perforce_spec.rb
161
+ - spec/turbulence/turbulence_spec.rb