veye 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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