social_snippet 0.0.9 → 0.0.10
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 +8 -8
- data/.travis.yml +11 -4
- data/README.md +6 -6
- data/Rakefile +19 -1
- data/lib/social_snippet.rb +11 -0
- data/lib/social_snippet/api/install_repository_api.rb +23 -82
- data/lib/social_snippet/api/manifest_api.rb +3 -3
- data/lib/social_snippet/api/update_repository_api.rb +34 -35
- data/lib/social_snippet/command_line/sspm/sub_commands/install_command.rb +7 -7
- data/lib/social_snippet/config.rb +18 -8
- data/lib/social_snippet/core.rb +13 -0
- data/lib/social_snippet/document.rb +2 -0
- data/lib/social_snippet/document_backend.rb +2 -0
- data/lib/social_snippet/document_backend/yaml_document.rb +252 -0
- data/lib/social_snippet/document_backend/yaml_document/query.rb +45 -0
- data/lib/social_snippet/repository.rb +2 -2
- data/lib/social_snippet/repository/driver_factory.rb +42 -0
- data/lib/social_snippet/repository/drivers.rb +3 -2
- data/lib/social_snippet/repository/drivers/driver_base.rb +100 -0
- data/lib/social_snippet/repository/drivers/entry.rb +11 -0
- data/lib/social_snippet/repository/drivers/git_driver.rb +100 -0
- data/lib/social_snippet/repository/models.rb +15 -0
- data/lib/social_snippet/repository/models/package.rb +97 -0
- data/lib/social_snippet/repository/models/repository.rb +94 -0
- data/lib/social_snippet/repository/repository_manager.rb +79 -67
- data/lib/social_snippet/resolvers/base_resolver.rb +13 -17
- data/lib/social_snippet/rspec/test_document.rb +305 -0
- data/lib/social_snippet/rspec/test_driver.rb +76 -0
- data/lib/social_snippet/rspec/test_storage.rb +459 -0
- data/lib/social_snippet/storage.rb +1 -0
- data/lib/social_snippet/storage_backend.rb +3 -0
- data/lib/social_snippet/storage_backend/file_system_storage.rb +71 -0
- data/lib/social_snippet/storage_backend/storage_base.rb +35 -0
- data/lib/social_snippet/version.rb +8 -3
- data/spec/helpers/codeclimate_helper.rb +1 -1
- data/spec/helpers/fakefs_helper.rb +10 -0
- data/spec/helpers/social_snippet_helper.rb +117 -0
- data/spec/lib/api/insert_snippet_spec.rb +95 -2
- data/spec/lib/api/update_repository_spec.rb +196 -0
- data/spec/lib/command_line/sspm_install_spec.rb +169 -180
- data/spec/lib/command_line/sspm_update_spec.rb +56 -0
- data/spec/lib/config_spec.rb +6 -8
- data/spec/lib/core_spec.rb +21 -38
- data/spec/lib/file_system_storage_spec.rb +170 -0
- data/spec/lib/insert_resolver_spec.rb +15 -2
- data/spec/lib/registry_client_spec.rb +6 -9
- data/spec/lib/repository/driver_base_spec.rb +89 -0
- data/spec/lib/repository/git_driver_spec.rb +10 -0
- data/spec/lib/repository/package_spec.rb +172 -0
- data/spec/lib/repository/repository_factory_spec.rb +67 -22
- data/spec/lib/repository/repository_manager_spec.rb +71 -114
- data/spec/lib/repository/repository_spec.rb +191 -0
- data/spec/lib/yaml_document_spec.rb +14 -0
- data/spec/spec_helper.rb +8 -93
- data/test/config_test.rb +6 -7
- data/test/driver_base_test.rb +201 -0
- data/test/git_driver_test.rb +51 -0
- data/test/insert_snippet_test.rb +256 -349
- data/test/repository_manager_test.rb +7 -16
- data/test/yaml_document_test.rb +97 -0
- metadata +44 -16
- data/lib/social_snippet/repository/drivers/base_repository.rb +0 -189
- data/lib/social_snippet/repository/drivers/git_repository.rb +0 -74
- data/lib/social_snippet/repository/repository_factory.rb +0 -59
- data/lib/social_snippet/repository/repository_installer.rb +0 -85
- data/spec/lib/repository/base_repository_spec.rb +0 -104
- data/spec/lib/repository/git_repository_spec.rb +0 -83
- data/spec/lib/repository/repository_installer_spec.rb +0 -63
- data/test/base_repository_test.rb +0 -375
- data/test/git_repository_test.rb +0 -114
@@ -2,12 +2,6 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe ::SocialSnippet::Repository::RepositoryManager do
|
4
4
|
|
5
|
-
let(:logger) do
|
6
|
-
logger = ::SocialSnippet::Logger.new(STDOUT)
|
7
|
-
logger.level = ::SocialSnippet::Logger::Severity::INFO
|
8
|
-
logger
|
9
|
-
end
|
10
|
-
|
11
5
|
let(:config) do
|
12
6
|
::SocialSnippet::Config.new(social_snippet)
|
13
7
|
end
|
@@ -19,8 +13,9 @@ describe ::SocialSnippet::Repository::RepositoryManager do
|
|
19
13
|
end
|
20
14
|
|
21
15
|
before do
|
16
|
+
allow(social_snippet).to receive(:storage).and_return fake_storage
|
17
|
+
allow(social_snippet).to receive(:logger).and_return fake_logger
|
22
18
|
allow(social_snippet).to receive(:config).and_return config
|
23
|
-
allow(social_snippet).to receive(:logger).and_return logger
|
24
19
|
end
|
25
20
|
|
26
21
|
let(:repo_manager) do
|
@@ -28,16 +23,12 @@ describe ::SocialSnippet::Repository::RepositoryManager do
|
|
28
23
|
end
|
29
24
|
|
30
25
|
describe "complete (repo)" do
|
31
|
-
|
26
|
+
|
32
27
|
before do
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
FileUtils.mkdir_p "#{install_path}/my-math-repo"
|
38
|
-
FileUtils.mkdir_p "#{install_path}/myrepo"
|
39
|
-
allow(repo_manager.installer).to receive(:path).and_return install_path
|
40
|
-
end # prepare files
|
28
|
+
::SocialSnippet::Repository::Models::Repository.create :name => "my-repo"
|
29
|
+
::SocialSnippet::Repository::Models::Repository.create :name => "new-repo"
|
30
|
+
::SocialSnippet::Repository::Models::Repository.create :name => "my-math-repo"
|
31
|
+
end
|
41
32
|
|
42
33
|
context "key = my-" do
|
43
34
|
it { expect(repo_manager.complete "@snip <my-").to include "my-repo" }
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe ::SocialSnippet::DocumentBackend::YAMLDocument do
|
4
|
+
|
5
|
+
before { ::FileUtils.mkdir_p "/path/to" }
|
6
|
+
before { ::SocialSnippet::DocumentBackend::YAMLDocument.set_path "/path/to/document.yml" }
|
7
|
+
before { $yaml_document_hash = nil } # reset hash
|
8
|
+
|
9
|
+
describe "#load_file!" do
|
10
|
+
|
11
|
+
context "prepare yaml" do
|
12
|
+
|
13
|
+
before do
|
14
|
+
::File.write "/path/to/document.yml", {
|
15
|
+
"TestDocument" => {
|
16
|
+
"item1" => {
|
17
|
+
:name => "item-1",
|
18
|
+
:values => [
|
19
|
+
"val1-1",
|
20
|
+
"val1-2",
|
21
|
+
"val1-3",
|
22
|
+
],
|
23
|
+
:info => {
|
24
|
+
"hello" => "world",
|
25
|
+
},
|
26
|
+
},
|
27
|
+
"item2" => {
|
28
|
+
:name => "item-2",
|
29
|
+
:values => [
|
30
|
+
"val2-1",
|
31
|
+
"val2-2",
|
32
|
+
"val2-3",
|
33
|
+
],
|
34
|
+
:info => {
|
35
|
+
"foo" => "bar",
|
36
|
+
},
|
37
|
+
},
|
38
|
+
},
|
39
|
+
}.to_yaml
|
40
|
+
end
|
41
|
+
|
42
|
+
context "prepare class" do
|
43
|
+
|
44
|
+
let(:doc_class) do
|
45
|
+
::Class.new(::SocialSnippet::DocumentBackend::YAMLDocument) do
|
46
|
+
field :name, :type => String
|
47
|
+
field :values, :type => Array
|
48
|
+
field :info, :type => Hash
|
49
|
+
|
50
|
+
def self.name
|
51
|
+
"TestDocument"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "find item1" do
|
57
|
+
let(:item) { doc_class.find "item1" }
|
58
|
+
it { expect(item.name).to eq "item-1" }
|
59
|
+
it { expect(item.values.length).to eq 3 }
|
60
|
+
it { expect(item.values).to include "val1-1" }
|
61
|
+
it { expect(item.values).to include "val1-2" }
|
62
|
+
it { expect(item.values).to include "val1-3" }
|
63
|
+
it { expect(item.info["hello"]).to eq "world" }
|
64
|
+
end
|
65
|
+
|
66
|
+
context "find item2" do
|
67
|
+
let(:item) { doc_class.find "item2" }
|
68
|
+
it { expect(item.name).to eq "item-2" }
|
69
|
+
it { expect(item.values.length).to eq 3 }
|
70
|
+
it { expect(item.values).to include "val2-1" }
|
71
|
+
it { expect(item.values).to include "val2-2" }
|
72
|
+
it { expect(item.values).to include "val2-3" }
|
73
|
+
it { expect(item.info["foo"]).to eq "bar" }
|
74
|
+
end
|
75
|
+
|
76
|
+
context "remove item2" do
|
77
|
+
before { doc_class.find("item2").remove }
|
78
|
+
context "find item2" do
|
79
|
+
subject do
|
80
|
+
lambda { doc_class.find "item2" }
|
81
|
+
end
|
82
|
+
it { should raise_error }
|
83
|
+
end
|
84
|
+
context "find item1" do
|
85
|
+
let(:item) { doc_class.find("item1") }
|
86
|
+
it { expect(item.name).to eq "item-1" }
|
87
|
+
end
|
88
|
+
end # remove item2
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
end # prepare yaml
|
93
|
+
|
94
|
+
end #load_file!
|
95
|
+
|
96
|
+
end # ::SocialSnippet::DocumentBackend::YAMLDocument
|
97
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_snippet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroyuki Sano
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: version_sorter
|
@@ -260,6 +260,10 @@ files:
|
|
260
260
|
- lib/social_snippet/config.rb
|
261
261
|
- lib/social_snippet/context.rb
|
262
262
|
- lib/social_snippet/core.rb
|
263
|
+
- lib/social_snippet/document.rb
|
264
|
+
- lib/social_snippet/document_backend.rb
|
265
|
+
- lib/social_snippet/document_backend/yaml_document.rb
|
266
|
+
- lib/social_snippet/document_backend/yaml_document/query.rb
|
263
267
|
- lib/social_snippet/inserter.rb
|
264
268
|
- lib/social_snippet/logger.rb
|
265
269
|
- lib/social_snippet/registry.rb
|
@@ -268,18 +272,28 @@ files:
|
|
268
272
|
- lib/social_snippet/registry/registry_resources/base.rb
|
269
273
|
- lib/social_snippet/registry/registry_resources/repositories.rb
|
270
274
|
- lib/social_snippet/repository.rb
|
275
|
+
- lib/social_snippet/repository/driver_factory.rb
|
271
276
|
- lib/social_snippet/repository/drivers.rb
|
272
|
-
- lib/social_snippet/repository/drivers/
|
273
|
-
- lib/social_snippet/repository/drivers/
|
277
|
+
- lib/social_snippet/repository/drivers/driver_base.rb
|
278
|
+
- lib/social_snippet/repository/drivers/entry.rb
|
279
|
+
- lib/social_snippet/repository/drivers/git_driver.rb
|
280
|
+
- lib/social_snippet/repository/models.rb
|
281
|
+
- lib/social_snippet/repository/models/package.rb
|
282
|
+
- lib/social_snippet/repository/models/repository.rb
|
274
283
|
- lib/social_snippet/repository/repository_errors.rb
|
275
|
-
- lib/social_snippet/repository/repository_factory.rb
|
276
|
-
- lib/social_snippet/repository/repository_installer.rb
|
277
284
|
- lib/social_snippet/repository/repository_manager.rb
|
278
285
|
- lib/social_snippet/resolvers.rb
|
279
286
|
- lib/social_snippet/resolvers/base_resolver.rb
|
280
287
|
- lib/social_snippet/resolvers/dep_resolver.rb
|
281
288
|
- lib/social_snippet/resolvers/insert_resolver.rb
|
289
|
+
- lib/social_snippet/rspec/test_document.rb
|
290
|
+
- lib/social_snippet/rspec/test_driver.rb
|
291
|
+
- lib/social_snippet/rspec/test_storage.rb
|
282
292
|
- lib/social_snippet/snippet.rb
|
293
|
+
- lib/social_snippet/storage.rb
|
294
|
+
- lib/social_snippet/storage_backend.rb
|
295
|
+
- lib/social_snippet/storage_backend/file_system_storage.rb
|
296
|
+
- lib/social_snippet/storage_backend/storage_base.rb
|
283
297
|
- lib/social_snippet/tag.rb
|
284
298
|
- lib/social_snippet/tag_parser.rb
|
285
299
|
- lib/social_snippet/tsortable_hash.rb
|
@@ -287,32 +301,38 @@ files:
|
|
287
301
|
- social_snippet.gemspec
|
288
302
|
- spec/helpers/codeclimate_helper.rb
|
289
303
|
- spec/helpers/fakefs_helper.rb
|
304
|
+
- spec/helpers/social_snippet_helper.rb
|
290
305
|
- spec/helpers/webmock_helper.rb
|
291
306
|
- spec/lib/api/insert_snippet_spec.rb
|
307
|
+
- spec/lib/api/update_repository_spec.rb
|
292
308
|
- spec/lib/command_line/sspm_config_spec.rb
|
293
309
|
- spec/lib/command_line/sspm_init_spec.rb
|
294
310
|
- spec/lib/command_line/sspm_install_spec.rb
|
295
311
|
- spec/lib/command_line/sspm_search_spec.rb
|
296
312
|
- spec/lib/command_line/sspm_spec.rb
|
313
|
+
- spec/lib/command_line/sspm_update_spec.rb
|
297
314
|
- spec/lib/config_spec.rb
|
298
315
|
- spec/lib/context_spec.rb
|
299
316
|
- spec/lib/core_spec.rb
|
317
|
+
- spec/lib/file_system_storage_spec.rb
|
300
318
|
- spec/lib/insert_resolver_spec.rb
|
301
319
|
- spec/lib/inserter_spec.rb
|
302
320
|
- spec/lib/registry_client_spec.rb
|
303
|
-
- spec/lib/repository/
|
304
|
-
- spec/lib/repository/
|
321
|
+
- spec/lib/repository/driver_base_spec.rb
|
322
|
+
- spec/lib/repository/git_driver_spec.rb
|
323
|
+
- spec/lib/repository/package_spec.rb
|
305
324
|
- spec/lib/repository/repository_factory_spec.rb
|
306
|
-
- spec/lib/repository/repository_installer_spec.rb
|
307
325
|
- spec/lib/repository/repository_manager_spec.rb
|
326
|
+
- spec/lib/repository/repository_spec.rb
|
308
327
|
- spec/lib/tag_parser_spec.rb
|
309
328
|
- spec/lib/tag_spec.rb
|
329
|
+
- spec/lib/yaml_document_spec.rb
|
310
330
|
- spec/spec_helper.rb
|
311
|
-
- test/base_repository_test.rb
|
312
331
|
- test/command_test.rb
|
313
332
|
- test/config_test.rb
|
314
333
|
- test/context_test.rb
|
315
|
-
- test/
|
334
|
+
- test/driver_base_test.rb
|
335
|
+
- test/git_driver_test.rb
|
316
336
|
- test/insert_snippet_test.rb
|
317
337
|
- test/install_command_test.rb
|
318
338
|
- test/repository_manager_test.rb
|
@@ -320,6 +340,7 @@ files:
|
|
320
340
|
- test/tag_parser_test.rb
|
321
341
|
- test/tag_test.rb
|
322
342
|
- test/version_test.rb
|
343
|
+
- test/yaml_document_test.rb
|
323
344
|
homepage: https://github.com/social-snippet/social-snippet
|
324
345
|
licenses:
|
325
346
|
- MIT
|
@@ -348,32 +369,38 @@ summary: A snippet manager to share and use snippet library for the online judge
|
|
348
369
|
test_files:
|
349
370
|
- spec/helpers/codeclimate_helper.rb
|
350
371
|
- spec/helpers/fakefs_helper.rb
|
372
|
+
- spec/helpers/social_snippet_helper.rb
|
351
373
|
- spec/helpers/webmock_helper.rb
|
352
374
|
- spec/lib/api/insert_snippet_spec.rb
|
375
|
+
- spec/lib/api/update_repository_spec.rb
|
353
376
|
- spec/lib/command_line/sspm_config_spec.rb
|
354
377
|
- spec/lib/command_line/sspm_init_spec.rb
|
355
378
|
- spec/lib/command_line/sspm_install_spec.rb
|
356
379
|
- spec/lib/command_line/sspm_search_spec.rb
|
357
380
|
- spec/lib/command_line/sspm_spec.rb
|
381
|
+
- spec/lib/command_line/sspm_update_spec.rb
|
358
382
|
- spec/lib/config_spec.rb
|
359
383
|
- spec/lib/context_spec.rb
|
360
384
|
- spec/lib/core_spec.rb
|
385
|
+
- spec/lib/file_system_storage_spec.rb
|
361
386
|
- spec/lib/insert_resolver_spec.rb
|
362
387
|
- spec/lib/inserter_spec.rb
|
363
388
|
- spec/lib/registry_client_spec.rb
|
364
|
-
- spec/lib/repository/
|
365
|
-
- spec/lib/repository/
|
389
|
+
- spec/lib/repository/driver_base_spec.rb
|
390
|
+
- spec/lib/repository/git_driver_spec.rb
|
391
|
+
- spec/lib/repository/package_spec.rb
|
366
392
|
- spec/lib/repository/repository_factory_spec.rb
|
367
|
-
- spec/lib/repository/repository_installer_spec.rb
|
368
393
|
- spec/lib/repository/repository_manager_spec.rb
|
394
|
+
- spec/lib/repository/repository_spec.rb
|
369
395
|
- spec/lib/tag_parser_spec.rb
|
370
396
|
- spec/lib/tag_spec.rb
|
397
|
+
- spec/lib/yaml_document_spec.rb
|
371
398
|
- spec/spec_helper.rb
|
372
|
-
- test/base_repository_test.rb
|
373
399
|
- test/command_test.rb
|
374
400
|
- test/config_test.rb
|
375
401
|
- test/context_test.rb
|
376
|
-
- test/
|
402
|
+
- test/driver_base_test.rb
|
403
|
+
- test/git_driver_test.rb
|
377
404
|
- test/insert_snippet_test.rb
|
378
405
|
- test/install_command_test.rb
|
379
406
|
- test/repository_manager_test.rb
|
@@ -381,3 +408,4 @@ test_files:
|
|
381
408
|
- test/tag_parser_test.rb
|
382
409
|
- test/tag_test.rb
|
383
410
|
- test/version_test.rb
|
411
|
+
- test/yaml_document_test.rb
|
@@ -1,189 +0,0 @@
|
|
1
|
-
module SocialSnippet::Repository::Drivers
|
2
|
-
|
3
|
-
# Repository base class
|
4
|
-
# usage: class GitRepository < BaseRepository
|
5
|
-
class BaseRepository
|
6
|
-
|
7
|
-
attr_reader :path
|
8
|
-
attr_reader :cache_path
|
9
|
-
attr_reader :name
|
10
|
-
attr_reader :desc
|
11
|
-
attr_reader :main
|
12
|
-
attr_reader :ref
|
13
|
-
attr_reader :dependencies
|
14
|
-
attr_reader :ref
|
15
|
-
attr_reader :url
|
16
|
-
|
17
|
-
# Constructor
|
18
|
-
#
|
19
|
-
# @param path [String] The path of repository
|
20
|
-
def initialize(new_path, new_ref = nil)
|
21
|
-
@path = new_path
|
22
|
-
@cache_path = nil
|
23
|
-
@ref = new_ref
|
24
|
-
|
25
|
-
if ( not ref.nil? ) && ( not refs.empty? ) && ( not refs.include?(ref) )
|
26
|
-
raise Errors::NotExistRef
|
27
|
-
end
|
28
|
-
|
29
|
-
@url = nil
|
30
|
-
end
|
31
|
-
|
32
|
-
# Set repo's URL
|
33
|
-
def set_url(new_url)
|
34
|
-
@url = new_url
|
35
|
-
end
|
36
|
-
|
37
|
-
def load_cache(base_cache_path)
|
38
|
-
cache_path_cand = "#{base_cache_path}/#{name}/#{short_commit_id}"
|
39
|
-
|
40
|
-
if ::Dir.exists?(cache_path_cand)
|
41
|
-
return @cache_path = cache_path_cand
|
42
|
-
end
|
43
|
-
|
44
|
-
return @cache_path = nil
|
45
|
-
end
|
46
|
-
|
47
|
-
# Create cache of repository
|
48
|
-
#
|
49
|
-
# @param cache_path [String] The path of cache dir
|
50
|
-
# @return [String] the path
|
51
|
-
def create_cache(base_cache_path)
|
52
|
-
@cache_path = "#{base_cache_path}/#{name}/#{short_commit_id}"
|
53
|
-
|
54
|
-
return if ::Dir.exists?(cache_path)
|
55
|
-
|
56
|
-
::FileUtils.mkdir_p "#{base_cache_path}/#{name}"
|
57
|
-
::FileUtils.cp_r path, cache_path
|
58
|
-
|
59
|
-
return cache_path
|
60
|
-
end
|
61
|
-
|
62
|
-
# Load snippet.json file
|
63
|
-
def load_snippet_json
|
64
|
-
text = ::File.read(::File.join(path, "snippet.json"))
|
65
|
-
snippet_json = ::JSON.parse(text)
|
66
|
-
@name = snippet_json["name"]
|
67
|
-
@desc = snippet_json["desc"]
|
68
|
-
@main = snippet_json["main"] || ""
|
69
|
-
@dependencies = snippet_json["dependencies"] || {}
|
70
|
-
end
|
71
|
-
|
72
|
-
# Returns json text from repo instance
|
73
|
-
#
|
74
|
-
# @return json text
|
75
|
-
def to_snippet_json
|
76
|
-
required = [
|
77
|
-
:name,
|
78
|
-
]
|
79
|
-
|
80
|
-
optional = [
|
81
|
-
:desc,
|
82
|
-
:main,
|
83
|
-
:dependencies,
|
84
|
-
]
|
85
|
-
|
86
|
-
data = {}
|
87
|
-
required.each do |key|
|
88
|
-
data[key] = send(key)
|
89
|
-
end
|
90
|
-
optional.each do |key|
|
91
|
-
val = send(key)
|
92
|
-
if val.nil? === false && val != ""
|
93
|
-
data[key] = send(key)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
return data.to_json
|
98
|
-
end
|
99
|
-
|
100
|
-
# Returns latest version
|
101
|
-
#
|
102
|
-
# @param pattern [String] The pattern of version
|
103
|
-
# @return [String] The version
|
104
|
-
def latest_version(pattern = "")
|
105
|
-
pattern = "" if pattern.nil?
|
106
|
-
matched_versions = versions.select {|ref| ::SocialSnippet::Version.is_matched_version_pattern(pattern, ref)}
|
107
|
-
return ::VersionSorter.rsort(matched_versions).first
|
108
|
-
end
|
109
|
-
|
110
|
-
# Returns all versions
|
111
|
-
#
|
112
|
-
# @return [Array<String>] All versions of repository
|
113
|
-
def versions
|
114
|
-
refs.select {|ref| ::SocialSnippet::Version.is_version(ref) }
|
115
|
-
end
|
116
|
-
|
117
|
-
def current_ref
|
118
|
-
raise "not implete current_ref"
|
119
|
-
end
|
120
|
-
|
121
|
-
# Returns all refs
|
122
|
-
#
|
123
|
-
# @return [Array<String>] All references of repository
|
124
|
-
def refs
|
125
|
-
raise "not implement refs"
|
126
|
-
end
|
127
|
-
|
128
|
-
# Returns short current ref's commit id
|
129
|
-
#
|
130
|
-
# @return [String]
|
131
|
-
def short_commit_id
|
132
|
-
commit_id[0..7]
|
133
|
-
end
|
134
|
-
|
135
|
-
# Returns current ref's commit id
|
136
|
-
#
|
137
|
-
# @return [String]
|
138
|
-
def commit_id
|
139
|
-
raise "not implement commit_id"
|
140
|
-
end
|
141
|
-
|
142
|
-
# Returns the directory or file names within repository
|
143
|
-
#
|
144
|
-
# @param glob_path [String]
|
145
|
-
def glob(glob_path)
|
146
|
-
root_path = real_path("/")
|
147
|
-
::Dir.glob("#{root_path}/#{glob_path}")
|
148
|
-
end
|
149
|
-
|
150
|
-
# Returns the real path of given path
|
151
|
-
#
|
152
|
-
# @param target_path [String] The real path of repo's file or directory
|
153
|
-
def real_path(target_path)
|
154
|
-
# TODO: normalize path
|
155
|
-
if is_cached?
|
156
|
-
"#{cache_path}/#{main}/#{target_path}"
|
157
|
-
else
|
158
|
-
"#{path}/#{main}/#{target_path}"
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
# Checkout to ref
|
163
|
-
#
|
164
|
-
# @param ref [String] The reference of repository
|
165
|
-
def checkout(new_ref)
|
166
|
-
raise "not implement checkout"
|
167
|
-
end
|
168
|
-
|
169
|
-
# Check repository has version ref
|
170
|
-
#
|
171
|
-
# @return [Boolean]
|
172
|
-
def has_versions?
|
173
|
-
versions.empty? === false
|
174
|
-
end
|
175
|
-
|
176
|
-
# Check repository is cached
|
177
|
-
#
|
178
|
-
# @return [Boolean]
|
179
|
-
def is_cached?
|
180
|
-
@cache_path.nil? === false
|
181
|
-
end
|
182
|
-
|
183
|
-
def update(options = {})
|
184
|
-
throw "not implement update"
|
185
|
-
end
|
186
|
-
|
187
|
-
end # BaseRepository
|
188
|
-
|
189
|
-
end # SocialSnippet
|