social_snippet 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +2 -0
- data/.travis.yml +22 -3
- data/Gemfile +25 -2
- data/Guardfile +9 -0
- data/README.md +6 -1
- data/Rakefile +51 -1
- data/appveyor.yml +36 -0
- data/bin/ssnip +10 -0
- data/bin/sspm +10 -0
- data/lib/social_snippet.rb +15 -4
- data/lib/social_snippet/api.rb +238 -0
- data/lib/social_snippet/command_line.rb +4 -0
- data/lib/social_snippet/command_line/command.rb +158 -0
- data/lib/social_snippet/command_line/ssnip.rb +2 -0
- data/lib/social_snippet/command_line/ssnip/main_command.rb +26 -0
- data/lib/social_snippet/command_line/sspm.rb +3 -0
- data/lib/social_snippet/command_line/sspm/main_command.rb +63 -0
- data/lib/social_snippet/command_line/sspm/sub_commands.rb +16 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/complete_command.rb +28 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/info_command.rb +28 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/install_command.rb +103 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/publish_command.rb +51 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/search_command.rb +32 -0
- data/lib/social_snippet/command_line/sspm/sub_commands/update_command.rb +37 -0
- data/lib/social_snippet/config.rb +92 -0
- data/lib/social_snippet/context.rb +89 -0
- data/lib/social_snippet/core.rb +40 -0
- data/lib/social_snippet/inserter.rb +64 -0
- data/lib/social_snippet/logger.rb +9 -0
- data/lib/social_snippet/registry.rb +3 -0
- data/lib/social_snippet/registry/registry_client.rb +15 -0
- data/lib/social_snippet/registry/registry_resources.rb +3 -0
- data/lib/social_snippet/registry/registry_resources/base.rb +80 -0
- data/lib/social_snippet/registry/registry_resources/repositories.rb +23 -0
- data/lib/social_snippet/repository.rb +6 -0
- data/lib/social_snippet/repository/drivers.rb +3 -0
- data/lib/social_snippet/repository/drivers/base_repository.rb +192 -0
- data/lib/social_snippet/repository/drivers/git_repository.rb +76 -0
- data/lib/social_snippet/repository/repository_errors.rb +5 -0
- data/lib/social_snippet/repository/repository_factory.rb +59 -0
- data/lib/social_snippet/repository/repository_installer.rb +86 -0
- data/lib/social_snippet/repository/repository_manager.rb +177 -0
- data/lib/social_snippet/resolvers.rb +4 -0
- data/lib/social_snippet/resolvers/base_resolver.rb +103 -0
- data/lib/social_snippet/resolvers/dep_resolver.rb +61 -0
- data/lib/social_snippet/resolvers/insert_resolver.rb +100 -0
- data/lib/social_snippet/snippet.rb +14 -0
- data/lib/social_snippet/tag.rb +198 -0
- data/lib/social_snippet/tag_parser.rb +61 -0
- data/lib/social_snippet/version.rb +26 -1
- data/social_snippet.gemspec +18 -3
- data/spec/helpers/codeclimate_helper.rb +4 -0
- data/spec/helpers/fakefs_helper.rb +15 -0
- data/spec/helpers/webmock_helper.rb +16 -0
- data/spec/lib/api_spec.rb +106 -0
- data/spec/lib/command_line/sspm_install_spec.rb +224 -0
- data/spec/lib/command_line/sspm_search_spec.rb +167 -0
- data/spec/lib/command_line/sspm_spec.rb +81 -0
- data/spec/lib/config_spec.rb +56 -0
- data/spec/lib/context_spec.rb +48 -0
- data/spec/lib/core_spec.rb +126 -0
- data/spec/lib/inserter_spec.rb +177 -0
- data/spec/lib/registry_client_spec.rb +173 -0
- data/spec/lib/repository/base_repository_spec.rb +104 -0
- data/spec/lib/repository/git_repository_spec.rb +83 -0
- data/spec/lib/repository/repository_factory_spec.rb +31 -0
- data/spec/lib/repository/repository_installer_spec.rb +63 -0
- data/spec/lib/repository/repository_manager_spec.rb +201 -0
- data/spec/lib/tag_parser_spec.rb +173 -0
- data/spec/lib/tag_spec.rb +93 -0
- data/spec/spec_helper.rb +106 -0
- data/test/base_repository_test.rb +375 -0
- data/test/command_test.rb +39 -0
- data/test/context_test.rb +31 -0
- data/test/core_test.rb +2091 -0
- data/test/git_repository_test.rb +114 -0
- data/test/install_command_test.rb +28 -0
- data/test/repository_manager_test.rb +109 -0
- data/test/tag_parser_test.rb +47 -0
- data/test/tag_test.rb +217 -0
- data/test/version_test.rb +56 -0
- metadata +271 -14
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Mzg5Mjk4NTRjY2Q5YTA0NTJjMGUxOWM5NGJjYzFkMDcwZjYxYWNjOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
M2Q0NjlhNzU1YWViYTg3OGJiNjJiNWNmMzExZGEwYzQ2YjQ0ZWUzMg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Mzc0MDUxM2VmMmZlYjczNjc0NzQ0N2I5ZThiZWMxMmZiNzY3OTYzNzUzODNh
|
10
|
+
NDQyNzgzMTU1NmUzMDhiNmNhZGZiYjM3ZjEzZWJmNmFlOTRkNjkzZjIwMTEw
|
11
|
+
NTNhYzQyMjZiOWIyOGZjNDZhNzQzYWQyMmNkNTlkMzE3MGRmZmM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MGRlZDc4ODRjNWQ0N2RkNTQ1M2JiOTJlZTg1NTU3OWM0ZjA2NzQ4YmM2Yzk1
|
14
|
+
NTE5YTA3ZDk0NDA3NmI4NmM3YThkYWM4YzUxYzdlNjM2ZjUzOWU2NDBjNTJl
|
15
|
+
ZjM4MTBmMzJkZWQ2N2U0Mzc2ZjkzNzRhOTZhNWEyNWM5MDQwMmQ=
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,8 +1,21 @@
|
|
1
1
|
language: ruby
|
2
|
+
|
2
3
|
rvm:
|
3
|
-
- 2.
|
4
|
-
- 2.
|
5
|
-
-
|
4
|
+
- "2.2"
|
5
|
+
- "2.1"
|
6
|
+
- "2.0"
|
7
|
+
- "1.9"
|
8
|
+
|
9
|
+
bundler_args: "--without debug --jobs 3"
|
10
|
+
|
11
|
+
sudo: false
|
12
|
+
|
13
|
+
script:
|
14
|
+
- bundle exec rake spec
|
15
|
+
- bundle exec rake spec_without_fakefs
|
16
|
+
- bundle exec rake test
|
17
|
+
- bundle exec rake test_without_fakefs
|
18
|
+
|
6
19
|
deploy:
|
7
20
|
provider: rubygems
|
8
21
|
api_key:
|
@@ -10,3 +23,9 @@ deploy:
|
|
10
23
|
secure: "hlC3/Vsqpw3RdA0g8nAuusXEpGiwLtndGQVd8eg8x7yCoubFmsruwJG2Cci4QF2aIVGovFzrrmlxPb204nndsmBCzTLZEnn2dsCqOt8TZDAyFRZf6xeZ53eT7AjOJvFIafS4YLQ975upzsQ/cW4OgWFRaqhHgckTUSapa7Dyeao="
|
11
24
|
gem:
|
12
25
|
master: social_snippet
|
26
|
+
|
27
|
+
cache:
|
28
|
+
bundler: true
|
29
|
+
directories:
|
30
|
+
- node_modules
|
31
|
+
- bower_components
|
data/Gemfile
CHANGED
@@ -1,4 +1,27 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
gem "bundler"
|
4
|
+
gem "rake"
|
5
|
+
gem "version_sorter"
|
6
|
+
gem "rugged"
|
7
|
+
gem "rest-client"
|
8
|
+
|
9
|
+
group :development do
|
10
|
+
gem "yard", :require => false
|
11
|
+
gem "pry", :require => false
|
12
|
+
gem "guard", :require => false
|
13
|
+
gem "guard-shell", :require => false
|
14
|
+
end
|
15
|
+
|
16
|
+
group :test do
|
17
|
+
gem "rspec", :require => false
|
18
|
+
gem "fakefs", :require => false
|
19
|
+
gem "webmock", :require => false
|
20
|
+
gem "simplecov", :require => false
|
21
|
+
gem "codeclimate-test-reporter", :require => false
|
22
|
+
end
|
23
|
+
|
24
|
+
# should be disabled on travis-ci
|
25
|
+
group :debug do
|
26
|
+
gem "pry-byebug", :require => false
|
27
|
+
end
|
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
#
|
1
|
+
# Social Snippet
|
2
|
+
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/social_snippet.svg)](http://badge.fury.io/rb/social_snippet)
|
4
|
+
[![Build Status](https://travis-ci.org/social-snippet/social-snippet.svg?branch=master)](https://travis-ci.org/social-snippet/social-snippet)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/social-snippet/social-snippet/badges/gpa.svg)](https://codeclimate.com/github/social-snippet/social-snippet)
|
6
|
+
[![Test Coverage](https://codeclimate.com/github/social-snippet/social-snippet/badges/coverage.svg)](https://codeclimate.com/github/social-snippet/social-snippet)
|
2
7
|
|
3
8
|
TODO: Write a gem description
|
4
9
|
|
data/Rakefile
CHANGED
@@ -1,7 +1,57 @@
|
|
1
|
+
require "bundler/setup"
|
1
2
|
require "bundler/gem_tasks"
|
2
3
|
|
3
4
|
task :default => [:spec]
|
4
5
|
|
5
6
|
require "rspec/core/rake_task"
|
6
|
-
|
7
|
+
|
8
|
+
# rake spec
|
9
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
10
|
+
ENV["RSPEC_WITHOUT_FAKEFS"] = "false"
|
11
|
+
t.rspec_opts = [
|
12
|
+
"--format documentation",
|
13
|
+
"--color",
|
14
|
+
"--tag ~without_fakefs",
|
15
|
+
]
|
16
|
+
end
|
17
|
+
|
18
|
+
# rake spec_without_fs
|
19
|
+
RSpec::Core::RakeTask.new(:spec_without_fakefs) do |t|
|
20
|
+
ENV["RSPEC_WITHOUT_FAKEFS"] = "true"
|
21
|
+
t.rspec_opts = [
|
22
|
+
"--format documentation",
|
23
|
+
"--color",
|
24
|
+
"--tag without_fakefs",
|
25
|
+
]
|
26
|
+
end
|
27
|
+
|
28
|
+
# rake test
|
29
|
+
RSpec::Core::RakeTask.new(:test) do |t|
|
30
|
+
ENV["RSPEC_WITHOUT_FAKEFS"] = "false"
|
31
|
+
t.rspec_opts = [
|
32
|
+
"--pattern '../test/*_test.rb'",
|
33
|
+
"--color",
|
34
|
+
"--tag ~without_fakefs",
|
35
|
+
]
|
36
|
+
end
|
37
|
+
|
38
|
+
# rake test_without_fakefs
|
39
|
+
RSpec::Core::RakeTask.new(:test_without_fakefs) do |t|
|
40
|
+
ENV["RSPEC_WITHOUT_FAKEFS"] = "true"
|
41
|
+
t.rspec_opts = [
|
42
|
+
"--pattern '../test/*_test.rb'",
|
43
|
+
"--color",
|
44
|
+
"--tag without_fakefs",
|
45
|
+
]
|
46
|
+
end
|
47
|
+
|
48
|
+
require "yard"
|
49
|
+
require "yard/rake/yardoc_task"
|
50
|
+
|
51
|
+
# rake yard
|
52
|
+
YARD::Rake::YardocTask.new do |t|
|
53
|
+
t.files = [
|
54
|
+
"lib/{,**}/*.rb"
|
55
|
+
]
|
56
|
+
end
|
7
57
|
|
data/appveyor.yml
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
version: "{build}"
|
2
|
+
|
3
|
+
install:
|
4
|
+
- ps: iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
|
5
|
+
- choco install pkgconfiglite
|
6
|
+
- git clone --branch v0.21.1 --depth 1 --single-branch git://github.com/libgit2/libgit2 libgit2
|
7
|
+
- cd libgit2
|
8
|
+
- cmake -DCMAKE_BUILD_TYPE=Release -DTHREADSAFE=ON -DBUILD_CLAR=OFF -DCMAKE_INSTALL_PREFIX=%PREFIX%\libgit2 .
|
9
|
+
- cmake --build . --target install
|
10
|
+
|
11
|
+
- SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
|
12
|
+
- ruby --version
|
13
|
+
- SET PATH=%PREFIX%\libgit2\bin;%PATH%
|
14
|
+
|
15
|
+
- gem update --system
|
16
|
+
- gem install rugged --no-ri --no-rdoc -- --use-system-libraries --with-git2-dir=%PREFIX%\libgit2
|
17
|
+
- gem install bundler --no-ri --no-rdoc
|
18
|
+
- bundle install --jobs 2
|
19
|
+
|
20
|
+
test_script:
|
21
|
+
- cmd: bundle exec rake spec
|
22
|
+
- cmd: bundle exec rake spec_without_fakefs
|
23
|
+
- cmd: bundle exec rake test
|
24
|
+
- cmd: bundle exec rake test_without_fakefs
|
25
|
+
|
26
|
+
build: off
|
27
|
+
|
28
|
+
environment:
|
29
|
+
|
30
|
+
global:
|
31
|
+
PREFIX: c:\libs
|
32
|
+
|
33
|
+
matrix:
|
34
|
+
- ruby_version: "21"
|
35
|
+
- ruby_version: "20"
|
36
|
+
- ruby_version: "19"
|
data/bin/ssnip
ADDED
data/bin/sspm
ADDED
data/lib/social_snippet.rb
CHANGED
@@ -1,5 +1,16 @@
|
|
1
|
-
|
1
|
+
module SocialSnippet; end
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require_relative "social_snippet/core"
|
4
|
+
require_relative "social_snippet/version"
|
5
|
+
require_relative "social_snippet/tag"
|
6
|
+
require_relative "social_snippet/tag_parser"
|
7
|
+
require_relative "social_snippet/config"
|
8
|
+
require_relative "social_snippet/repository"
|
9
|
+
require_relative "social_snippet/context"
|
10
|
+
require_relative "social_snippet/snippet"
|
11
|
+
require_relative "social_snippet/inserter"
|
12
|
+
require_relative "social_snippet/resolvers"
|
13
|
+
require_relative "social_snippet/registry"
|
14
|
+
require_relative "social_snippet/command_line"
|
15
|
+
require_relative "social_snippet/logger"
|
16
|
+
require_relative "social_snippet/api"
|
@@ -0,0 +1,238 @@
|
|
1
|
+
require "json"
|
2
|
+
|
3
|
+
class SocialSnippet::Api
|
4
|
+
|
5
|
+
attr_reader :social_snippet
|
6
|
+
|
7
|
+
# Constructor
|
8
|
+
def initialize(new_social_snippet)
|
9
|
+
@social_snippet = new_social_snippet
|
10
|
+
end
|
11
|
+
|
12
|
+
# Insert snippets to given text
|
13
|
+
#
|
14
|
+
# @param src [String] The text of source code
|
15
|
+
def insert_snippet(src)
|
16
|
+
resolver = ::SocialSnippet::Resolvers::InsertResolver.new(social_snippet)
|
17
|
+
res = resolver.insert(src)
|
18
|
+
output res
|
19
|
+
res
|
20
|
+
end
|
21
|
+
|
22
|
+
def install_repository_by_name(repo_name, repo_ref, options = {})
|
23
|
+
installed_as = repo_name
|
24
|
+
installed_as = options[:name] unless options[:name].nil?
|
25
|
+
|
26
|
+
unless installed_as === repo_name
|
27
|
+
output "Installing as #{installed_as}"
|
28
|
+
end
|
29
|
+
|
30
|
+
if social_snippet.repo_manager.exists?(installed_as, repo_ref)
|
31
|
+
output "#{installed_as} is already installed"
|
32
|
+
return
|
33
|
+
end
|
34
|
+
|
35
|
+
output "Finding: #{repo_name}"
|
36
|
+
info = social_snippet.registry_client.repositories.find(repo_name)
|
37
|
+
output "Found at: #{info["url"]}"
|
38
|
+
|
39
|
+
output "Cloning repository..."
|
40
|
+
repo = ::SocialSnippet::Repository::RepositoryFactory.clone(info["url"])
|
41
|
+
|
42
|
+
install_repository installed_as, repo_ref, repo
|
43
|
+
end
|
44
|
+
|
45
|
+
def install_repository_by_url(repo_url, repo_ref, options = {})
|
46
|
+
output "Cloning repository..."
|
47
|
+
repo = ::SocialSnippet::Repository::RepositoryFactory.clone(repo_url)
|
48
|
+
install_repository_by_repo repo, repo_ref, options
|
49
|
+
end
|
50
|
+
|
51
|
+
def install_repository_by_path(repo_path, repo_ref, options = {})
|
52
|
+
output "Cloning repository..."
|
53
|
+
repo = ::SocialSnippet::Repository::RepositoryFactory.clone_local(repo_path)
|
54
|
+
install_repository_by_repo repo, repo_ref, options
|
55
|
+
end
|
56
|
+
|
57
|
+
def install_repository_by_repo(repo, repo_ref, options)
|
58
|
+
installed_as = repo.name
|
59
|
+
installed_as = options[:name] unless options[:name].nil?
|
60
|
+
output "Installing as #{installed_as}"
|
61
|
+
|
62
|
+
if social_snippet.repo_manager.exists?(installed_as)
|
63
|
+
output "#{installed_as} is already installed"
|
64
|
+
return
|
65
|
+
end
|
66
|
+
|
67
|
+
install_repository installed_as, repo_ref, repo
|
68
|
+
end
|
69
|
+
|
70
|
+
# Install repository
|
71
|
+
#
|
72
|
+
# @param repo [::SocialSnippet::Repository::Drivers::BaseRepository]
|
73
|
+
def install_repository(repo_name, repo_ref, repo, options = {})
|
74
|
+
display_name = repo_name
|
75
|
+
|
76
|
+
if repo_ref.nil?
|
77
|
+
repo_ref = resolve_reference(repo)
|
78
|
+
|
79
|
+
if repo.has_versions?
|
80
|
+
output "Resolving #{display_name}'s version"
|
81
|
+
else
|
82
|
+
output "No versions, use current reference"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
display_name = "#{repo_name}\##{repo_ref}"
|
87
|
+
|
88
|
+
output "Installing: #{display_name}"
|
89
|
+
unless options[:dry_run]
|
90
|
+
social_snippet.repo_manager.install repo_name, repo_ref, repo, options
|
91
|
+
end
|
92
|
+
|
93
|
+
output "Success: #{display_name}"
|
94
|
+
|
95
|
+
# install dependencies
|
96
|
+
if has_dependencies?(repo)
|
97
|
+
output "Finding #{display_name}'s dependencies"
|
98
|
+
install_missing_dependencies repo.dependencies, options
|
99
|
+
output "Finish finding #{display_name}'s dependencies"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def update_repository(repo_name, options = {})
|
104
|
+
unless social_snippet.repo_manager.exists?(repo_name)
|
105
|
+
output "ERROR: #{repo_name} is not installed"
|
106
|
+
return
|
107
|
+
end
|
108
|
+
|
109
|
+
output "Fetching update for #{repo_name}"
|
110
|
+
ret = social_snippet.repo_manager.fetch(repo_name, options)
|
111
|
+
|
112
|
+
repo = social_snippet.repo_manager.find_repository(repo_name)
|
113
|
+
display_name = repo_name
|
114
|
+
|
115
|
+
# nothing to update
|
116
|
+
if ret == 0 && social_snippet.repo_manager.exists?(repo_name, repo.latest_version)
|
117
|
+
output "Everything up-to-date"
|
118
|
+
return
|
119
|
+
end
|
120
|
+
|
121
|
+
output "Updating #{repo_name}"
|
122
|
+
unless options[:dry_run]
|
123
|
+
version = repo.latest_version
|
124
|
+
if repo.has_versions? && repo.current_ref != version
|
125
|
+
output "Bumping version into #{version}"
|
126
|
+
display_name = "#{repo_name}\##{version}"
|
127
|
+
repo.checkout version
|
128
|
+
social_snippet.repo_manager.update repo_name, version, repo, options
|
129
|
+
end
|
130
|
+
social_snippet.repo_manager.cache_installing_repo repo
|
131
|
+
end
|
132
|
+
|
133
|
+
output "Success #{display_name}"
|
134
|
+
|
135
|
+
# update deps
|
136
|
+
if social_snippet.repo_manager.has_deps?(repo_name)
|
137
|
+
output "Updating #{display_name}'s dependencies"
|
138
|
+
deps = social_snippet.repo_manager.deps(repo_name)
|
139
|
+
install_missing_dependencies deps, options
|
140
|
+
output "Finish updating #{display_name}'s dependencies"
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def update_all_repositories(options = {})
|
145
|
+
social_snippet.repo_manager.each_installed_repo do |repo_name|
|
146
|
+
update_repository repo_name, options
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def complete_snippet_path(keyword)
|
151
|
+
social_snippet.repo_manager.complete(keyword)
|
152
|
+
end
|
153
|
+
|
154
|
+
def cli_complete_snippet_path(keyword)
|
155
|
+
complete_snippet_path(keyword).each do |cand_repo|
|
156
|
+
output cand_repo
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
def show_info(repo_name)
|
161
|
+
repo_info = social_snippet.registry_client.repositories.find(repo_name)
|
162
|
+
output ::JSON.pretty_generate(repo_info)
|
163
|
+
end
|
164
|
+
|
165
|
+
def search_repositories(query, options = {})
|
166
|
+
format_text = search_result_format(options)
|
167
|
+
social_snippet.registry_client.repositories.search(query).each do |repo|
|
168
|
+
output format_text % search_result_list(repo, options)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def add_url(url, options = {})
|
173
|
+
ret = social_snippet.registry_client.repositories.add_url(url)
|
174
|
+
output ret
|
175
|
+
end
|
176
|
+
|
177
|
+
#
|
178
|
+
# Helpers
|
179
|
+
#
|
180
|
+
|
181
|
+
private
|
182
|
+
|
183
|
+
def resolve_reference(repo)
|
184
|
+
if repo.has_versions?
|
185
|
+
repo.latest_version
|
186
|
+
else
|
187
|
+
repo.current_ref
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
def has_dependencies?(repo)
|
192
|
+
repo.dependencies && ( not repo.dependencies.empty? )
|
193
|
+
end
|
194
|
+
|
195
|
+
def install_missing_dependencies(repo_deps, options = {})
|
196
|
+
repo_deps.each do |dep_repo_name, dep_repo_ref|
|
197
|
+
unless social_snippet.repo_manager.exists?(dep_repo_name, dep_repo_ref)
|
198
|
+
install_repository_by_name dep_repo_name, dep_repo_ref, options
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
def search_result_format(options)
|
204
|
+
keys = [ # TODO: improve (change order by option, etc...)
|
205
|
+
:name,
|
206
|
+
:desc,
|
207
|
+
:url,
|
208
|
+
:installed,
|
209
|
+
]
|
210
|
+
|
211
|
+
list = []
|
212
|
+
keys.each {|key| list.push "%s" if options[key] }
|
213
|
+
|
214
|
+
return list.join(" ")
|
215
|
+
end
|
216
|
+
|
217
|
+
def search_result_list(repo, options)
|
218
|
+
list = []
|
219
|
+
list.push repo["name"] if options[:name]
|
220
|
+
list.push "\"#{repo["desc"]}\"" if options[:desc]
|
221
|
+
list.push repo["url"] if options[:url]
|
222
|
+
list.push search_result_installed(repo) if options[:installed]
|
223
|
+
return list
|
224
|
+
end
|
225
|
+
|
226
|
+
def search_result_installed(repo)
|
227
|
+
if social_snippet.repo_manager.exists?(repo["name"])
|
228
|
+
"#installed"
|
229
|
+
else
|
230
|
+
""
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
def output(message)
|
235
|
+
social_snippet.logger.say message
|
236
|
+
end
|
237
|
+
|
238
|
+
end
|