treet 0.15.0 → 0.17.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0cbacd421d190cd2d749327de0ee03aaf373d524
4
+ data.tar.gz: e41405f31af293569faab6ef0ecc8242a01a645f
5
+ SHA512:
6
+ metadata.gz: f049a44fb96e3b38c7c8c977941bf626715f2029e5499381b946c0414d469ee6457979a95171fe7fd80713333dc8fe9e293ec24d37c97c0412b1c6880599b5ea
7
+ data.tar.gz: d3a42775c21ee9a641d1b112d94e23056d121957eef76a24889faff5006afac6d98f5b4e216f471e8cebf00ff89b942c3c6fc5895fe0a1a3d68c77f8d3da4289
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  .irb_history
19
+ TAGS
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in treet.gemspec
3
+ # gem 'rugged', :git => "git@github.com:libgit2/rugged.git", :branch => 'development'
4
+ #{}"~> 0.18.0.b1"
5
+
4
6
  gemspec
data/Guardfile CHANGED
@@ -18,11 +18,10 @@ guard 'minitest', test_folders: 'spec', test_file_patterns: 'test_*.rb' do
18
18
  # watch(%r|^spec/spec_helper\.rb|) { "spec" }
19
19
  end
20
20
 
21
- guard 'rspec', :version => 2 do
21
+ guard 'rspec' do
22
22
  watch(%r{^spec/.+_spec\.rb$})
23
23
 
24
24
  watch(%r{^lib/treet/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
25
25
  watch(%r{^(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
26
26
  watch('spec/spec_helper.rb') { "spec" }
27
27
  end
28
-
data/lib/treet/gitrepo.rb CHANGED
@@ -1,11 +1,9 @@
1
- # encoding: UTF-8
2
-
3
1
  require "rugged"
4
2
  require "forwardable"
5
3
 
6
4
  class Treet::Gitrepo < Treet::Repo
7
5
  extend Forwardable
8
- def_delegators :@gitrepo, :head, :refs, :index
6
+ def_delegators :@gitrepo, :head, :refs, :index, :remotes
9
7
 
10
8
  def initialize(path, opts = {})
11
9
  raise ArgumentError, "author required for updates" unless opts[:author]
@@ -22,7 +20,7 @@ class Treet::Gitrepo < Treet::Repo
22
20
  end
23
21
 
24
22
  def tags
25
- gitrepo.refs(/tags/)
23
+ gitrepo.refs.select {|ref| ref.name =~ %r{/tags/}}
26
24
  end
27
25
 
28
26
  def tag(tagname, opts = {})
@@ -30,7 +28,7 @@ class Treet::Gitrepo < Treet::Repo
30
28
  commit = opts[:commit] || head.target
31
29
  if tag_ref = Rugged::Reference.lookup(gitrepo, refname)
32
30
  # move an existing tag
33
- tag_ref.target = commit
31
+ tag_ref.set_target(commit)
34
32
  else
35
33
  # new tag
36
34
  Rugged::Reference.create(gitrepo, refname, commit)
@@ -68,13 +66,17 @@ class Treet::Gitrepo < Treet::Repo
68
66
  index.entries.map{|e| e[:path]}
69
67
  end
70
68
 
71
- def branches
72
- refs(/heads/).map {|ref| ref.name.gsub(/^refs\/heads\//, '')} - ['master']
69
+ def branches(branchname = nil)
70
+ if branchname
71
+ Rugged::Branch.lookup(gitrepo, branchname)
72
+ else
73
+ gitrepo.branches.map(&:name) - ['master']
74
+ end
73
75
  end
74
76
 
75
77
  # always branch from tip of master (private representation)
76
78
  def branch(name)
77
- Rugged::Reference.create(gitrepo, "refs/heads/#{name}", head.target)
79
+ gitrepo.create_branch(name)
78
80
  end
79
81
 
80
82
  def tagged?(tagname)
@@ -93,6 +95,10 @@ class Treet::Gitrepo < Treet::Repo
93
95
  commit_id_for(tagname) == head.target
94
96
  end
95
97
 
98
+ def remote(name)
99
+ Rugged::Remote.lookup(gitrepo, name)
100
+ end
101
+
96
102
  private
97
103
 
98
104
  attr_reader :gitrepo, :author
@@ -157,10 +163,15 @@ class Treet::Gitrepo < Treet::Repo
157
163
  end
158
164
  end
159
165
 
166
+ # ruby 2.0 changed behavior on empty strings: JSON.load("")
167
+ # under 1.9.3 and previous, this caused an exception
168
+ # under 2.0, this just returns nil
160
169
  def gitget(obj)
161
170
  data = gitrepo.read(obj[:oid]).data
162
171
  begin
163
- JSON.load(data)
172
+ v = JSON.load(data)
173
+ v = obj[:name] if v.nil?
174
+ v
164
175
  rescue JSON::ParserError
165
176
  # parser errors are not fatal
166
177
  # this just indicates a string entry rather than a hash
data/lib/treet/hash.rb CHANGED
@@ -1,5 +1,3 @@
1
- # encoding: UTF-8
2
-
3
1
  require "map"
4
2
  require "json"
5
3
  require "digest/sha1"
@@ -177,6 +175,7 @@ class Treet::Hash
177
175
  end
178
176
 
179
177
  when Array
178
+ v2 = v2.map {|e| (Hash === e) ? e.to_hash : e}
180
179
  v1.each do |e1|
181
180
  if !v2.include?(e1)
182
181
  # element has been removed
data/lib/treet/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Treet
2
- VERSION = "0.15.0"
2
+ VERSION = "0.17.1"
3
3
  end
@@ -23,6 +23,32 @@ describe Treet::Hash do
23
23
  hash.data.keys.should be_empty
24
24
  end
25
25
 
26
+ it "should be indifferent to hash element order" do
27
+ h1 = Treet::Hash.new(:one => [Map.new(:two => 'foo', :three => 'bar')])
28
+ h2 = Treet::Hash.new(:one => [Map.new(:three => 'bar', :two => 'foo')])
29
+ h1.should == h2
30
+ h1.compare(h2).should be_empty
31
+ end
32
+
33
+ it "should be indifferent to array element order" do
34
+ h1 = Treet::Hash.new(:one => [{:foo => 'bar'}, {:foo => 'baz'}])
35
+ h2 = Treet::Hash.new(:one => [{:foo => 'baz'}, {:foo => 'bar'}])
36
+ h1.should == h2
37
+ h1.compare(h2).should be_empty
38
+
39
+ h1 = Treet::Hash.new(:one => [3,5,7,11])
40
+ h2 = Treet::Hash.new(:one => [7,11,5,3])
41
+ h1.should == h2
42
+ h1.compare(h2).should be_empty
43
+ end
44
+
45
+ it "should be indifferent to array order (#2)" do
46
+ h1 = Treet::Hash.new(:one => [2,4,6])
47
+ h2 = Treet::Hash.new(:one => [6,4,2])
48
+ h1.should == h2
49
+ h1.compare(h2).should be_empty
50
+ end
51
+
26
52
  it "should compare hashes to file trees" do
27
53
  hash = Treet::Hash.new("#{File.dirname(__FILE__)}/../json/one.json")
28
54
  repo = Treet::Repo.new("#{File.dirname(__FILE__)}/../repos/one")
@@ -78,6 +78,7 @@ class GitrepoTests < MiniTest::Spec
78
78
 
79
79
  it "should have no branches" do
80
80
  johnb.branches.must_be_empty
81
+ johnb.branches('bogus').must_be_nil
81
82
  end
82
83
 
83
84
  it "should return commit SHA for version label" do
@@ -98,8 +99,8 @@ class GitrepoTests < MiniTest::Spec
98
99
  end
99
100
 
100
101
  describe "a gitrepo with an array of strings" do
101
- def self.make_repo
102
- @repo ||= begin
102
+ def repo
103
+ @@repo_with_array ||= begin
103
104
  data = {
104
105
  "label" => "Rainbow Colors",
105
106
  "colors" => %w{red orange yellow green blue purple}
@@ -110,8 +111,6 @@ class GitrepoTests < MiniTest::Spec
110
111
  end
111
112
  end
112
113
 
113
- let(:repo) { self.class.make_repo }
114
-
115
114
  it "should fetch directly from file system" do
116
115
  repo.to_hash.wont_be_nil
117
116
  end
@@ -399,6 +398,7 @@ class GitrepoTests < MiniTest::Spec
399
398
 
400
399
  it "should show a branch" do
401
400
  repo.branches.must_equal ['mybranch']
401
+ repo.branches('mybranch').wont_be_nil
402
402
  end
403
403
  end
404
404
 
data/treet.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_dependency 'map'
19
19
  gem.add_dependency 'thor'
20
- gem.add_dependency 'rugged', "~> 0.17.0.b6"
20
+ gem.add_dependency 'rugged', "~> 0.19.0"
21
21
 
22
22
  gem.add_development_dependency "rake"
23
23
  gem.add_development_dependency "rspec"
metadata CHANGED
@@ -1,158 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: treet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
5
- prerelease:
4
+ version: 0.17.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jason May
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-25 00:00:00.000000000 Z
11
+ date: 2013-07-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: map
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: thor
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rugged
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
53
- version: 0.17.0.b6
47
+ version: 0.19.0
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
61
- version: 0.17.0.b6
54
+ version: 0.19.0
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rake
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rspec
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: guard-rspec
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: guard-minitest
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: ruby_gntp
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
117
  version: '0'
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '>='
140
123
  - !ruby/object:Gem::Version
141
124
  version: '0'
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: rb-fsevent
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - '>='
148
130
  - !ruby/object:Gem::Version
149
131
  version: '0'
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - '>='
156
137
  - !ruby/object:Gem::Version
157
138
  version: '0'
158
139
  description: Transform between trees of files and JSON blobs
@@ -210,33 +191,26 @@ files:
210
191
  - treet.gemspec
211
192
  homepage: ''
212
193
  licenses: []
194
+ metadata: {}
213
195
  post_install_message:
214
196
  rdoc_options: []
215
197
  require_paths:
216
198
  - lib
217
199
  required_ruby_version: !ruby/object:Gem::Requirement
218
- none: false
219
200
  requirements:
220
- - - ! '>='
201
+ - - '>='
221
202
  - !ruby/object:Gem::Version
222
203
  version: '0'
223
- segments:
224
- - 0
225
- hash: 3301508427182722923
226
204
  required_rubygems_version: !ruby/object:Gem::Requirement
227
- none: false
228
205
  requirements:
229
- - - ! '>='
206
+ - - '>='
230
207
  - !ruby/object:Gem::Version
231
208
  version: '0'
232
- segments:
233
- - 0
234
- hash: 3301508427182722923
235
209
  requirements: []
236
210
  rubyforge_project:
237
- rubygems_version: 1.8.24
211
+ rubygems_version: 2.0.5
238
212
  signing_key:
239
- specification_version: 3
213
+ specification_version: 4
240
214
  summary: Transform between trees of files and JSON blobs
241
215
  test_files:
242
216
  - spec/json/bob1.json