veye 0.0.6 → 0.0.7

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 (94) hide show
  1. data/Gemfile.lock +16 -16
  2. data/README.md +66 -0
  3. data/bin/veye +140 -186
  4. data/lib/veye/base_executor.rb +24 -0
  5. data/lib/veye/github/delete.rb +35 -0
  6. data/lib/veye/github/import.rb +32 -0
  7. data/lib/veye/github/info.rb +30 -0
  8. data/lib/veye/github/list.rb +37 -0
  9. data/lib/veye/github/search.rb +34 -0
  10. data/lib/veye/github/sync.rb +33 -0
  11. data/lib/veye/github.rb +14 -0
  12. data/lib/veye/helpers/format_helpers.rb +4 -1
  13. data/lib/veye/helpers/repo_helpers.rb +5 -0
  14. data/lib/veye/package/follow.rb +37 -22
  15. data/lib/veye/package/info.rb +17 -27
  16. data/lib/veye/package/search.rb +29 -40
  17. data/lib/veye/project/check.rb +80 -74
  18. data/lib/veye/project/licence.rb +17 -31
  19. data/lib/veye/service.rb +16 -4
  20. data/lib/veye/user/me.rb +25 -45
  21. data/lib/veye/version.rb +1 -1
  22. data/lib/veye/views/base_csv.rb +26 -0
  23. data/lib/veye/views/base_json.rb +20 -0
  24. data/lib/veye/views/base_markdown.rb +17 -0
  25. data/lib/veye/views/base_pretty.rb +17 -0
  26. data/lib/veye/views/base_table.rb +34 -0
  27. data/lib/veye/views/github/info_csv.rb +30 -0
  28. data/lib/veye/views/github/info_json.rb +11 -0
  29. data/lib/veye/views/github/info_pretty.rb +35 -0
  30. data/lib/veye/views/github/info_table.rb +36 -0
  31. data/lib/veye/views/github/list_csv.rb +28 -0
  32. data/lib/veye/views/github/list_json.rb +16 -0
  33. data/lib/veye/views/github/list_pretty.rb +27 -0
  34. data/lib/veye/views/github/list_table.rb +28 -0
  35. data/lib/veye/views/github/search_csv.rb +36 -0
  36. data/lib/veye/views/github/search_json.rb +12 -0
  37. data/lib/veye/views/github/search_pretty.rb +31 -0
  38. data/lib/veye/views/github/search_table.rb +34 -0
  39. data/lib/veye/views/github.rb +19 -0
  40. data/lib/veye/{package → views/package}/info_csv.rb +7 -6
  41. data/lib/veye/views/package/info_json.rb +12 -0
  42. data/lib/veye/{package → views/package}/info_pretty.rb +8 -10
  43. data/lib/veye/views/package/info_table.rb +25 -0
  44. data/lib/veye/views/package/search_csv.rb +28 -0
  45. data/lib/veye/views/package/search_json.rb +11 -0
  46. data/lib/veye/views/package/search_pretty.rb +26 -0
  47. data/lib/veye/views/package/search_table.rb +25 -0
  48. data/lib/veye/views/package.rb +14 -0
  49. data/lib/veye/views/project/dependency_csv.rb +30 -0
  50. data/lib/veye/views/project/dependency_json.rb +11 -0
  51. data/lib/veye/views/project/dependency_markdown.rb +31 -0
  52. data/lib/veye/{project/project_dependency_pretty.rb → views/project/dependency_pretty.rb} +5 -7
  53. data/lib/veye/{project/project_dependency_table.rb → views/project/dependency_table.rb} +6 -15
  54. data/lib/veye/{project/project_csv.rb → views/project/info_csv.rb} +7 -7
  55. data/lib/veye/views/project/info_json.rb +12 -0
  56. data/lib/veye/{project/project_markdown.rb → views/project/info_markdown.rb} +8 -14
  57. data/lib/veye/{project/project_pretty.rb → views/project/info_pretty.rb} +3 -4
  58. data/lib/veye/views/project/info_table.rb +24 -0
  59. data/lib/veye/{project/project_licence_csv.rb → views/project/licence_csv.rb} +7 -5
  60. data/lib/veye/views/project/licence_json.rb +11 -0
  61. data/lib/veye/{project/project_licence_pretty.rb → views/project/licence_pretty.rb} +4 -6
  62. data/lib/veye/views/project/licence_table.rb +24 -0
  63. data/lib/veye/views/project.rb +22 -0
  64. data/lib/veye/views/user/favorite_csv.rb +32 -0
  65. data/lib/veye/views/user/favorite_json.rb +13 -0
  66. data/lib/veye/views/user/favorite_pretty.rb +23 -0
  67. data/lib/veye/views/user/favorite_table.rb +24 -0
  68. data/lib/veye/views/user/profile_csv.rb +23 -0
  69. data/lib/veye/views/user/profile_json.rb +12 -0
  70. data/lib/veye/{user → views/user}/profile_pretty.rb +6 -10
  71. data/lib/veye/views/user/profile_table.rb +30 -0
  72. data/lib/veye/views/user.rb +14 -0
  73. data/lib/veye.rb +3 -1
  74. metadata +90 -60
  75. data/lib/veye/package/info_json.rb +0 -14
  76. data/lib/veye/package/info_table.rb +0 -29
  77. data/lib/veye/package/search_csv.rb +0 -33
  78. data/lib/veye/package/search_json.rb +0 -19
  79. data/lib/veye/package/search_pretty.rb +0 -35
  80. data/lib/veye/package/search_table.rb +0 -40
  81. data/lib/veye/project/project_dependency_csv.rb +0 -30
  82. data/lib/veye/project/project_dependency_json.rb +0 -12
  83. data/lib/veye/project/project_dependency_markdown.rb +0 -47
  84. data/lib/veye/project/project_json.rb +0 -11
  85. data/lib/veye/project/project_licence_json.rb +0 -12
  86. data/lib/veye/project/project_licence_table.rb +0 -29
  87. data/lib/veye/project/project_table.rb +0 -30
  88. data/lib/veye/user/favorite_csv.rb +0 -28
  89. data/lib/veye/user/favorite_json.rb +0 -14
  90. data/lib/veye/user/favorite_pretty.rb +0 -25
  91. data/lib/veye/user/favorite_table.rb +0 -28
  92. data/lib/veye/user/profile_csv.rb +0 -21
  93. data/lib/veye/user/profile_json.rb +0 -14
  94. data/lib/veye/user/profile_table.rb +0 -34
@@ -0,0 +1,30 @@
1
+ require_relative '../views/github.rb'
2
+ require_relative '../base_executor.rb'
3
+
4
+ module Veye
5
+ module Github
6
+ class Info < BaseExecutor
7
+ @@output_formats = {
8
+ 'csv' => Github::InfoCSV.new,
9
+ 'json' => Github::InfoJSON.new,
10
+ 'pretty' => Github::InfoPretty.new,
11
+ 'table' => Github::InfoTable.new
12
+ }
13
+
14
+ def self.get_repo(api_key, repo_name, options)
15
+ github_api = API::Resource.new(RESOURCE_PATH)
16
+ results = nil
17
+ qparams = {params: {api_key: api_key}}
18
+ safe_repo_name = self.encode_repo_key(repo_name)
19
+
20
+ github_api.resource["/#{safe_repo_name}"].get(qparams) do |response, request, result|
21
+ results = API::JSONResponse.new(request, result, response)
22
+ end
23
+ catch_request_error(results, "Can not find repository `#{repo_name}`")
24
+ show_results @@output_formats, results.data, options
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,37 @@
1
+ require_relative '../views/github.rb'
2
+ require_relative '../base_executor.rb'
3
+
4
+ module Veye
5
+ module Github
6
+ class List < BaseExecutor
7
+
8
+ @@output_formats = {
9
+ 'csv' => Github::ListCSV.new,
10
+ 'json' => Github::ListJSON.new,
11
+ 'pretty' => Github::ListPretty.new,
12
+ 'table' => Github::ListTable.new
13
+ }
14
+
15
+ def self.get_list(api_key, options)
16
+ github_api = API::Resource.new(RESOURCE_PATH)
17
+ results = nil
18
+ params = {api_key: api_key}
19
+ params[:page] = options[:page] || 1
20
+ params[:lang] = options[:lang].to_s.downcase if options[:lang]
21
+ unless options[:private].nil?
22
+ params[:private] = (options[:private] == 'true') || (options[:private] == 't')
23
+ end
24
+ params[:org_name] = options[:org] if options[:org]
25
+ params[:org_type] = options['org-type'] if options['org-type']
26
+
27
+ qparams = { :params => params }
28
+ github_api.resource.get(qparams) do |response, request, result|
29
+ results = API::JSONResponse.new(request, result, response)
30
+ end
31
+ catch_request_error(results, "No repositories.")
32
+ show_results @@output_formats, results.data, options, results.data['paging']
33
+ end
34
+ end
35
+ end
36
+ end
37
+
@@ -0,0 +1,34 @@
1
+ require_relative '../views/github.rb'
2
+ require_relative '../base_executor.rb'
3
+
4
+ module Veye
5
+ module Github
6
+ class Search < BaseExecutor
7
+ @@output_formats = {
8
+ 'csv' => Github::SearchCSV.new,
9
+ 'json' => Github::SearchJSON.new,
10
+ 'pretty' => Github::SearchPretty.new,
11
+ 'table' => Github::SearchTable.new
12
+ }
13
+
14
+ 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
30
+ end
31
+ end
32
+ end
33
+ end
34
+
@@ -0,0 +1,33 @@
1
+ require_relative '../base_executor.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class Sync < BaseExecutor
6
+ 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
20
+ end
21
+
22
+ def self.show_result(response)
23
+ unless response.data["changed"]
24
+ printf("%s - %s\n",
25
+ "No changes.".foreground(:red),
26
+ "Use `force` flag if you want to reload everything.")
27
+ else
28
+ printf "Imported. #{response.data['msg']}\n".foreground(:green)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'github/list.rb'
2
+ require_relative 'github/sync.rb'
3
+ require_relative 'github/search.rb'
4
+ require_relative 'github/info.rb'
5
+ require_relative 'github/import.rb'
6
+ require_relative 'github/delete.rb'
7
+
8
+ require_relative 'views/github.rb'
9
+
10
+ module Veye
11
+ module Github
12
+ RESOURCE_PATH = "/github"
13
+ end
14
+ end
@@ -1,9 +1,12 @@
1
1
  module FormatHelpers
2
2
  def supported_format?(output_formats, format)
3
+ if output_formats.nil?
4
+ exit_now! "Executor doesnt have any formattor defined."
5
+ end
3
6
  unless output_formats.has_key?(format)
4
7
  msg = "This command doesnt support output format: `#{format}`\n".foreground(:red)
5
8
  msg += "Supported formats: #{output_formats.keys.join(', ')}\n"
6
- exit_now! msg
9
+ exit_now! msg
7
10
  end
8
11
  true
9
12
  end
@@ -0,0 +1,5 @@
1
+ module RepoHelpers
2
+ def encode_repo_key(repo_key)
3
+ repo_key.to_s.gsub(/\//, ":").gsub(/\./, "~")
4
+ end
5
+ end
@@ -1,49 +1,64 @@
1
+ require_relative '../base_executor.rb'
2
+
1
3
  module Veye
2
4
  module Package
3
- class Follow
5
+ 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]
11
+ end
4
12
 
5
13
  def self.get_follow_status(prod_key, api_key)
6
14
  product_api = API::Resource.new(RESOURCE_PATH)
7
- response_data = nil
15
+ results = nil
8
16
  qparams = {:params => {:api_key => api_key}}
9
- safe_prod_key = Package.encode_prod_key(prod_key)
17
+ lang, safe_prod_key = parse_prod_key(prod_key)
10
18
  product_api.resource[
11
- "/#{safe_prod_key}/follow.json"].get(qparams) do |response, request, result|
12
-
13
- response_data = API::JSONResponse.new(request, result, response)
19
+ "#{lang}/#{safe_prod_key}/follow.json"].get(qparams) do |response, request, result|
20
+
21
+ results = API::JSONResponse.new(request, result, response)
14
22
  end
15
23
 
16
- return response_data
24
+ catch_request_error(results, "Didnt get any response.")
25
+ show_result(results)
26
+ results
17
27
  end
18
28
 
19
29
  def self.follow(prod_key, api_key)
20
30
  product_api = API::Resource.new(RESOURCE_PATH)
21
- response_data = nil
31
+ results = nil
22
32
  qparams = {:api_key => api_key}
23
- safe_prod_key = Package.encode_prod_key(prod_key)
24
-
33
+ lang, safe_prod_key = parse_prod_key(prod_key)
25
34
  product_api.resource[
26
- "/#{safe_prod_key}/follow.json"].post(qparams) do |response, request, result|
27
-
28
- response_data = API::JSONResponse.new(request, result, response)
35
+ "/#{lang}/#{safe_prod_key}/follow.json"].post(qparams) do |response, request, result|
36
+ results = API::JSONResponse.new(request, result, response)
29
37
  end
30
-
31
- return response_data
38
+ catch_request_error(results, "Cant follow.")
39
+ show_result(results)
40
+ results
32
41
  end
33
42
 
34
43
  def self.unfollow(prod_key, api_key)
35
44
  product_api = API::Resource.new(RESOURCE_PATH)
36
- response_data = nil
45
+ results = nil
37
46
  qparams = {:params => {:api_key => api_key}}
38
- safe_prod_key = Package.encode_prod_key(prod_key)
39
-
47
+ lang, safe_prod_key = parse_prod_key(prod_key)
40
48
  product_api.resource[
41
- "/#{safe_prod_key}/follow.json"].delete(qparams) do |response, request, result|
42
-
43
- response_data = API::JSONResponse.new(request, result, response)
49
+ "/#{lang}/#{safe_prod_key}/follow.json"].delete(qparams) do |response, request, result|
50
+ results = API::JSONResponse.new(request, result, response)
44
51
  end
45
52
 
46
- return response_data
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".foreground(:green)
47
62
  end
48
63
  end
49
64
  end
@@ -1,51 +1,41 @@
1
- require_relative 'info_csv.rb'
2
- require_relative 'info_json.rb'
3
- require_relative 'info_pretty.rb'
4
- require_relative 'info_table.rb'
1
+ require_relative '../views/package.rb'
2
+ require_relative '../base_executor.rb'
5
3
 
6
4
  module Veye
7
- module Package
8
- class Info
9
- extend FormatHelpers
10
-
5
+ module Package
6
+ class Info < BaseExecutor
11
7
  @@output_formats = {
12
- 'csv' => InfoCSV.new,
13
- 'json' => InfoJSON.new,
14
- 'pretty' => InfoPretty.new,
15
- 'table' => InfoTable.new
8
+ 'csv' => Package::InfoCSV.new,
9
+ 'json' => Package::InfoJSON.new,
10
+ 'pretty' => Package::InfoPretty.new,
11
+ 'table' => Package::InfoTable.new
16
12
  }
17
13
 
18
- def self.search(package_key)
14
+ def self.get_package(package_key, options = {})
19
15
  product_api = API::Resource.new(RESOURCE_PATH)
20
16
  tokens = package_key.to_s.split('/')
21
17
  lang = Package.encode_language(tokens.first)
22
18
  safe_prod_key = Package.encode_prod_key(tokens.drop(1).join("/"))
23
-
19
+ results = nil
20
+
24
21
  if lang.nil? or safe_prod_key.nil?
25
22
  msg = %Q[
26
- You missed language or product key.
23
+ You missed language or product key.
27
24
  Example: clojure/ztellman/aleph, which as required structure <prog lang>/<product_code>
28
25
  ]
29
- error_msg = sprrintf("%s. \n%s",
26
+ error_msg = sprrintf("%s. \n%s",
30
27
  "Error: Malformed key.".foreground(:red),
31
28
  msg)
32
29
  exit_now!(error_msg)
33
30
  end
34
31
 
35
- request_response = nil
36
32
  product_api.resource["/#{lang}/#{safe_prod_key}"].get do |response, request, result, &block|
37
- request_response = API::JSONResponse.new(request, result, response)
33
+ results = API::JSONResponse.new(request, result, response)
38
34
  end
39
- return request_response
40
- end
41
-
42
- def self.format(results, format = 'pretty')
43
- self.supported_format?(@@output_formats, format)
44
35
 
45
- formatter = @@output_formats[format]
46
- formatter.before
47
- formatter.format(results)
48
- formatter.after
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
49
39
  end
50
40
  end
51
41
 
@@ -1,48 +1,37 @@
1
- require_relative 'search_csv.rb'
2
- require_relative 'search_json.rb'
3
- require_relative 'search_pretty.rb'
4
- require_relative 'search_table.rb'
1
+ require_relative '../views/package.rb'
2
+ require_relative '../base_executor.rb'
5
3
 
6
4
  module Veye
7
5
  module Package
8
-
9
- class Search
10
- extend FormatHelpers
11
-
12
- @@output_formats = {
13
- 'csv' => SearchCSV.new,
14
- 'json' => SearchJSON.new,
15
- 'pretty' => SearchPretty.new,
16
- 'table' => SearchTable.new
17
- }
18
-
19
- def self.search(search_term, language = nil, group_id = nil, page = nil)
20
- search_api = Veye::API::Resource.new "#{RESOURCE_PATH}/search"
21
-
22
- search_response = nil
23
- search_params = {:q => search_term.to_s}
24
-
25
- search_params[:lang] = Package.encode_language(language) unless language.nil?
26
- search_params[:g] = group_id unless group_id.nil?
27
- search_params[:page] = page unless page.nil?
28
-
29
- request_params = {:params => search_params}
30
- search_api.resource["/#{search_term}"].get(request_params) do |response, request, result, &block|
31
- search_response = API::JSONResponse.new(request, result, response)
32
- end
33
-
34
- return search_response
6
+ 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
12
+ }
13
+
14
+ 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)
35
29
  end
36
30
 
37
- def self.format(search_results, format = 'pretty', paging = nil)
38
- self.supported_format?(@@output_formats, format)
39
-
40
- formatter = @@output_formats[format]
41
- formatter.before
42
- formatter.format(search_results)
43
- formatter.after paging
44
- end
45
-
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
+ end
46
35
  end
47
36
 
48
37
  end
@@ -1,86 +1,80 @@
1
- require 'json'
2
-
3
- require_relative 'project_csv.rb'
4
- require_relative 'project_json.rb'
5
- require_relative 'project_pretty.rb'
6
- require_relative 'project_table.rb'
7
- require_relative 'project_markdown.rb'
8
-
9
- require_relative 'project_dependency_csv.rb'
10
- require_relative 'project_dependency_json.rb'
11
- require_relative 'project_dependency_pretty.rb'
12
- require_relative 'project_dependency_table.rb'
13
- require_relative 'project_dependency_markdown.rb'
1
+ require_relative '../views/project.rb'
2
+ require_relative '../base_executor.rb'
14
3
 
15
4
  module Veye
16
5
  module Project
17
- class Check
6
+ class Check < BaseExecutor
18
7
  extend FormatHelpers
19
8
 
20
9
  @@output_formats = {
21
- "csv" => ProjectCSV.new,
22
- "json" => ProjectJSON.new,
23
- "pretty" => ProjectPretty.new,
24
- "table" => ProjectTable.new,
25
- "md" => ProjectMarkdown.new
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
26
15
  }
27
16
 
28
17
  @@dependency_output_formats = {
29
- "csv" => ProjectDependencyCSV.new,
30
- "json" => ProjectDependencyJSON.new,
31
- "pretty" => ProjectDependencyPretty.new,
32
- "table" => ProjectDependencyTable.new,
33
- "md" => ProjectDependencyMarkdown.new
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
34
23
  }
35
-
36
24
 
37
- def self.get_list(api_key)
25
+ def self.get_list(api_key, options)
38
26
  project_api = API::Resource.new(RESOURCE_PATH)
39
27
  qparams = {:params => {:api_key => api_key}}
40
-
41
-
28
+ results = nil
42
29
  project_api.resource.get(qparams) do |response, request, result|
43
- response_data = API::JSONResponse.new(request, result, response)
30
+ results = API::JSONResponse.new(request, result, response)
44
31
  end
32
+
33
+ catch_request_error(results, "Can not read list of projects.")
34
+ show_results(@@output_formats, results.data, options)
35
+ results
45
36
  end
46
37
 
47
- def self.upload(filename, api_key)
48
- response_data = {:success => false}
38
+ def self.upload(filename, api_key, options)
39
+ results = {:success => false}
49
40
  file_path = File.absolute_path(filename)
50
-
41
+
51
42
  unless File.exists?(file_path)
52
- error_msg = sprintf("%s: Cant read file `%s`",
53
- "Error".foreground(:red),
54
- "#{filename}".foreground(:yellow)
55
- )
56
- exit_now!(error_msg)
43
+ error_msg = sprintf("%s: Cant read file `%s`",
44
+ "Error".foreground(:red),
45
+ "#{filename}".foreground(:yellow)
46
+ )
47
+ exit_now!(error_msg)
57
48
  end
58
49
 
59
50
  file_size = File.size(file_path)
60
51
  unless file_size != 0 and file_size < MAX_FILE_SIZE
61
- exit_now!("Size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb")
52
+ exit_now!("Size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb")
62
53
  end
63
-
54
+
64
55
  project_api = API::Resource.new(RESOURCE_PATH)
65
56
  file_obj = File.open(file_path, 'rb')
66
-
57
+
67
58
  upload_data = {
68
59
  :upload => file_obj,
69
60
  :api_key => api_key
70
61
  }
71
62
  project_api.resource.post(upload_data) do |response, request, result, &block|
72
- response_data = API::JSONResponse.new(request, result, response)
63
+ results = API::JSONResponse.new(request, result, response)
73
64
  end
74
-
75
- return response_data
65
+
66
+ catch_request_error(results, "Upload failed.")
67
+ show_results(@@output_formats, results.data, options)
68
+ show_dependencies(results.data, options)
69
+ results
76
70
  end
77
71
 
78
- def self.update(project_key, filename, api_key)
79
- response_data = {:success => false}
72
+ def self.update(project_key, filename, api_key, options)
73
+ results = {:success => false}
80
74
  file_path = File.absolute_path(filename)
81
-
75
+
82
76
  unless File.exists?(file_path)
83
- error_msg = sprintf("%s: Cant read file `%s`",
77
+ error_msg = sprintf("%s: Cant read file `%s`",
84
78
  "Error".foreground(:red),
85
79
  "#{filename}".foreground(:yellow)
86
80
  )
@@ -91,66 +85,78 @@ module Veye
91
85
  unless file_size != 0 and file_size < MAX_FILE_SIZE
92
86
  exit_now!(" The size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb")
93
87
  end
94
-
88
+
95
89
  project_api = API::Resource.new("#{RESOURCE_PATH}/#{project_key}")
96
- file_obj = File.open(file_path, 'rb')
90
+ file_obj = File.open(file_path, 'rb')
97
91
  upload_data = {
98
92
  :project_file => file_obj,
99
93
  :api_key => api_key
100
94
  }
101
95
  project_api.resource.post(upload_data) do |response, request, result, &block|
102
- response_data = API::JSONResponse.new(request, result, response)
96
+ results = API::JSONResponse.new(request, result, response)
103
97
  end
104
- end
105
- def self.get_project(project_key, api_key)
106
- response_data = nil
98
+ catch_request_error(results, "Re-upload failed.")
99
+ show_results(@@output_formats, results.data, options)
100
+ show_dependencies(results.data, options)
101
+ results
102
+ end
103
+ def self.get_project(project_key, api_key, options)
104
+ results = nil
107
105
  project_api = API::Resource.new(RESOURCE_PATH)
108
-
109
- if project_key.nil? or project_key.empty?
106
+
107
+ if project_key.nil? or project_key.empty?
110
108
  error_msg = sprintf("%s: %s",
111
109
  "Error".foreground(:red),
112
- "Not valid project_key: `#{project_key}`")
110
+ "Not valid project_key: `#{project_key}`")
113
111
  exit_now! error_msg
114
112
  end
115
-
113
+
116
114
  project_url = "/#{project_key}"
117
115
  qparams = {:params => {:api_key => api_key}}
118
116
  project_api.resource[project_url].get(qparams) do |response, request, result|
119
- response_data = API::JSONResponse.new(request, result, response)
117
+ results = API::JSONResponse.new(request, result, response)
120
118
  end
121
119
 
122
- return response_data
120
+ catch_request_error(results, "Cant read information about project: `#{project_key}`")
121
+ show_results(@@output_formats, results.data, options)
122
+ show_dependencies(results.data, options)
123
+ results
123
124
  end
124
125
 
125
126
  def self.delete_project(project_key, api_key)
126
127
  project_api = Veye::API::Resource.new(RESOURCE_PATH)
127
128
  qparams = {:params => {:api_key => api_key}}
128
- response_data = nil
129
+ results = nil
129
130
 
130
131
  project_api.resource["/#{project_key}"].delete(qparams) do |response, request, result|
131
- response_data = API::JSONResponse.new(request, result, response)
132
+ results = API::JSONResponse.new(request, result, response)
132
133
  end
133
-
134
- return response_data
134
+ catch_request_error(results, "Cant delete project: `#{project_key}`")
135
+ show_message(results, "Deleted", "Cant delete.")
136
+ results
135
137
  end
136
138
 
137
- def self.format(results, format = 'pretty')
138
- self.supported_format?(@@output_formats, format)
139
-
140
- formatter = @@output_formats[format]
141
- formatter.before
142
- formatter.format results
143
- formatter.after
144
- end
145
-
146
- def self.format_dependencies(results, format = 'pretty')
139
+ def self.show_dependencies(results, options)
140
+ format = options[:format]
141
+ return if format == 'json'
147
142
  self.supported_format?(@@dependency_output_formats, format)
148
143
 
149
144
  formatter = @@dependency_output_formats[format]
145
+
150
146
  formatter.before
151
- formatter.format results
147
+ formatter.format results['dependencies']
152
148
  formatter.after
153
149
  end
150
+
151
+ def self.show_message(results, success_msg, fail_msg)
152
+ unless results.success
153
+ printf("Error: %s\n%s\n",
154
+ fail_message.foreground(:red),
155
+ response.data['error'])
156
+ else
157
+ printf "#{success_msg}\n".foreground(:green)
158
+ end
159
+ end
154
160
  end
155
161
  end
156
162
  end