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 +7 -0
- data/.gitignore +1 -0
- data/Gemfile +3 -1
- data/Guardfile +1 -2
- data/lib/treet/gitrepo.rb +20 -9
- data/lib/treet/hash.rb +1 -2
- data/lib/treet/version.rb +1 -1
- data/spec/lib/hash_spec.rb +26 -0
- data/spec/lib/test_gitrepo.rb +4 -4
- data/treet.gemspec +1 -1
- metadata +25 -51
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
data/Gemfile
CHANGED
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'
|
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
|
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.
|
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
|
-
|
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
|
-
|
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
data/spec/lib/hash_spec.rb
CHANGED
@@ -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")
|
data/spec/lib/test_gitrepo.rb
CHANGED
@@ -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
|
102
|
-
|
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.
|
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.
|
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-
|
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.
|
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.
|
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:
|
211
|
+
rubygems_version: 2.0.5
|
238
212
|
signing_key:
|
239
|
-
specification_version:
|
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
|