veye 0.0.9 → 0.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 +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
|