veye 0.0.9 → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +80 -29
- data/Makefile +6 -0
- data/README.md +12 -224
- data/bin/veye +13 -22
- data/changelogs.md +95 -0
- data/lib/veye/api/base_resource.rb +8 -9
- data/lib/veye/api/github.rb +77 -0
- data/lib/veye/api/json_response.rb +21 -25
- data/lib/veye/api/package.rb +98 -0
- data/lib/veye/api/project.rb +107 -0
- data/lib/veye/api/resource.rb +9 -8
- data/lib/veye/api/service.rb +15 -0
- data/lib/veye/api/user.rb +32 -0
- data/lib/veye/api.rb +22 -2
- data/lib/veye/base_executor.rb +13 -9
- data/lib/veye/github/delete.rb +10 -20
- data/lib/veye/github/import.rb +7 -14
- data/lib/veye/github/info.rb +6 -12
- data/lib/veye/github/list.rb +9 -19
- data/lib/veye/github/search.rb +9 -17
- data/lib/veye/github/sync.rb +9 -18
- data/lib/veye/github.rb +1 -1
- data/lib/veye/helpers/format_helpers.rb +15 -5
- data/lib/veye/package/follow.rb +24 -47
- data/lib/veye/package/info.rb +8 -25
- data/lib/veye/package/references.rb +9 -36
- data/lib/veye/package/search.rb +14 -24
- data/lib/veye/package.rb +14 -6
- data/lib/veye/pagination.rb +2 -0
- data/lib/veye/project/check.rb +39 -117
- data/lib/veye/project/license.rb +23 -0
- data/lib/veye/project.rb +4 -3
- data/lib/veye/service.rb +13 -17
- data/lib/veye/user/me.rb +11 -30
- data/lib/veye/user.rb +2 -1
- data/lib/veye/version.rb +1 -1
- data/lib/veye/views/github/info_csv.rb +3 -3
- data/lib/veye/views/github/info_json.rb +4 -0
- data/lib/veye/views/github/list_csv.rb +5 -3
- data/lib/veye/views/github/list_pretty.rb +2 -2
- data/lib/veye/views/github/list_table.rb +3 -2
- data/lib/veye/views/package/info_pretty.rb +1 -1
- data/lib/veye/views/package/search_csv.rb +2 -3
- data/lib/veye/views/package/search_table.rb +1 -3
- data/lib/veye/views/package.rb +1 -1
- data/lib/veye/views/project/licence_csv.rb +3 -3
- data/lib/veye/views/project/licence_json.rb +1 -1
- data/lib/veye/views/project/licence_pretty.rb +1 -1
- data/lib/veye/views/project/licence_table.rb +3 -3
- data/lib/veye/views/user/profile_table.rb +4 -1
- data/lib/veye/views/user.rb +3 -1
- data/lib/veye.rb +29 -61
- data/test/api/github_test.rb +84 -0
- data/test/api/package_test.rb +80 -0
- data/test/api/project_test.rb +118 -0
- data/test/api/service_test.rb +15 -0
- data/test/api/user_test.rb +30 -0
- data/test/fixtures/vcr_cassettes/github_delete.yml +48 -0
- data/test/fixtures/vcr_cassettes/github_import.yml +53 -0
- data/test/fixtures/vcr_cassettes/github_info.yml +49 -0
- data/test/fixtures/vcr_cassettes/github_list.yml +80 -0
- data/test/fixtures/vcr_cassettes/github_sync.yml +48 -0
- data/test/fixtures/vcr_cassettes/package_follow.yml +52 -0
- data/test/fixtures/vcr_cassettes/package_follow_status.yml +48 -0
- data/test/fixtures/vcr_cassettes/package_info.yml +56 -0
- data/test/fixtures/vcr_cassettes/package_reference.yml +46 -0
- data/test/fixtures/vcr_cassettes/package_search.yml +46 -0
- data/test/fixtures/vcr_cassettes/package_unfollow.yml +48 -0
- data/test/fixtures/vcr_cassettes/project_delete.yml +48 -0
- data/test/fixtures/vcr_cassettes/project_get.yml +49 -0
- data/test/fixtures/vcr_cassettes/project_license.yml +49 -0
- data/test/fixtures/vcr_cassettes/project_list.yml +48 -0
- data/test/fixtures/vcr_cassettes/project_update.yml +105 -0
- data/test/fixtures/vcr_cassettes/project_upload.yml +104 -0
- data/test/fixtures/vcr_cassettes/services_ping.yml +46 -0
- data/test/fixtures/vcr_cassettes/user_get_favorites.yml +48 -0
- data/test/fixtures/vcr_cassettes/user_get_profile.yml +48 -0
- data/test/github_delete_test.rb +31 -0
- data/test/github_import_test.rb +94 -0
- data/test/github_info_test.rb +73 -0
- data/test/github_list_test.rb +84 -0
- data/test/github_sync_test.rb +20 -0
- data/test/package_follow_test.rb +38 -0
- data/test/package_info_test.rb +73 -0
- data/test/package_reference_test.rb +67 -0
- data/test/package_search_test.rb +66 -0
- data/test/project_check_test.rb +326 -0
- data/test/project_license_test.rb +72 -0
- data/test/service_test.rb +29 -0
- data/test/test_helper.rb +29 -4
- data/test/user_me_test.rb +126 -0
- data/veye.gemspec +45 -0
- metadata +163 -37
- data/DEPENDENCIES.md +0 -25
- data/lib/veye/helpers/repo_helpers.rb +0 -5
- data/lib/veye/project/licence.rb +0 -38
- data/test/default_test.rb +0 -14
data/lib/veye/github/search.rb
CHANGED
@@ -3,32 +3,24 @@ require_relative '../base_executor.rb'
|
|
3
3
|
|
4
4
|
module Veye
|
5
5
|
module Github
|
6
|
+
# Search - find projects on Github
|
6
7
|
class Search < BaseExecutor
|
7
|
-
|
8
|
+
@output_formats = {
|
8
9
|
'csv' => Github::SearchCSV.new,
|
9
10
|
'json' => Github::SearchJSON.new,
|
10
11
|
'pretty' => Github::SearchPretty.new,
|
11
12
|
'table' => Github::SearchTable.new
|
12
13
|
}
|
13
14
|
|
15
|
+
# TODO: add missing tests + API call test
|
14
16
|
def self.search(api_key, search_term, options)
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
qparams = {params: params}
|
22
|
-
|
23
|
-
github_api.resource["/search"].get(qparams) do |response, request, result|
|
24
|
-
results = API::JSONResponse.new(request, result, response)
|
25
|
-
end
|
26
|
-
|
27
|
-
catch_request_error(results, "No match")
|
28
|
-
show_results(@@output_formats, results.data, options, results.data['paging'])
|
29
|
-
results
|
17
|
+
results = Veye::API::Github.search(
|
18
|
+
api_key, search_term, options[:lang], options[:user], options[:page]
|
19
|
+
)
|
20
|
+
catch_request_error(results, 'No match')
|
21
|
+
paging_dt = results.data['paging']
|
22
|
+
show_results(@output_formats, results.data, options, paging_dt)
|
30
23
|
end
|
31
24
|
end
|
32
25
|
end
|
33
26
|
end
|
34
|
-
|
data/lib/veye/github/sync.rb
CHANGED
@@ -2,30 +2,21 @@ require_relative '../base_executor.rb'
|
|
2
2
|
|
3
3
|
module Veye
|
4
4
|
module Github
|
5
|
+
# Sync class is responsible for updating info on VersionEye
|
5
6
|
class Sync < BaseExecutor
|
6
7
|
def self.import_all(api_key, options)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
params[:force] = options[:force] unless options[:force].nil?
|
11
|
-
|
12
|
-
qparams = {params: params}
|
13
|
-
github_api.resource['/sync'].get(qparams) do |response, request, result|
|
14
|
-
response_data = API::JSONResponse.new(request, result, response)
|
15
|
-
end
|
16
|
-
|
17
|
-
catch_request_error(response_data, "Can not import repositories from Github")
|
18
|
-
show_result(response_data)
|
19
|
-
return response_data
|
8
|
+
response = Veye::API::Github.import_all(api_key, options[:force])
|
9
|
+
catch_request_error(response, 'Can not import repositories from Github')
|
10
|
+
show_result(response)
|
20
11
|
end
|
21
12
|
|
22
13
|
def self.show_result(response)
|
23
|
-
|
24
|
-
printf("%s - %s\n",
|
25
|
-
"No changes.".color(:red),
|
26
|
-
"Use `force` flag if you want to reload everything.")
|
27
|
-
else
|
14
|
+
if response.data['changed']
|
28
15
|
printf "Imported. #{response.data['msg']}\n".color(:green)
|
16
|
+
else
|
17
|
+
printf("%s - %s\n",
|
18
|
+
'No changes.'.color(:red),
|
19
|
+
'Use `force` flag if you want to reload everything.')
|
29
20
|
end
|
30
21
|
end
|
31
22
|
end
|
data/lib/veye/github.rb
CHANGED
@@ -1,16 +1,26 @@
|
|
1
1
|
require 'rainbow/ext/string'
|
2
2
|
|
3
|
+
# FormatHelpers module includes common helper functions
|
4
|
+
# for output rendering.
|
3
5
|
module FormatHelpers
|
4
6
|
def supported_format?(output_formats, format)
|
7
|
+
formats_attached?(output_formats) && format_exists?(output_formats, format)
|
8
|
+
end
|
9
|
+
|
10
|
+
def formats_attached?(output_formats)
|
5
11
|
if output_formats.nil?
|
6
|
-
|
12
|
+
p 'Executor doesnt have any formattor defined.'.color(:red)
|
7
13
|
end
|
8
|
-
|
9
|
-
|
14
|
+
!output_formats.nil?
|
15
|
+
end
|
16
|
+
|
17
|
+
def format_exists?(output_formats, format)
|
18
|
+
unless output_formats.key?(format)
|
19
|
+
msg = "Unsupported output format: `#{format}`\n".color(:red)
|
10
20
|
msg += "Supported formats: #{output_formats.keys.join(', ')}\n"
|
11
|
-
|
21
|
+
p msg
|
22
|
+
return false
|
12
23
|
end
|
13
24
|
true
|
14
25
|
end
|
15
|
-
|
16
26
|
end
|
data/lib/veye/package/follow.rb
CHANGED
@@ -2,63 +2,40 @@ require_relative '../base_executor.rb'
|
|
2
2
|
|
3
3
|
module Veye
|
4
4
|
module Package
|
5
|
+
# Manage a following status of the software library
|
5
6
|
class Follow < BaseExecutor
|
6
|
-
def self.
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
def self.show_result(response)
|
8
|
+
result = response.data
|
9
|
+
return if result.nil?
|
10
|
+
printf(
|
11
|
+
"Following `%s`: %s\n",
|
12
|
+
result['prod_key'],
|
13
|
+
result['follows'].to_s.color(:green)
|
14
|
+
)
|
11
15
|
end
|
12
16
|
|
13
|
-
def self.get_follow_status(
|
14
|
-
|
15
|
-
results =
|
16
|
-
|
17
|
-
|
18
|
-
product_api.resource[
|
19
|
-
"#{lang}/#{safe_prod_key}/follow.json"].get(qparams) do |response, request, result|
|
20
|
-
|
21
|
-
results = API::JSONResponse.new(request, result, response)
|
17
|
+
def self.get_follow_status(package_key, api_key)
|
18
|
+
prod_key, lang = Package.parse_key(package_key)
|
19
|
+
results = Veye::API::Package.get_follow_status(api_key, prod_key, lang)
|
20
|
+
if valid_response?(results, 'Didnt get any response.')
|
21
|
+
show_result(results)
|
22
22
|
end
|
23
|
-
|
24
|
-
catch_request_error(results, "Didnt get any response.")
|
25
|
-
show_result(results)
|
26
|
-
results
|
27
23
|
end
|
28
24
|
|
29
|
-
def self.follow(
|
30
|
-
|
31
|
-
results =
|
32
|
-
|
33
|
-
|
34
|
-
product_api.resource[
|
35
|
-
"/#{lang}/#{safe_prod_key}/follow.json"].post(qparams) do |response, request, result|
|
36
|
-
results = API::JSONResponse.new(request, result, response)
|
25
|
+
def self.follow(package_key, api_key)
|
26
|
+
prod_key, lang = Package.parse_key(package_key)
|
27
|
+
results = Veye::API::Package.follow(api_key, prod_key, lang)
|
28
|
+
if valid_response?(results, 'Cant follow.')
|
29
|
+
show_result(results)
|
37
30
|
end
|
38
|
-
catch_request_error(results, "Cant follow.")
|
39
|
-
show_result(results)
|
40
|
-
results
|
41
31
|
end
|
42
32
|
|
43
|
-
def self.unfollow(
|
44
|
-
|
45
|
-
results =
|
46
|
-
|
47
|
-
|
48
|
-
product_api.resource[
|
49
|
-
"/#{lang}/#{safe_prod_key}/follow.json"].delete(qparams) do |response, request, result|
|
50
|
-
results = API::JSONResponse.new(request, result, response)
|
33
|
+
def self.unfollow(package_key, api_key)
|
34
|
+
prod_key, lang = Package.parse_key(package_key)
|
35
|
+
results = Veye::API::Package.unfollow(api_key, prod_key, lang)
|
36
|
+
if valid_response?(results, 'Cant unfollow.')
|
37
|
+
show_result(results)
|
51
38
|
end
|
52
|
-
|
53
|
-
catch_request_error(results, "Cant unfollow.")
|
54
|
-
show_result(results)
|
55
|
-
results
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.show_result(response)
|
59
|
-
result = response.data
|
60
|
-
return if result.nil?
|
61
|
-
printf "Following `#{result['prod_key']}`: #{result['follows']}\n".color(:green)
|
62
39
|
end
|
63
40
|
end
|
64
41
|
end
|
data/lib/veye/package/info.rb
CHANGED
@@ -3,8 +3,9 @@ require_relative '../base_executor.rb'
|
|
3
3
|
|
4
4
|
module Veye
|
5
5
|
module Package
|
6
|
+
# View an detailed information of the package.
|
6
7
|
class Info < BaseExecutor
|
7
|
-
|
8
|
+
@output_formats = {
|
8
9
|
'csv' => Package::InfoCSV.new,
|
9
10
|
'json' => Package::InfoJSON.new,
|
10
11
|
'pretty' => Package::InfoPretty.new,
|
@@ -12,32 +13,14 @@ module Veye
|
|
12
13
|
}
|
13
14
|
|
14
15
|
def self.get_package(package_key, options = {})
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
if lang.nil? or safe_prod_key.nil?
|
22
|
-
msg = %Q[
|
23
|
-
You missed language or product key.
|
24
|
-
Example: clojure/ztellman/aleph, which as required structure <prog lang>/<product_code>
|
25
|
-
]
|
26
|
-
error_msg = sprintf("%s. \n%s",
|
27
|
-
"Error: Malformed key.".color(:red),
|
28
|
-
msg)
|
29
|
-
exit_now!(error_msg)
|
30
|
-
end
|
31
|
-
|
32
|
-
product_api.resource["/#{lang}/#{safe_prod_key}"].get do |response, request, result, &block|
|
33
|
-
results = API::JSONResponse.new(request, result, response)
|
16
|
+
prod_key, lang = Package.parse_key(package_key)
|
17
|
+
results = Veye::API::Package.get_package(prod_key, lang)
|
18
|
+
err_msg = "Didnt find any package with product_key: `#{package_key}`"
|
19
|
+
if valid_response?(results, err_msg)
|
20
|
+
paging = results.data['paging']
|
21
|
+
show_results(@output_formats, results.data, options, paging)
|
34
22
|
end
|
35
|
-
|
36
|
-
catch_request_error(results, "Didnt find any package with product_key: `#{package_key}`")
|
37
|
-
show_results(@@output_formats, results.data, options, results.data['paging'])
|
38
|
-
return results
|
39
23
|
end
|
40
24
|
end
|
41
|
-
|
42
25
|
end
|
43
26
|
end
|
@@ -3,52 +3,25 @@ require_relative '../base_executor.rb'
|
|
3
3
|
|
4
4
|
module Veye
|
5
5
|
module Package
|
6
|
+
# Commands to view package references
|
6
7
|
class References < BaseExecutor
|
7
|
-
|
8
|
+
@output_formats = {
|
8
9
|
'csv' => Package::ReferencesCSV.new,
|
9
10
|
'json' => Package::ReferencesJSON.new,
|
10
11
|
'pretty' => Package::ReferencesPretty.new,
|
11
12
|
'table' => Package::ReferencesTable.new
|
12
13
|
}
|
13
14
|
|
14
|
-
def self.validate_input!(lang, safe_prod_key)
|
15
|
-
if lang.nil? or safe_prod_key.nil?
|
16
|
-
msg = %Q[
|
17
|
-
You missed language or product key.
|
18
|
-
Example: clojure/ztellman/aleph, which as required structure
|
19
|
-
<prog lang>/<product_code>
|
20
|
-
]
|
21
|
-
error_msg = sprintf("%s. \n%s",
|
22
|
-
"Error: Malformed key.".color(:red),
|
23
|
-
msg)
|
24
|
-
exit_now!(error_msg)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
15
|
def self.get_references(package_key, options = {})
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
api_path = "/#{lang}/#{safe_prod_key}/references"
|
38
|
-
page_nr = options[:page] || "1"
|
39
|
-
qparams = {params: {page: page_nr}}
|
40
|
-
results = nil
|
41
|
-
|
42
|
-
product_api.resource[api_path].get(qparams) do |response, request, result, &block|
|
43
|
-
results = API::JSONResponse.new(request, result, response)
|
16
|
+
prod_key, lang = Package.parse_key(package_key)
|
17
|
+
results = Veye::API::Package.get_references(
|
18
|
+
prod_key, lang, options[:page]
|
19
|
+
)
|
20
|
+
if valid_response?(results, "No references for: `#{package_key}`")
|
21
|
+
paging = results.data['paging']
|
22
|
+
show_results(@output_formats, results.data, options, paging)
|
44
23
|
end
|
45
|
-
|
46
|
-
catch_request_error(results, "No references for: `#{package_key}`")
|
47
|
-
show_results(@@output_formats, results.data, options, results.data['paging'])
|
48
|
-
return results
|
49
|
-
|
50
24
|
end
|
51
25
|
end
|
52
26
|
end
|
53
27
|
end
|
54
|
-
|
data/lib/veye/package/search.rb
CHANGED
@@ -3,36 +3,26 @@ require_relative '../base_executor.rb'
|
|
3
3
|
|
4
4
|
module Veye
|
5
5
|
module Package
|
6
|
+
# This class includes commands for Package search and
|
7
|
+
# presentation renderers.
|
6
8
|
class Search < BaseExecutor
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
@output_formats = {
|
10
|
+
'csv' => Package::SearchCSV.new,
|
11
|
+
'json' => Package::SearchJSON.new,
|
12
|
+
'pretty' => Package::SearchPretty.new,
|
13
|
+
'table' => Package::SearchTable.new
|
12
14
|
}
|
13
15
|
|
14
16
|
def self.search(search_term, options)
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
search_params[:lang] = Package.encode_language(language) unless language.nil?
|
23
|
-
search_params[:g] = group_id unless group_id.nil?
|
24
|
-
search_params[:page] = page unless page.nil?
|
25
|
-
|
26
|
-
request_params = {:params => search_params}
|
27
|
-
search_api.resource["/#{search_term}"].get(request_params) do |response, request, result, &block|
|
28
|
-
results = API::JSONResponse.new(request, result, response)
|
17
|
+
results = Veye::API::Package.search(
|
18
|
+
search_term, options[:language], options['group-id'], options[:page]
|
19
|
+
)
|
20
|
+
if valid_response?(results, "No results for `#{search_term}`")
|
21
|
+
show_results(@output_formats,
|
22
|
+
results.data, options,
|
23
|
+
results.data['paging'])
|
29
24
|
end
|
30
|
-
|
31
|
-
catch_request_error(results, "No results for `${search_term}`")
|
32
|
-
show_results(@@output_formats, results.data, options, results.data['paging'])
|
33
|
-
return results
|
34
25
|
end
|
35
26
|
end
|
36
|
-
|
37
27
|
end
|
38
28
|
end
|
data/lib/veye/package.rb
CHANGED
@@ -12,13 +12,21 @@ module Veye
|
|
12
12
|
Set.new ["Clojure", "Java", "Javascript", "Node.JS", "PHP", "Python", "Ruby", "R"]
|
13
13
|
end
|
14
14
|
|
15
|
-
def self.
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
def self.parse_key(package_key)
|
16
|
+
tokens = package_key.to_s.split('/')
|
17
|
+
lang = tokens.first
|
18
|
+
prod_key = tokens.drop(1).join("/")
|
19
|
+
|
20
|
+
if lang.nil? or prod_key.nil?
|
21
|
+
msg = %Q[
|
22
|
+
You missed language or product key.
|
23
|
+
Example: clojure/ztellman/aleph, as structured <prog lang>/<product_code>
|
24
|
+
]
|
25
|
+
printf("%s. \n%s", "Error: Malformed key.".color(:red), msg)
|
26
|
+
exit
|
27
|
+
end
|
19
28
|
|
20
|
-
|
21
|
-
lang.gsub(/\./, "").downcase
|
29
|
+
[prod_key, lang]
|
22
30
|
end
|
23
31
|
end
|
24
32
|
end
|
data/lib/veye/pagination.rb
CHANGED
data/lib/veye/project/check.rb
CHANGED
@@ -3,146 +3,69 @@ require_relative '../base_executor.rb'
|
|
3
3
|
|
4
4
|
module Veye
|
5
5
|
module Project
|
6
|
+
# Check class includes methods to check and upload project files
|
6
7
|
class Check < BaseExecutor
|
7
8
|
extend FormatHelpers
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
@output_formats = {
|
11
|
+
'csv' => Project::InfoCSV.new,
|
12
|
+
'json' => Project::InfoJSON.new,
|
13
|
+
'pretty' => Project::InfoPretty.new,
|
14
|
+
'table' => Project::InfoTable.new,
|
15
|
+
'md' => Project::InfoMarkdown.new
|
15
16
|
}
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
@dependency_output_formats = {
|
19
|
+
'csv' => Project::DependencyCSV.new,
|
20
|
+
'json' => Project::DependencyJSON.new,
|
21
|
+
'pretty' => Project::DependencyPretty.new,
|
22
|
+
'table' => Project::DependencyTable.new,
|
23
|
+
'md' => Project::DependencyMarkdown.new
|
23
24
|
}
|
24
25
|
|
25
26
|
def self.get_list(api_key, options)
|
26
|
-
|
27
|
-
|
28
|
-
results
|
29
|
-
project_api.resource.get(qparams) do |response, request, result|
|
30
|
-
results = API::JSONResponse.new(request, result, response)
|
31
|
-
end
|
32
|
-
|
33
|
-
catch_request_error(results, "Can not read list of projects.")
|
34
|
-
show_results(@@output_formats, results.data, options)
|
35
|
-
results
|
27
|
+
results = Veye::API::Project.get_list(api_key)
|
28
|
+
catch_request_error(results, 'Can not read list of projects.')
|
29
|
+
show_results(@output_formats, results.data, options)
|
36
30
|
end
|
37
31
|
|
38
32
|
def self.upload(filename, api_key, options)
|
39
|
-
results =
|
40
|
-
|
41
|
-
|
42
|
-
unless File.exists?(file_path)
|
43
|
-
error_msg = sprintf("%s: Cant read file `%s`",
|
44
|
-
"Error".color(:red),
|
45
|
-
"#{filename}".color(:yellow))
|
46
|
-
exit_now!(error_msg)
|
47
|
-
end
|
48
|
-
|
49
|
-
file_size = File.size(file_path)
|
50
|
-
unless file_size != 0 and file_size < MAX_FILE_SIZE
|
51
|
-
exit_now!("Size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb")
|
52
|
-
end
|
53
|
-
|
54
|
-
project_api = API::Resource.new(RESOURCE_PATH)
|
55
|
-
puts "built new project_api successfully"
|
56
|
-
|
57
|
-
file_obj = File.open(file_path, 'rb')
|
58
|
-
|
59
|
-
upload_data = {
|
60
|
-
:upload => file_obj,
|
61
|
-
:api_key => api_key
|
62
|
-
}
|
63
|
-
project_api.resource.post(upload_data) do |response, request, result, &block|
|
64
|
-
results = API::JSONResponse.new(request, result, response)
|
65
|
-
end
|
66
|
-
|
67
|
-
catch_request_error(results, "Upload failed.")
|
68
|
-
show_results(@@output_formats, results.data, options)
|
33
|
+
results = Veye::API::Project.upload(api_key, filename)
|
34
|
+
catch_request_error(results, 'Upload failed.')
|
35
|
+
show_results(@output_formats, results.data, options)
|
69
36
|
show_dependencies(results.data, options)
|
70
|
-
results
|
71
37
|
end
|
72
38
|
|
73
39
|
def self.update(project_key, filename, api_key, options)
|
74
|
-
results =
|
75
|
-
|
76
|
-
|
77
|
-
unless File.exists?(file_path)
|
78
|
-
error_msg = sprintf("%s: Cant read file `%s`",
|
79
|
-
"Error".color(:red),
|
80
|
-
"#{filename}".color(:yellow)
|
81
|
-
)
|
82
|
-
exit_now!(error_msg)
|
83
|
-
end
|
84
|
-
|
85
|
-
file_size = File.size(file_path)
|
86
|
-
unless file_size != 0 and file_size < MAX_FILE_SIZE
|
87
|
-
exit_now!(" The size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb")
|
88
|
-
end
|
89
|
-
|
90
|
-
project_api = API::Resource.new("#{RESOURCE_PATH}/#{project_key}")
|
91
|
-
file_obj = File.open(file_path, 'rb')
|
92
|
-
upload_data = {
|
93
|
-
:project_file => file_obj,
|
94
|
-
:api_key => api_key
|
95
|
-
}
|
96
|
-
project_api.resource.post(upload_data) do |response, request, result, &block|
|
97
|
-
results = API::JSONResponse.new(request, result, response)
|
98
|
-
end
|
99
|
-
catch_request_error(results, "Re-upload failed.")
|
100
|
-
show_results(@@output_formats, results.data, options)
|
40
|
+
results = Veye::API::Project.update(api_key, project_key, filename)
|
41
|
+
catch_request_error(results, 'Re-upload failed.')
|
42
|
+
show_results(@output_formats, results.data, options)
|
101
43
|
show_dependencies(results.data, options)
|
102
|
-
results
|
103
44
|
end
|
104
|
-
def self.get_project(project_key, api_key, options)
|
105
|
-
results = nil
|
106
|
-
project_api = API::Resource.new(RESOURCE_PATH)
|
107
|
-
|
108
|
-
if project_key.nil? or project_key.empty?
|
109
|
-
error_msg = sprintf("%s: %s",
|
110
|
-
"Error".color(:red),
|
111
|
-
"Not valid project_key: `#{project_key}`")
|
112
|
-
exit_now! error_msg
|
113
|
-
end
|
114
|
-
|
115
|
-
project_url = "/#{project_key}"
|
116
|
-
qparams = {:params => {:api_key => api_key}}
|
117
|
-
project_api.resource[project_url].get(qparams) do |response, request, result|
|
118
|
-
results = API::JSONResponse.new(request, result, response)
|
119
|
-
end
|
120
45
|
|
121
|
-
|
122
|
-
|
46
|
+
def self.get_project(project_key, api_key, options)
|
47
|
+
results = Veye::API::Project.get_project(api_key, project_key)
|
48
|
+
err_msg = "No data for the project: `#{project_key}`"
|
49
|
+
catch_request_error(results, err_msg)
|
50
|
+
show_results(@output_formats, results.data, options)
|
123
51
|
show_dependencies(results.data, options)
|
124
|
-
results
|
125
52
|
end
|
126
53
|
|
127
54
|
def self.delete_project(project_key, api_key)
|
128
|
-
|
129
|
-
|
130
|
-
results
|
131
|
-
|
132
|
-
project_api.resource["/#{project_key}"].delete(qparams) do |response, request, result|
|
133
|
-
results = API::JSONResponse.new(request, result, response)
|
134
|
-
end
|
135
|
-
catch_request_error(results, "Cant delete project: `#{project_key}`")
|
136
|
-
show_message(results, "Deleted", "Cant delete.")
|
137
|
-
results
|
55
|
+
results = Veye::API::Project.delete_project(api_key, project_key)
|
56
|
+
err_msg = "Failed to delete project: `#{project_key}`"
|
57
|
+
catch_request_error(results, err_msg)
|
58
|
+
show_message(results, 'Deleted', 'Cant delete.')
|
138
59
|
end
|
139
60
|
|
61
|
+
#-- layout helpers
|
140
62
|
def self.show_dependencies(results, options)
|
141
63
|
format = options[:format]
|
64
|
+
format ||= 'pretty'
|
142
65
|
return if format == 'json'
|
143
|
-
self.supported_format?(
|
66
|
+
self.supported_format?(@dependency_output_formats, format)
|
144
67
|
|
145
|
-
formatter =
|
68
|
+
formatter = @dependency_output_formats[format]
|
146
69
|
|
147
70
|
formatter.before
|
148
71
|
formatter.format results['dependencies']
|
@@ -150,15 +73,14 @@ module Veye
|
|
150
73
|
end
|
151
74
|
|
152
75
|
def self.show_message(results, success_msg, fail_msg)
|
153
|
-
|
76
|
+
if results.success
|
77
|
+
printf "#{success_msg}\n".color(:green)
|
78
|
+
else
|
154
79
|
printf("Error: %s\n%s\n",
|
155
|
-
|
80
|
+
fail_msg.color(:red),
|
156
81
|
response.data['error'])
|
157
|
-
else
|
158
|
-
printf "#{success_msg}\n".color(:green)
|
159
82
|
end
|
160
83
|
end
|
161
84
|
end
|
162
85
|
end
|
163
86
|
end
|
164
|
-
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative '../views/project.rb'
|
2
|
+
require_relative '../base_executor.rb'
|
3
|
+
|
4
|
+
module Veye
|
5
|
+
module Project
|
6
|
+
# Licence class holds commands for checking licenses in the project.
|
7
|
+
class License < BaseExecutor
|
8
|
+
@output_formats = {
|
9
|
+
'csv' => Project::LicenceCSV.new,
|
10
|
+
'json' => Project::LicenceJSON.new,
|
11
|
+
'pretty' => Project::LicencePretty.new,
|
12
|
+
'table' => Project::LicenceTable.new
|
13
|
+
}
|
14
|
+
|
15
|
+
def self.get_licenses(project_key, api_key, options)
|
16
|
+
results = Veye::API::Project.get_licenses(api_key, project_key)
|
17
|
+
err_msg = "Cant access a information for project `#{project_key}`."
|
18
|
+
catch_request_error(results, err_msg)
|
19
|
+
show_results(@output_formats, results.data, options)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/veye/project.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require_relative 'project/check.rb'
|
2
|
-
require_relative 'project/
|
2
|
+
require_relative 'project/license.rb'
|
3
3
|
|
4
4
|
module Veye
|
5
|
+
# Project module includes commands for managing
|
6
|
+
# projects on VersionEye and presenting results
|
7
|
+
# on command line.
|
5
8
|
module Project
|
6
|
-
RESOURCE_PATH = "/projects"
|
7
|
-
MAX_FILE_SIZE = 500000 # ~ 500kB
|
8
9
|
end
|
9
10
|
end
|