treet 0.15.0 → 0.17.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|