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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +80 -29
  3. data/Makefile +6 -0
  4. data/README.md +12 -224
  5. data/bin/veye +13 -22
  6. data/changelogs.md +95 -0
  7. data/lib/veye/api/base_resource.rb +8 -9
  8. data/lib/veye/api/github.rb +77 -0
  9. data/lib/veye/api/json_response.rb +21 -25
  10. data/lib/veye/api/package.rb +98 -0
  11. data/lib/veye/api/project.rb +107 -0
  12. data/lib/veye/api/resource.rb +9 -8
  13. data/lib/veye/api/service.rb +15 -0
  14. data/lib/veye/api/user.rb +32 -0
  15. data/lib/veye/api.rb +22 -2
  16. data/lib/veye/base_executor.rb +13 -9
  17. data/lib/veye/github/delete.rb +10 -20
  18. data/lib/veye/github/import.rb +7 -14
  19. data/lib/veye/github/info.rb +6 -12
  20. data/lib/veye/github/list.rb +9 -19
  21. data/lib/veye/github/search.rb +9 -17
  22. data/lib/veye/github/sync.rb +9 -18
  23. data/lib/veye/github.rb +1 -1
  24. data/lib/veye/helpers/format_helpers.rb +15 -5
  25. data/lib/veye/package/follow.rb +24 -47
  26. data/lib/veye/package/info.rb +8 -25
  27. data/lib/veye/package/references.rb +9 -36
  28. data/lib/veye/package/search.rb +14 -24
  29. data/lib/veye/package.rb +14 -6
  30. data/lib/veye/pagination.rb +2 -0
  31. data/lib/veye/project/check.rb +39 -117
  32. data/lib/veye/project/license.rb +23 -0
  33. data/lib/veye/project.rb +4 -3
  34. data/lib/veye/service.rb +13 -17
  35. data/lib/veye/user/me.rb +11 -30
  36. data/lib/veye/user.rb +2 -1
  37. data/lib/veye/version.rb +1 -1
  38. data/lib/veye/views/github/info_csv.rb +3 -3
  39. data/lib/veye/views/github/info_json.rb +4 -0
  40. data/lib/veye/views/github/list_csv.rb +5 -3
  41. data/lib/veye/views/github/list_pretty.rb +2 -2
  42. data/lib/veye/views/github/list_table.rb +3 -2
  43. data/lib/veye/views/package/info_pretty.rb +1 -1
  44. data/lib/veye/views/package/search_csv.rb +2 -3
  45. data/lib/veye/views/package/search_table.rb +1 -3
  46. data/lib/veye/views/package.rb +1 -1
  47. data/lib/veye/views/project/licence_csv.rb +3 -3
  48. data/lib/veye/views/project/licence_json.rb +1 -1
  49. data/lib/veye/views/project/licence_pretty.rb +1 -1
  50. data/lib/veye/views/project/licence_table.rb +3 -3
  51. data/lib/veye/views/user/profile_table.rb +4 -1
  52. data/lib/veye/views/user.rb +3 -1
  53. data/lib/veye.rb +29 -61
  54. data/test/api/github_test.rb +84 -0
  55. data/test/api/package_test.rb +80 -0
  56. data/test/api/project_test.rb +118 -0
  57. data/test/api/service_test.rb +15 -0
  58. data/test/api/user_test.rb +30 -0
  59. data/test/fixtures/vcr_cassettes/github_delete.yml +48 -0
  60. data/test/fixtures/vcr_cassettes/github_import.yml +53 -0
  61. data/test/fixtures/vcr_cassettes/github_info.yml +49 -0
  62. data/test/fixtures/vcr_cassettes/github_list.yml +80 -0
  63. data/test/fixtures/vcr_cassettes/github_sync.yml +48 -0
  64. data/test/fixtures/vcr_cassettes/package_follow.yml +52 -0
  65. data/test/fixtures/vcr_cassettes/package_follow_status.yml +48 -0
  66. data/test/fixtures/vcr_cassettes/package_info.yml +56 -0
  67. data/test/fixtures/vcr_cassettes/package_reference.yml +46 -0
  68. data/test/fixtures/vcr_cassettes/package_search.yml +46 -0
  69. data/test/fixtures/vcr_cassettes/package_unfollow.yml +48 -0
  70. data/test/fixtures/vcr_cassettes/project_delete.yml +48 -0
  71. data/test/fixtures/vcr_cassettes/project_get.yml +49 -0
  72. data/test/fixtures/vcr_cassettes/project_license.yml +49 -0
  73. data/test/fixtures/vcr_cassettes/project_list.yml +48 -0
  74. data/test/fixtures/vcr_cassettes/project_update.yml +105 -0
  75. data/test/fixtures/vcr_cassettes/project_upload.yml +104 -0
  76. data/test/fixtures/vcr_cassettes/services_ping.yml +46 -0
  77. data/test/fixtures/vcr_cassettes/user_get_favorites.yml +48 -0
  78. data/test/fixtures/vcr_cassettes/user_get_profile.yml +48 -0
  79. data/test/github_delete_test.rb +31 -0
  80. data/test/github_import_test.rb +94 -0
  81. data/test/github_info_test.rb +73 -0
  82. data/test/github_list_test.rb +84 -0
  83. data/test/github_sync_test.rb +20 -0
  84. data/test/package_follow_test.rb +38 -0
  85. data/test/package_info_test.rb +73 -0
  86. data/test/package_reference_test.rb +67 -0
  87. data/test/package_search_test.rb +66 -0
  88. data/test/project_check_test.rb +326 -0
  89. data/test/project_license_test.rb +72 -0
  90. data/test/service_test.rb +29 -0
  91. data/test/test_helper.rb +29 -4
  92. data/test/user_me_test.rb +126 -0
  93. data/veye.gemspec +45 -0
  94. metadata +163 -37
  95. data/DEPENDENCIES.md +0 -25
  96. data/lib/veye/helpers/repo_helpers.rb +0 -5
  97. data/lib/veye/project/licence.rb +0 -38
  98. data/test/default_test.rb +0 -14
@@ -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
- @@output_formats = {
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
- github_api = API::Resource.new(RESOURCE_PATH)
16
- results = nil
17
- params = {api_key: api_key, q: search_term}
18
- params[:langs] = options[:lang] unless options[:lang].nil?
19
- params[:users] = options[:user] unless options[:user].nil?
20
- params[:page] = options[:page] || "1"
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
-
@@ -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
- github_api = API::Resource.new(RESOURCE_PATH)
8
- response_data = nil
9
- params = {api_key: api_key}
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
- unless response.data["changed"]
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
@@ -8,7 +8,7 @@ require_relative 'github/delete.rb'
8
8
  require_relative 'views/github.rb'
9
9
 
10
10
  module Veye
11
+ # commands for the Github API on VersionEye
11
12
  module Github
12
- RESOURCE_PATH = "/github"
13
13
  end
14
14
  end
@@ -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
- exit_now! "Executor doesnt have any formattor defined."
12
+ p 'Executor doesnt have any formattor defined.'.color(:red)
7
13
  end
8
- unless output_formats.has_key?(format)
9
- msg = "This command doesnt support output format: `#{format}`\n".color(:red)
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
- exit_now! msg
21
+ p msg
22
+ return false
12
23
  end
13
24
  true
14
25
  end
15
-
16
26
  end
@@ -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.parse_prod_key(prod_key)
7
- tokens = prod_key.to_s.split('/')
8
- lang = Package.encode_language(tokens.first)
9
- safe_prod_key = Package.encode_prod_key(tokens.drop(1).join("/"))
10
- [lang, safe_prod_key]
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(prod_key, api_key)
14
- product_api = API::Resource.new(RESOURCE_PATH)
15
- results = nil
16
- qparams = {:params => {:api_key => api_key}}
17
- lang, safe_prod_key = parse_prod_key(prod_key)
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(prod_key, api_key)
30
- product_api = API::Resource.new(RESOURCE_PATH)
31
- results = nil
32
- qparams = {:api_key => api_key}
33
- lang, safe_prod_key = parse_prod_key(prod_key)
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(prod_key, api_key)
44
- product_api = API::Resource.new(RESOURCE_PATH)
45
- results = nil
46
- qparams = {:params => {:api_key => api_key}}
47
- lang, safe_prod_key = parse_prod_key(prod_key)
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
@@ -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
- @@output_formats = {
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
- product_api = API::Resource.new(RESOURCE_PATH)
16
- tokens = package_key.to_s.split('/')
17
- lang = Package.encode_language(tokens.first)
18
- safe_prod_key = Package.encode_prod_key(tokens.drop(1).join("/"))
19
- results = nil
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
- @@output_formats = {
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
- product_api = API::Resource.new(RESOURCE_PATH)
30
-
31
- tokens = package_key.to_s.split('/')
32
- lang = Package.encode_language(tokens.first).capitalize #endpoint bug
33
-
34
- safe_prod_key = Package.encode_prod_key(tokens.drop(1).join("/"))
35
- validate_input!(lang, safe_prod_key)
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
-
@@ -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
- @@output_formats = {
8
- 'csv' => Package::SearchCSV.new,
9
- 'json' => Package::SearchJSON.new,
10
- 'pretty' => Package::SearchPretty.new,
11
- 'table' => Package::SearchTable.new
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
- search_api = Veye::API::Resource.new "#{RESOURCE_PATH}/search"
16
- language = options[:language]
17
- group_id = options["group-id"]
18
- page = options[:page] || "1"
19
- results = nil
20
- search_params = {:q => search_term.to_s}
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.encode_prod_key(prod_key)
16
- prod_key = prod_key.to_s
17
- prod_key.gsub(/\//, ":").gsub(/\./, "~")
18
- end
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
- def self.encode_language(lang)
21
- lang.gsub(/\./, "").downcase
29
+ [prod_key, lang]
22
30
  end
23
31
  end
24
32
  end
@@ -1,6 +1,8 @@
1
1
  require_relative 'pagination/show.rb'
2
2
 
3
3
  module Veye
4
+ # Pagination module includes rendering methods to render
5
+ # pagination information
4
6
  module Pagination
5
7
  #add module constants here
6
8
  end
@@ -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
- @@output_formats = {
10
- "csv" => Project::InfoCSV.new,
11
- "json" => Project::InfoJSON.new,
12
- "pretty" => Project::InfoPretty.new,
13
- "table" => Project::InfoTable.new,
14
- "md" => Project::InfoMarkdown.new
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
- @@dependency_output_formats = {
18
- "csv" => Project::DependencyCSV.new,
19
- "json" => Project::DependencyJSON.new,
20
- "pretty" => Project::DependencyPretty.new,
21
- "table" => Project::DependencyTable.new,
22
- "md" => Project::DependencyMarkdown.new
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
- project_api = API::Resource.new(RESOURCE_PATH)
27
- qparams = {:params => {:api_key => api_key}}
28
- results = nil
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 = {:success => false}
40
- file_path = File.absolute_path(filename)
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 = {:success => false}
75
- file_path = File.absolute_path(filename)
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
- catch_request_error(results, "Cant read information about project: `#{project_key}`")
122
- show_results(@@output_formats, results.data, options)
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
- project_api = Veye::API::Resource.new(RESOURCE_PATH)
129
- qparams = {:params => {:api_key => api_key}}
130
- results = nil
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?(@@dependency_output_formats, format)
66
+ self.supported_format?(@dependency_output_formats, format)
144
67
 
145
- formatter = @@dependency_output_formats[format]
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
- unless results.success
76
+ if results.success
77
+ printf "#{success_msg}\n".color(:green)
78
+ else
154
79
  printf("Error: %s\n%s\n",
155
- fail_message.color(:red),
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/licence.rb'
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