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
@@ -1,51 +1,37 @@
1
- require 'json'
2
-
3
- require_relative 'project_licence_csv.rb'
4
- require_relative 'project_licence_json.rb'
5
- require_relative 'project_licence_pretty.rb'
6
- require_relative 'project_licence_table.rb'
1
+ require_relative '../views/project.rb'
2
+ require_relative '../base_executor.rb'
7
3
 
8
4
  module Veye
9
5
  module Project
10
- class Licence
11
- extend FormatHelpers
12
-
6
+ class Licence < BaseExecutor
13
7
  @@output_formats = {
14
- "csv" => ProjectLicenceCSV.new,
15
- "json" => ProjectLicenceJSON.new,
16
- "pretty" => ProjectLicencePretty.new,
17
- "table" => ProjectLicenceTable.new
8
+ "csv" => Project::LicenceCSV.new,
9
+ "json" => Project::LicenceJSON.new,
10
+ "pretty" => Project::LicencePretty.new,
11
+ "table" => Project::LicenceTable.new
18
12
  }
19
13
 
20
- def self.get_project(project_key, api_key)
21
- response_data = nil
14
+ def self.get_project(project_key, api_key, options)
15
+ results = nil
22
16
  project_api = API::Resource.new(RESOURCE_PATH)
23
-
24
- if project_key.nil? or project_key.empty?
17
+
18
+ if project_key.nil? or project_key.empty?
25
19
  error_msg = sprintf("%s: %s",
26
20
  "Error".foreground(:red),
27
- "Not valid project_key: `#{project_key}`")
21
+ "Not valid project_key: `#{project_key}`")
28
22
  exit_now! error_msg
29
23
  end
30
-
24
+
31
25
  project_url = "/#{project_key}/licenses"
32
26
  qparams = {:params => {:api_key => api_key}}
33
27
  project_api.resource[project_url].get(qparams) do |response, request, result|
34
- response_data = API::JSONResponse.new(request, result, response)
28
+ results = API::JSONResponse.new(request, result, response)
35
29
  end
36
30
 
37
- return response_data
38
- end
39
-
40
- def self.format(results, format = 'pretty')
41
- self.supported_format?(@@output_formats, format)
42
-
43
- formatter = @@output_formats[format]
44
- formatter.before
45
- formatter.format results
46
- formatter.after
31
+ catch_request_error(results, "Cant access a information for project `#{project_key}.")
32
+ show_results(@@output_formats, results.data, options)
33
+ results
47
34
  end
48
-
49
35
  end
50
36
  end
51
37
  end
data/lib/veye/service.rb CHANGED
@@ -3,12 +3,24 @@ module Veye
3
3
  RESOURCE_PATH = "/services"
4
4
  def self.ping(n = 1)
5
5
  public_api = API::Resource.new RESOURCE_PATH
6
- api_respond = "no idea"
6
+ api_response = "no idea"
7
7
  public_api.resource['/ping'].get do |response, request, result, &block|
8
- api_respond = API::JSONResponse.new(request, result, response)
8
+ api_response = API::JSONResponse.new(request, result, response)
9
9
  end
10
+ show_result(api_response)
11
+ return api_response
12
+ end
10
13
 
11
- return api_respond
14
+ def self.show_result(result)
15
+ if result.success
16
+ puts "#{result.data['message']}".foreground(:green)
17
+ else
18
+ printf(
19
+ "VersionEye didnt recognized secret word.Answered %s, %s\n",
20
+ result.code.to_s.foreground(:red),
21
+ "#{result.message}".foreground(:yellow)
22
+ )
23
+ end
12
24
  end
13
25
  end
14
- end
26
+ end
data/lib/veye/user/me.rb CHANGED
@@ -1,78 +1,58 @@
1
- require_relative 'profile_csv.rb'
2
- require_relative 'profile_json.rb'
3
- require_relative 'profile_pretty.rb'
4
- require_relative 'profile_table.rb'
1
+ require_relative '../views/user.rb'
2
+ require_relative '../base_executor.rb'
5
3
 
6
- require_relative 'favorite_csv.rb'
7
- require_relative 'favorite_json.rb'
8
- require_relative 'favorite_pretty.rb'
9
- require_relative 'favorite_table.rb'
10
4
 
11
5
  module Veye
12
6
  module User
13
- class Me
14
- extend FormatHelpers
7
+ class Me < BaseExecutor
15
8
 
16
9
  @@profile_formats = {
17
- 'csv' => ProfileCSV.new,
18
- 'json' => ProfileJSON.new,
19
- 'pretty' => ProfilePretty.new,
20
- 'table' => ProfileTable.new
10
+ 'csv' => User::ProfileCSV.new,
11
+ 'json' => User::ProfileJSON.new,
12
+ 'pretty' => User::ProfilePretty.new,
13
+ 'table' => User::ProfileTable.new
21
14
  }
22
15
 
23
16
  @@favorite_formats = {
24
- 'csv' => FavoriteCSV.new,
25
- 'json' => FavoriteJSON.new,
26
- 'pretty' => FavoritePretty.new,
27
- 'table' => FavoriteTable.new
17
+ 'csv' => User::FavoriteCSV.new,
18
+ 'json' => User::FavoriteJSON.new,
19
+ 'pretty' => User::FavoritePretty.new,
20
+ 'table' => User::FavoriteTable.new
28
21
  }
29
22
 
30
- def self.get_profile(api_key)
23
+ def self.get_profile(api_key, options)
31
24
  user_api = API::Resource.new(RESOURCE_PATH)
32
- response_data = nil
25
+ results = nil
33
26
  qparams = {:params => {:api_key => api_key}}
34
27
 
35
28
  user_api.resource.get(qparams) do |response, request, result|
36
- response_data = API::JSONResponse.new(request, result, response)
29
+ results = API::JSONResponse.new(request, result, response)
37
30
  end
38
31
 
39
- return response_data
32
+ catch_request_error(results, "Failed to read profile.")
33
+ show_results(@@profile_formats, results.data, options)
34
+ results
40
35
  end
41
36
 
42
- def self.get_favorites(api_key, page = 1)
37
+ def self.get_favorites(api_key, options)
43
38
  user_api = API::Resource.new(RESOURCE_PATH)
44
- response_data = nil
39
+ results = nil
40
+ page = options[:page] || 1
45
41
  qparams = {
46
42
  :params => {
47
43
  :api_key => api_key,
48
- :page => page || 1
44
+ :page => page
49
45
  }
50
46
  }
51
47
 
52
48
  user_api.resource['/favorites'].get(qparams) do |response, request, result|
53
- response_data = API::JSONResponse.new(request, result, response)
49
+ results = API::JSONResponse.new(request, result, response)
54
50
  end
55
51
 
56
- return response_data
52
+ catch_request_error(results, "Failed to read favorites.")
53
+ show_results(@@favorite_formats, results.data, options, results.data['paging'])
54
+ results
57
55
  end
58
-
59
- def self.format_profile(results, format = 'pretty')
60
- self.supported_format?(@@profile_formats, format)
61
- formatter = @@profile_formats[format]
62
- formatter.before
63
- formatter.format(results)
64
- formatter.after
65
- end
66
-
67
- def self.format_favorites(results, format = 'pretty')
68
- self.supported_format?(@@favorite_formats, format)
69
- formatter = @@favorite_formats[format]
70
-
71
- formatter.before
72
- formatter.format results
73
- formatter.after
74
- end
75
-
76
56
  end
77
57
  end
78
58
  end
data/lib/veye/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Veye
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  BIGEYE = %q{
4
4
 
5
5
  _ __ _ ______
@@ -0,0 +1,26 @@
1
+
2
+ class BaseCSV
3
+ def initialize(headers)
4
+ @columns = headers
5
+ end
6
+
7
+ def before
8
+ puts @columns
9
+ end
10
+ def after(paging = nil, allow_pagination = false)
11
+ if allow_pagination && !paging.nil?
12
+ printf("# ------------------------------------------\n")
13
+ printf("current_page,per_page,total_pages,total_entries\n")
14
+ printf("%s,%s,%s,%s\n",
15
+ paging['current_page'],
16
+ paging['per_page'],
17
+ paging['total_pages'],
18
+ paging['total_entries'])
19
+ end
20
+ end
21
+
22
+ def format(results)
23
+ raise NotImplementedError
24
+ end
25
+ end
26
+
@@ -0,0 +1,20 @@
1
+ class BaseJSON
2
+
3
+ def initialize
4
+ @results = {}
5
+ end
6
+
7
+ def before; end
8
+
9
+ def after(paging = nil, allow_pagination = false)
10
+ if allow_pagination && !paging.nil?
11
+ @results[:paging] = paging
12
+ end
13
+
14
+ puts @results.to_json
15
+ end
16
+
17
+ def format(results)
18
+ raise NotImplementedError
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ require 'render-as-markdown'
2
+
3
+ class BaseMarkdown
4
+ def initialize(title, headings)
5
+ @title = title
6
+ @columns = headings
7
+ @markdown = "# #{@title}\n\n"
8
+ @table = RenderAsMarkdown::Table.new @columns
9
+ end
10
+ def before; end
11
+
12
+ def after(paging = nil, allow_pagination = false)
13
+ @markdown << @table.render
14
+ @markdown << "\n\n"
15
+ puts @markdown
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'rainbow'
2
+
3
+ class BasePretty
4
+ def before; end
5
+ def after(paging = nil, allow_pagination = false)
6
+ if allow_pagination and paging
7
+ printf("\n#-- %s\n", "Pagination information".bright)
8
+ printf("\t%-15s: %s\n", "Current page", paging['current_page'])
9
+ printf("\t%-15s: %s\n", "Per page", paging['per_page'])
10
+ printf("\t%-15s: %s\n", "Total pages", paging['total_pages'])
11
+ printf("\t%-15s: %s\n", "Total entries", paging['total_entries'])
12
+ end
13
+ end
14
+ def format(results)
15
+ raise NotImplementedError
16
+ end
17
+ end
@@ -0,0 +1,34 @@
1
+ require 'terminal-table'
2
+
3
+ class BaseTable
4
+ def initialize(title, headings)
5
+ @title = title
6
+ @headings = headings
7
+ end
8
+
9
+ def before
10
+ @table = Terminal::Table.new :title => @title,
11
+ :headings => @headings
12
+
13
+ @table.align_column(0, :right)
14
+ end
15
+
16
+ def after(paging = nil, allow_pagination = false)
17
+ if allow_pagination && !paging.nil?
18
+ paging_header = ['p', 'current_page', 'per_page', 'total_pages', 'total_entries']
19
+ paging_data = ["p"]
20
+ paging.each_pair do |key, val|
21
+ paging_data << val
22
+ end
23
+
24
+ @table.add_separator
25
+ @table << paging_header
26
+ @table << paging_data
27
+ end
28
+ puts @table.to_s
29
+ end
30
+
31
+ def format(result)
32
+ raise NotImplementedError
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ require_relative '../base_csv.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class InfoCSV < BaseCSV
6
+ def initialize
7
+ headers = "name,language,owner_login,owner_type,private,fork,branches,imported_projects, description"
8
+ super(headers)
9
+ end
10
+ def format(results)
11
+ return nil if results.nil?
12
+ repo = results['repo']
13
+ imported_projects = results['imported_projects']
14
+ imported_project_names = imported_projects.map {|p| p['project_key']}
15
+ printf(
16
+ "%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
17
+ repo['fullname'],
18
+ repo['language'],
19
+ repo['owner_login'],
20
+ repo['owner_type'],
21
+ repo['private'],
22
+ repo['fork'],
23
+ repo['branches'].join('|'),
24
+ imported_project_names.join('|'),
25
+ repo['description']
26
+ )
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,11 @@
1
+ require_relative '../base_json.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class InfoJSON < BaseJSON
6
+ def format(results)
7
+ @results[:repo] = results['repo']
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ require_relative '../base_pretty.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class InfoPretty < BasePretty
6
+
7
+ def format(result)
8
+ return if result.nil?
9
+ repo = result['repo']
10
+ projects = result['imported_projects']
11
+ if projects
12
+ project_names = projects.map {|x| x['project_key']}
13
+ else
14
+ project_names = []
15
+ end
16
+
17
+ printf(
18
+ "\t%15s - %s\n",
19
+ "#{repo['fullname']}".foreground(:green),
20
+ "#{repo['language']}".bright
21
+ )
22
+ printf("\t%-15s: %s\n", "Description", repo['description'])
23
+ printf("\t%-15s: %s\n", "Owner login", repo['owner_login'])
24
+ printf("\t%-15s: %s\n", "Owner type", repo['owner_type'])
25
+ printf("\t%-15s: %s\n", "Private", repo['private'])
26
+ printf("\t%-15s: %s\n", "Fork", repo['fork'])
27
+ printf("\t%-15s: %s\n", "Branches", repo['branches'].to_a.join(', '))
28
+ printf("\t%-15s: %s\n", "Imported", project_names.join(', '))
29
+ printf("\t%-15s: %s\n", "Html url", repo['html_url'])
30
+ printf("\t%-15s: %s\n", "Git url", repo['git_url'])
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ require_relative '../base_table.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class InfoTable < BaseTable
6
+ def initialize
7
+ headings = %w(name language owner_login owner_type private fork branches imported_projects description)
8
+ super("Repository information", headings)
9
+ end
10
+
11
+ def format(result)
12
+ return if result.nil?
13
+
14
+ repo = result['repo']
15
+ projects = result['imported_projects']
16
+ if projects
17
+ project_names = projects.map {|x| x['project_key']}
18
+ else
19
+ project_names = []
20
+ end
21
+
22
+ row = [repo['fullname']]
23
+ row << repo['language']
24
+ row << repo['owner_login']
25
+ row << repo['owner_type']
26
+ row << repo['private']
27
+ row << repo['fork']
28
+ row << repo['branches'].to_a.join("\n")
29
+ row << project_names.join("\n")
30
+ row << repo['description']
31
+
32
+ @table << row
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../base_csv.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class ListCSV < BaseCSV
6
+ def initialize
7
+ headers = "nr,fullname,language,owner_login,owner_type,private,fork,branches,description"
8
+ super(headers)
9
+ end
10
+
11
+ def format(results)
12
+ results['repos'].each_with_index do |result, index|
13
+ printf("%d,%s,%s,%s,%s,%s,%s,%s,%s\n",
14
+ index + 1,
15
+ result['fullname'],
16
+ result['language'],
17
+ result['owner_login'],
18
+ result['owner_type'],
19
+ result['private'],
20
+ result['fork'],
21
+ result['branches'].join('|'),
22
+ result['description']
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../base_json.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class ListJSON < BaseJSON
6
+ def initialize
7
+ super()
8
+ end
9
+ def format(results)
10
+ results = results.shift if results.is_a? Array
11
+ @results[:repos] = results['repos']
12
+ end
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,27 @@
1
+ require_relative '../base_pretty.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class ListPretty < BasePretty
6
+ def format(results)
7
+ results['repos'].each_with_index {|result, index| print_row(result, index)}
8
+ end
9
+
10
+ def print_row(result, index)
11
+ printf(
12
+ "%3d - %s\n",
13
+ index + 1,
14
+ "#{result['name']}".foreground(:green).bright
15
+ )
16
+ printf("\t%-15s: %s\n", "Language", result['language'])
17
+ printf("\t%-15s: %s\n", "Owner name", result['owner_login'])
18
+ printf("\t%-15s: %s\n", "Owner type", result['owner_type'])
19
+ printf("\t%-15s: %s\n", "Private", result['private'])
20
+ printf("\t%-15s: %s\n", "Fork", result['fork'])
21
+ printf("\t%-15s: %s\n", "Branches", result['branches'].join(','))
22
+ printf("\t%-15s: %s\n", "Description", result['description'])
23
+ printf("\t%-15s: %s\n", "Imported", result['imported_projects'].join(','))
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../base_table.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class ListTable < BaseTable
6
+ def initialize
7
+ headings = %w(index fullname language owner_login owner_type private fork branches imported)
8
+ super("Github repositories", headings)
9
+ end
10
+
11
+ def format(results)
12
+ results['repos'].each_with_index do |result, index|
13
+ row = [(index + 1)]
14
+ row << result['fullname']
15
+ row << result['language']
16
+ row << result['owner_login']
17
+ row << result['owner_type']
18
+ row << result['private']
19
+ row << result['fork']
20
+ row << result['branches'].join("\n")
21
+ row << result['imported_projects'].to_a.join("\n")
22
+ #row << result['description']
23
+ @table << row
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,36 @@
1
+ require_relative '../base_csv.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class SearchCSV < BaseCSV
6
+ def initialize
7
+ columns = %w[nr,name,language,owner_name,owner_type,private,fork,watchers,forks,git_url]
8
+ super(columns)
9
+ end
10
+
11
+ def format(results)
12
+ return if results.nil?
13
+
14
+ results['results'].each_with_index do |result, index|
15
+ print_row(result, index)
16
+ end
17
+ end
18
+
19
+ def print_row(result, index)
20
+ printf("%d,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
21
+ index + 1,
22
+ result['name'],
23
+ result['language'],
24
+ result['owner_name'],
25
+ result['owner_type'],
26
+ result['private'],
27
+ result['fork'],
28
+ result['watchers'],
29
+ result['forks'],
30
+ result['git_url']
31
+ )
32
+ end
33
+ end
34
+ end
35
+ end
36
+
@@ -0,0 +1,12 @@
1
+ require_relative '../base_json.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class SearchJSON < BaseJSON
6
+ def format(results)
7
+ @results[:results] = results['results']
8
+ end
9
+ end
10
+ end
11
+ end
12
+
@@ -0,0 +1,31 @@
1
+ require_relative '../base_pretty.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class SearchPretty < BasePretty
6
+ def format(results)
7
+ results['results'].each_with_index do |result, index|
8
+ print_row(result, index)
9
+ end
10
+ end
11
+
12
+ def print_row(result, index)
13
+ printf(
14
+ "%3d - %s\n",
15
+ index + 1,
16
+ "#{result["name"]}".foreground(:green).bright
17
+ )
18
+ printf("\t%-15s: %s\n", 'language', result['language'])
19
+ printf("\t%-15s: %s\n", 'owner_name', result['owner_name'])
20
+ printf("\t%-15s: %s\n", 'owner_type', result['owner_type'])
21
+ printf("\t%-15s: %s\n", 'private', result['private'])
22
+ printf("\t%-15s: %s\n", 'fork', result['fork'])
23
+ printf("\t%-15s: %s\n", 'watchers', result['watchers'])
24
+ printf("\t%-15s: %s\n", 'forks', result['forks'])
25
+ printf("\t%-15s: %s\n", 'git_url', result['git_url'])
26
+
27
+ end
28
+ end
29
+ end
30
+ end
31
+
@@ -0,0 +1,34 @@
1
+ require_relative '../base_table.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class SearchTable < BaseTable
6
+ def initialize
7
+ headings = %w(index name language owner_name owner_type private fork watchers forks github_url)
8
+ super("Search results", headings)
9
+ end
10
+
11
+ def format(results)
12
+ results['results'].each_with_index do |result, index|
13
+ print_row(result, index)
14
+ end
15
+ end
16
+
17
+ def print_row(result, index)
18
+ row = [(index + 1)]
19
+ row << result['name']
20
+ row << result['language']
21
+ row << result['owner_name']
22
+ row << result['owner_type']
23
+ row << result['private']
24
+ row << result['fork']
25
+ row << result['watchers']
26
+ row << result['forks']
27
+ row << result['git_url']
28
+
29
+ @table << row
30
+ end
31
+ end
32
+ end
33
+ end
34
+