veye 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +51 -0
- data/README.md +271 -0
- data/README.rdoc +6 -0
- data/Rakefile +44 -0
- data/bin/veye +390 -0
- data/lib/veye/api/base_resource.rb +29 -0
- data/lib/veye/api/json_response.rb +56 -0
- data/lib/veye/api/resource.rb +22 -0
- data/lib/veye/api.rb +3 -0
- data/lib/veye/package/follow.rb +50 -0
- data/lib/veye/package/info.rb +50 -0
- data/lib/veye/package/info_csv.rb +18 -0
- data/lib/veye/package/info_json.rb +14 -0
- data/lib/veye/package/info_pretty.rb +27 -0
- data/lib/veye/package/info_table.rb +29 -0
- data/lib/veye/package/search.rb +46 -0
- data/lib/veye/package/search_csv.rb +33 -0
- data/lib/veye/package/search_json.rb +19 -0
- data/lib/veye/package/search_pretty.rb +35 -0
- data/lib/veye/package/search_table.rb +40 -0
- data/lib/veye/package.rb +23 -0
- data/lib/veye/pagination/pagination_csv.rb +17 -0
- data/lib/veye/pagination/pagination_json.rb +12 -0
- data/lib/veye/pagination/pagination_pretty.rb +22 -0
- data/lib/veye/pagination/pagination_table.rb +22 -0
- data/lib/veye/pagination/show.rb +26 -0
- data/lib/veye/pagination.rb +7 -0
- data/lib/veye/project/check.rb +147 -0
- data/lib/veye/project/licence.rb +48 -0
- data/lib/veye/project/project_csv.rb +28 -0
- data/lib/veye/project/project_dependency_csv.rb +25 -0
- data/lib/veye/project/project_dependency_json.rb +12 -0
- data/lib/veye/project/project_dependency_pretty.rb +30 -0
- data/lib/veye/project/project_dependency_table.rb +27 -0
- data/lib/veye/project/project_json.rb +13 -0
- data/lib/veye/project/project_licence_csv.rb +19 -0
- data/lib/veye/project/project_licence_json.rb +12 -0
- data/lib/veye/project/project_licence_pretty.rb +23 -0
- data/lib/veye/project/project_licence_table.rb +29 -0
- data/lib/veye/project/project_pretty.rb +28 -0
- data/lib/veye/project/project_table.rb +30 -0
- data/lib/veye/project.rb +11 -0
- data/lib/veye/service.rb +14 -0
- data/lib/veye/user/favorite_csv.rb +28 -0
- data/lib/veye/user/favorite_json.rb +14 -0
- data/lib/veye/user/favorite_pretty.rb +25 -0
- data/lib/veye/user/favorite_table.rb +28 -0
- data/lib/veye/user/me.rb +75 -0
- data/lib/veye/user/profile_csv.rb +21 -0
- data/lib/veye/user/profile_json.rb +14 -0
- data/lib/veye/user/profile_pretty.rb +31 -0
- data/lib/veye/user/profile_table.rb +34 -0
- data/lib/veye/user.rb +7 -0
- data/lib/veye/version.rb +13 -0
- data/lib/veye.rb +82 -0
- data/test/default_test.rb +14 -0
- data/test/files/Gemfile +20 -0
- data/test/files/maven-1.0.1.pom +128 -0
- data/test/test_helper.rb +9 -0
- data/veye.rdoc +5 -0
- metadata +229 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative 'search_csv.rb'
|
2
|
+
require_relative 'search_json.rb'
|
3
|
+
require_relative 'search_pretty.rb'
|
4
|
+
require_relative 'search_table.rb'
|
5
|
+
|
6
|
+
module Veye
|
7
|
+
module Package
|
8
|
+
|
9
|
+
class Search
|
10
|
+
@@output_formats = {
|
11
|
+
'csv' => SearchCSV.new,
|
12
|
+
'json' => SearchJSON.new,
|
13
|
+
'pretty' => SearchPretty.new,
|
14
|
+
'table' => SearchTable.new
|
15
|
+
}
|
16
|
+
|
17
|
+
def self.search(search_term, language = nil, group_id = nil, page = nil)
|
18
|
+
search_api = Veye::API::Resource.new "#{RESOURCE_PATH}/search"
|
19
|
+
|
20
|
+
search_response = nil
|
21
|
+
search_params = {:q => search_term.to_s}
|
22
|
+
|
23
|
+
search_params[:lang] = Package.encode_language(language) unless language.nil?
|
24
|
+
search_params[:g] = group_id unless group_id.nil?
|
25
|
+
search_params[:page] = page unless page.nil?
|
26
|
+
|
27
|
+
request_params = {:params => search_params}
|
28
|
+
search_api.resource["/#{search_term}"].get(request_params) do |response, request, result, &block|
|
29
|
+
search_response = API::JSONResponse.new(request, result, response)
|
30
|
+
end
|
31
|
+
|
32
|
+
return search_response
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.format(search_results, format = 'pretty', paging = nil)
|
36
|
+
|
37
|
+
formatter = @@output_formats[format]
|
38
|
+
formatter.before
|
39
|
+
formatter.format(search_results)
|
40
|
+
formatter.after paging
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Veye
|
2
|
+
module Package
|
3
|
+
class SearchCSV
|
4
|
+
def before
|
5
|
+
printf("nr,name,version,prod_key,version,language,group_id\n")
|
6
|
+
end
|
7
|
+
def after(paging = nil)
|
8
|
+
return if paging.nil?
|
9
|
+
|
10
|
+
printf("# ------------------------------------------\n")
|
11
|
+
printf("current_page,per_page,total_pages,total_entries\n")
|
12
|
+
printf("%s,%s,%s,%s\n",
|
13
|
+
paging['current_page'],
|
14
|
+
paging['per_page'],
|
15
|
+
paging['total_pages'],
|
16
|
+
paging['total_entries'])
|
17
|
+
end
|
18
|
+
|
19
|
+
def format(results)
|
20
|
+
results.each_with_index do |result, index|
|
21
|
+
printf("%d,%s,%s,%s,%s,%s,%s\n",
|
22
|
+
index + 1,
|
23
|
+
result["name"],
|
24
|
+
result["version"],
|
25
|
+
result["prod_key"],
|
26
|
+
result["version"],
|
27
|
+
result["language"],
|
28
|
+
result["group_id"])
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Veye
|
2
|
+
module Package
|
3
|
+
class SearchJSON
|
4
|
+
def before
|
5
|
+
@results = {:results => []}
|
6
|
+
end
|
7
|
+
def after(paging = nil)
|
8
|
+
@results[:paging] = paging unless paging.nil?
|
9
|
+
printf("%s\n", @results.to_json)
|
10
|
+
end
|
11
|
+
|
12
|
+
def format(results)
|
13
|
+
results.each do |result|
|
14
|
+
@results[:results] << result
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rainbow'
|
2
|
+
|
3
|
+
module Veye
|
4
|
+
module Package
|
5
|
+
class SearchPretty
|
6
|
+
def before; end
|
7
|
+
def after(paging = nil)
|
8
|
+
return if paging.nil?
|
9
|
+
|
10
|
+
printf("\n#-- %s\n", "Pagination information".bright)
|
11
|
+
printf("\t%-15s: %s\n", "Current page", paging['current_page'])
|
12
|
+
printf("\t%-15s: %s\n", "Per page", paging['per_page'])
|
13
|
+
printf("\t%-15s: %s\n", "Total pages", paging['total_pages'])
|
14
|
+
printf("\t%-15s: %s\n", "Total entries", paging['total_entries'])
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def format(results)
|
19
|
+
results.each_with_index do |result, index|
|
20
|
+
printf("%3d - %s\n",
|
21
|
+
index + 1,
|
22
|
+
"#{result["name"]}".foreground(:green).bright)
|
23
|
+
printf("\t%-15s: %s\n", "Product key", result["prod_key"])
|
24
|
+
printf("\t%-15s: %s\n", "Latest version",
|
25
|
+
"#{result["version"]}".bright)
|
26
|
+
printf("\t%-15s: %s\n", "Language", result["language"])
|
27
|
+
|
28
|
+
if result.has_key? "group_id" and not result["group_id"].empty?
|
29
|
+
printf("\t%-15s: %s\n", "Group id", result["group_id"])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'terminal-table'
|
2
|
+
|
3
|
+
module Veye
|
4
|
+
module Package
|
5
|
+
class SearchTable
|
6
|
+
def before
|
7
|
+
@@table = Terminal::Table.new :title => "Package search",
|
8
|
+
:headings => %w(index name version product_key language group_id)
|
9
|
+
@@table.align_column(0, :right)
|
10
|
+
end
|
11
|
+
|
12
|
+
def after(paging = nil)
|
13
|
+
unless paging.nil?
|
14
|
+
paging_header = ['p', 'current_page', 'per_page', 'total_pages', 'total_entries']
|
15
|
+
paging_data = ["p"]
|
16
|
+
paging.each_pair do |key, val|
|
17
|
+
paging_data << val
|
18
|
+
end
|
19
|
+
|
20
|
+
@@table.add_separator
|
21
|
+
@@table << paging_header
|
22
|
+
@@table << paging_data
|
23
|
+
end
|
24
|
+
|
25
|
+
puts @@table.to_s
|
26
|
+
end
|
27
|
+
|
28
|
+
def format(results)
|
29
|
+
results.each_with_index do |result, index|
|
30
|
+
row = [index+1, result["name"], result["version"], result["prod_key"]]
|
31
|
+
row << result["language"]
|
32
|
+
row << result["group_id"]
|
33
|
+
|
34
|
+
@@table << row
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/lib/veye/package.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative 'package/info.rb'
|
2
|
+
require_relative 'package/search.rb'
|
3
|
+
require_relative 'package/follow.rb'
|
4
|
+
|
5
|
+
# -- define module constants here
|
6
|
+
module Veye
|
7
|
+
module Package
|
8
|
+
RESOURCE_PATH = "/products"
|
9
|
+
|
10
|
+
def supported_languages
|
11
|
+
Set.new ["Clojure", "Java", "Javascript", "Node.JS", "PHP", "Python", "Ruby", "R"]
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.encode_prod_key(prod_key)
|
15
|
+
prod_key = prod_key.to_s
|
16
|
+
prod_key.gsub(/\//, ":").gsub(/\./, "~")
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.encode_language(lang)
|
20
|
+
lang.gsub(/\./, "").downcase
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Veye
|
2
|
+
module Pagination
|
3
|
+
class PaginationCSV
|
4
|
+
def before
|
5
|
+
printf("current_page,per_page,total_pages,total_entries\n")
|
6
|
+
end
|
7
|
+
|
8
|
+
def after; end
|
9
|
+
|
10
|
+
def format(paging)
|
11
|
+
printf("%s,%s,%s,%s\n",
|
12
|
+
paging['current_page'], paging['per_page'],
|
13
|
+
paging['total_pages'], paging['total_entries'])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rainbow'
|
2
|
+
|
3
|
+
module Veye
|
4
|
+
module Pagination
|
5
|
+
class PaginationPretty
|
6
|
+
def before; end
|
7
|
+
def after; end
|
8
|
+
|
9
|
+
def format(paging)
|
10
|
+
printf("\t%15s - %s\n",
|
11
|
+
"Current page".foreground(:green).bright,
|
12
|
+
"#{paging['current_page']}".bright)
|
13
|
+
puts "\t-------------------------"
|
14
|
+
printf("\t%-15s: %s\n", "Per page", paging['per_page'])
|
15
|
+
printf("\t%-15s: %s\n", "Total pages", paging['total_pages'])
|
16
|
+
printf("\t%-15s: %s\n", "Total entries", paging['total_entries'])
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'terminal-table'
|
2
|
+
|
3
|
+
module Veye
|
4
|
+
module Pagination
|
5
|
+
class PaginationTable
|
6
|
+
def before
|
7
|
+
@@table = Terminal::Table.new :title => "Pagination",
|
8
|
+
:headings => %w(current_page per_page total_pages total_entries)
|
9
|
+
@@table.align_column(0, :right)
|
10
|
+
end
|
11
|
+
|
12
|
+
def after
|
13
|
+
puts @@table.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
def format(paging)
|
17
|
+
row = [paging['current_page'], paging['per_page'], paging['total_pages'], paging['total_entries']]
|
18
|
+
@@table << row
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'pagination_csv.rb'
|
2
|
+
require_relative 'pagination_json.rb'
|
3
|
+
require_relative 'pagination_pretty.rb'
|
4
|
+
require_relative 'pagination_table.rb'
|
5
|
+
|
6
|
+
module Veye
|
7
|
+
module Pagination
|
8
|
+
class Show
|
9
|
+
@@pagination_formats = {
|
10
|
+
'csv' => PaginationCSV.new,
|
11
|
+
'json' => PaginationJSON.new,
|
12
|
+
'pretty' => PaginationPretty.new,
|
13
|
+
'table' => PaginationTable.new
|
14
|
+
}
|
15
|
+
|
16
|
+
def self.format(paging, format = 'pretty')
|
17
|
+
formatter = @@pagination_formats[format]
|
18
|
+
|
19
|
+
formatter.before
|
20
|
+
formatter.format paging
|
21
|
+
formatter.after
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,147 @@
|
|
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
|
+
|
8
|
+
require_relative 'project_dependency_csv.rb'
|
9
|
+
require_relative 'project_dependency_json.rb'
|
10
|
+
require_relative 'project_dependency_pretty.rb'
|
11
|
+
require_relative 'project_dependency_table.rb'
|
12
|
+
|
13
|
+
module Veye
|
14
|
+
module Project
|
15
|
+
class Check
|
16
|
+
@@output_formats = {
|
17
|
+
"csv" => ProjectCSV.new,
|
18
|
+
"json" => ProjectJSON.new,
|
19
|
+
"pretty" => ProjectPretty.new,
|
20
|
+
"table" => ProjectTable.new
|
21
|
+
}
|
22
|
+
|
23
|
+
@@dependency_output_formats = {
|
24
|
+
"csv" => ProjectDependencyCSV.new,
|
25
|
+
"json" => ProjectDependencyJSON.new,
|
26
|
+
"pretty" => ProjectDependencyPretty.new,
|
27
|
+
"table" => ProjectDependencyTable.new
|
28
|
+
}
|
29
|
+
|
30
|
+
|
31
|
+
def self.get_list(api_key)
|
32
|
+
project_api = API::Resource.new(RESOURCE_PATH)
|
33
|
+
qparams = {:params => {:api_key => api_key}}
|
34
|
+
|
35
|
+
project_api.resource.get(qparams) do |response, request, result|
|
36
|
+
response_data = API::JSONResponse.new(request, result, response)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.upload(filename, api_key)
|
41
|
+
response_data = {:success => false}
|
42
|
+
file_path = File.absolute_path(filename)
|
43
|
+
|
44
|
+
unless File.exists?(file_path)
|
45
|
+
error_msg = sprintf("%s: Cant read file `%s`",
|
46
|
+
"Error".foreground(:red),
|
47
|
+
"#{filename}".foreground(:yellow)
|
48
|
+
)
|
49
|
+
exit_now!(error_msg)
|
50
|
+
end
|
51
|
+
|
52
|
+
file_size = File.size(file_path)
|
53
|
+
unless file_size != 0 and file_size < MAX_FILE_SIZE
|
54
|
+
exit_now!("Size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb")
|
55
|
+
end
|
56
|
+
|
57
|
+
project_api = API::Resource.new(RESOURCE_PATH)
|
58
|
+
file_obj = File.open(file_path, 'rb')
|
59
|
+
|
60
|
+
upload_data = {
|
61
|
+
:upload => file_obj,
|
62
|
+
:api_key => api_key
|
63
|
+
}
|
64
|
+
project_api.resource.post(upload_data) do |response, request, result, &block|
|
65
|
+
response_data = API::JSONResponse.new(request, result, response)
|
66
|
+
end
|
67
|
+
|
68
|
+
return response_data
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.update(project_key, filename, api_key)
|
72
|
+
response_data = {:success => false}
|
73
|
+
file_path = File.absolute_path(filename)
|
74
|
+
|
75
|
+
unless File.exists?(file_path)
|
76
|
+
error_msg = sprintf("%s: Cant read file `%s`",
|
77
|
+
"Error".foreground(:red),
|
78
|
+
"#{filename}".foreground(:yellow)
|
79
|
+
)
|
80
|
+
exit_now!(error_msg)
|
81
|
+
end
|
82
|
+
|
83
|
+
file_size = File.size(file_path)
|
84
|
+
unless file_size != 0 and file_size < MAX_FILE_SIZE
|
85
|
+
exit_now!(" The size of file is not acceptable: 0kb < x <= #{MAX_FILE_SIZE/1000}kb")
|
86
|
+
end
|
87
|
+
|
88
|
+
project_api = API::Resource.new("#{RESOURCE_PATH}/#{project_key}")
|
89
|
+
file_obj = File.open(file_path, 'rb')
|
90
|
+
upload_data = {
|
91
|
+
:project_file => file_obj,
|
92
|
+
:api_key => api_key
|
93
|
+
}
|
94
|
+
project_api.resource.post(upload_data) do |response, request, result, &block|
|
95
|
+
response_data = API::JSONResponse.new(request, result, response)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
def self.get_project(project_key, api_key)
|
99
|
+
response_data = nil
|
100
|
+
project_api = API::Resource.new(RESOURCE_PATH)
|
101
|
+
|
102
|
+
if project_key.nil? or project_key.empty?
|
103
|
+
error_msg = sprintf("%s: %s",
|
104
|
+
"Error".foreground(:red),
|
105
|
+
"Not valid project_key: `#{project_key}`")
|
106
|
+
exit_now! error_msg
|
107
|
+
end
|
108
|
+
|
109
|
+
project_url = "/#{project_key}"
|
110
|
+
qparams = {:params => {:api_key => api_key}}
|
111
|
+
project_api.resource[project_url].get(qparams) do |response, request, result|
|
112
|
+
response_data = API::JSONResponse.new(request, result, response)
|
113
|
+
end
|
114
|
+
|
115
|
+
return response_data
|
116
|
+
end
|
117
|
+
|
118
|
+
def self.delete_project(project_key, api_key)
|
119
|
+
project_api = Veye::API::Resource.new(RESOURCE_PATH)
|
120
|
+
qparams = {:params => {:api_key => api_key}}
|
121
|
+
response_data = nil
|
122
|
+
|
123
|
+
project_api.resource["/#{project_key}"].delete(qparams) do |response, request, result|
|
124
|
+
response_data = API::JSONResponse.new(request, result, response)
|
125
|
+
end
|
126
|
+
|
127
|
+
return response_data
|
128
|
+
end
|
129
|
+
|
130
|
+
def self.format(results, format = 'pretty')
|
131
|
+
formatter = @@output_formats[format]
|
132
|
+
formatter.before
|
133
|
+
formatter.format results
|
134
|
+
formatter.after
|
135
|
+
end
|
136
|
+
|
137
|
+
def self.format_dependencies(results, format = 'pretty')
|
138
|
+
formatter = @@dependency_output_formats[format]
|
139
|
+
formatter.before
|
140
|
+
formatter.format results
|
141
|
+
formatter.after
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
@@ -0,0 +1,48 @@
|
|
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'
|
7
|
+
|
8
|
+
module Veye
|
9
|
+
module Project
|
10
|
+
class Licence
|
11
|
+
@@output_formats = {
|
12
|
+
"csv" => ProjectLicenceCSV.new,
|
13
|
+
"json" => ProjectLicenceJSON.new,
|
14
|
+
"pretty" => ProjectLicencePretty.new,
|
15
|
+
"table" => ProjectLicenceTable.new
|
16
|
+
}
|
17
|
+
|
18
|
+
def self.get_project(project_key, api_key)
|
19
|
+
response_data = nil
|
20
|
+
project_api = API::Resource.new(RESOURCE_PATH)
|
21
|
+
|
22
|
+
if project_key.nil? or project_key.empty?
|
23
|
+
error_msg = sprintf("%s: %s",
|
24
|
+
"Error".foreground(:red),
|
25
|
+
"Not valid project_key: `#{project_key}`")
|
26
|
+
exit_now! error_msg
|
27
|
+
end
|
28
|
+
|
29
|
+
project_url = "/#{project_key}/licenses"
|
30
|
+
qparams = {:params => {:api_key => api_key}}
|
31
|
+
project_api.resource[project_url].get(qparams) do |response, request, result|
|
32
|
+
response_data = API::JSONResponse.new(request, result, response)
|
33
|
+
end
|
34
|
+
|
35
|
+
return response_data
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.format(results, format = 'pretty')
|
39
|
+
formatter = @@output_formats[format]
|
40
|
+
formatter.before
|
41
|
+
formatter.format results
|
42
|
+
formatter.after
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Veye
|
2
|
+
module Project
|
3
|
+
class ProjectCSV
|
4
|
+
def before
|
5
|
+
printf("nr,name,project_key,private,period,source,dep_number,out_number,created_at\n")
|
6
|
+
end
|
7
|
+
def after; end
|
8
|
+
|
9
|
+
def format(results)
|
10
|
+
results = [results] if results.is_a? Hash
|
11
|
+
|
12
|
+
results.each_with_index do |result, index|
|
13
|
+
printf("%d,%s,%s,%s,%s,%s,%s,%s,%s\n",
|
14
|
+
index + 1,
|
15
|
+
result['name'],
|
16
|
+
result['project_key'],
|
17
|
+
result['private'],
|
18
|
+
result['period'],
|
19
|
+
result['source'],
|
20
|
+
result['dep_number'],
|
21
|
+
result['out_number'],
|
22
|
+
result['created_at'])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Veye
|
2
|
+
module Project
|
3
|
+
class ProjectDependencyCSV
|
4
|
+
def before
|
5
|
+
printf("nr,name,prod_key,outdated,latest,current\n",nil)
|
6
|
+
end
|
7
|
+
def after; end
|
8
|
+
|
9
|
+
def format(results)
|
10
|
+
results = [results] if results.is_a?(Hash)
|
11
|
+
|
12
|
+
results.each_with_index do |result, index|
|
13
|
+
printf("%d,%s,%s,%s,%s,%s\n",
|
14
|
+
index + 1,
|
15
|
+
result["name"],
|
16
|
+
result["prod_key"],
|
17
|
+
result["outdated"],
|
18
|
+
result["version_current"],
|
19
|
+
result["version_requested"],
|
20
|
+
)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rainbow'
|
2
|
+
|
3
|
+
module Veye
|
4
|
+
module Project
|
5
|
+
class ProjectDependencyPretty
|
6
|
+
def before; end
|
7
|
+
def after; end
|
8
|
+
|
9
|
+
def format(results)
|
10
|
+
results = [results] if results.is_a?(Hash)
|
11
|
+
results.each_with_index do |result, index|
|
12
|
+
project_name = "#{result['name']}".foreground(:green).bright
|
13
|
+
printf("%3d - %s\n", index + 1, project_name)
|
14
|
+
printf("\t%-15s: %s\n", "Product key", result["prod_key"])
|
15
|
+
|
16
|
+
color = (result["outdated"] == true) ? :red : :green
|
17
|
+
printf("\t%-15s: %s\n", "Outdated",
|
18
|
+
"#{result['outdated']}".foreground(color))
|
19
|
+
|
20
|
+
printf("\t%-15s: %s\n", "Latest version",
|
21
|
+
"#{result['version_current']}".foreground(color))
|
22
|
+
|
23
|
+
printf("\t%-15s: %s\n", "Current version", result["version_requested"])
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'terminal-table'
|
2
|
+
|
3
|
+
module Veye
|
4
|
+
module Project
|
5
|
+
class ProjectDependencyTable
|
6
|
+
def before
|
7
|
+
@@table = Terminal::Table.new :title => "Version check",
|
8
|
+
:headings => %w(index name prod_key version_current version_latest)
|
9
|
+
@@table.align_column(0, :right)
|
10
|
+
end
|
11
|
+
|
12
|
+
def after
|
13
|
+
puts @@table.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
def format(results)
|
17
|
+
results = [results] if results.is_a?(Hash)
|
18
|
+
|
19
|
+
results.each_with_index do |result, index|
|
20
|
+
row = [index + 1, result["name"], result["prod_key"],
|
21
|
+
result["version_current"], result["version_requested"]]
|
22
|
+
@@table << row
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Veye
|
2
|
+
module Project
|
3
|
+
class ProjectLicenceCSV
|
4
|
+
def before
|
5
|
+
printf("nr,licence,product keys\n")
|
6
|
+
end
|
7
|
+
def after; end
|
8
|
+
|
9
|
+
def format(results)
|
10
|
+
n = 1
|
11
|
+
results["licenses"].each_pair do |licence, prods|
|
12
|
+
prod_keys = prods.map {|p| p["prod_key"]}
|
13
|
+
printf("%d,%s,%s\n", n, licence, prod_keys.join(','))
|
14
|
+
n += 1
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|