veye 0.2.1 → 0.3.0
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +48 -41
- data/README.md +36 -17
- data/bin/veye +176 -47
- data/bundle +0 -0
- data/changelogs.md +19 -0
- data/lib/veye/api/package.rb +16 -2
- data/lib/veye/api/project.rb +41 -6
- data/lib/veye/base_executor.rb +81 -16
- data/lib/veye/github/delete.rb +2 -4
- data/lib/veye/github/import.rb +3 -4
- data/lib/veye/package/follow.rb +9 -9
- data/lib/veye/package/info.rb +4 -4
- data/lib/veye/package/references.rb +4 -6
- data/lib/veye/package/search.rb +2 -1
- data/lib/veye/package/versions.rb +37 -0
- data/lib/veye/package.rb +2 -0
- data/lib/veye/project/check.rb +19 -9
- data/lib/veye/project.rb +86 -2
- data/lib/veye/version.rb +1 -1
- data/lib/veye/views/base_csv.rb +1 -1
- data/lib/veye/views/github/info_csv.rb +1 -1
- data/lib/veye/views/github/info_pretty.rb +1 -1
- data/lib/veye/views/github/info_table.rb +2 -2
- data/lib/veye/views/package/info_csv.rb +4 -3
- data/lib/veye/views/package/info_pretty.rb +4 -2
- data/lib/veye/views/package/info_table.rb +4 -1
- data/lib/veye/views/package/versions_csv.rb +24 -0
- data/lib/veye/views/package/versions_json.rb +15 -0
- data/lib/veye/views/package/versions_pretty.rb +23 -0
- data/lib/veye/views/package/versions_table.rb +27 -0
- data/lib/veye/views/package.rb +4 -0
- data/lib/veye/views/project/dependency_csv.rb +18 -10
- data/lib/veye/views/project/dependency_pretty.rb +13 -2
- data/lib/veye/views/project/dependency_table.rb +8 -2
- data/lib/veye/views/project/info_csv.rb +9 -3
- data/lib/veye/views/project/info_markdown.rb +7 -2
- data/lib/veye/views/project/info_pretty.rb +6 -1
- data/lib/veye/views/project/info_table.rb +8 -3
- data/lib/veye.rb +26 -3
- data/test/api/package_test.rb +15 -0
- data/test/api/project_test.rb +83 -19
- data/test/base/base_executor_test.rb +87 -0
- data/test/fixtures/vcr_cassettes/github_delete.yml +7 -7
- data/test/fixtures/vcr_cassettes/github_import.yml +11 -13
- data/test/fixtures/vcr_cassettes/github_info.yml +10 -10
- data/test/fixtures/vcr_cassettes/github_list.yml +12 -12
- data/test/fixtures/vcr_cassettes/github_sync.yml +7 -7
- data/test/fixtures/vcr_cassettes/package_follow.yml +10 -10
- data/test/fixtures/vcr_cassettes/package_follow_status.yml +7 -7
- data/test/fixtures/vcr_cassettes/package_info.yml +17 -18
- data/test/fixtures/vcr_cassettes/package_info_default.yml +54 -0
- data/test/fixtures/vcr_cassettes/package_info_versioned.yml +54 -0
- data/test/fixtures/vcr_cassettes/package_reference.yml +8 -8
- data/test/fixtures/vcr_cassettes/package_search.yml +8 -8
- data/test/fixtures/vcr_cassettes/package_unfollow.yml +7 -7
- data/test/fixtures/vcr_cassettes/package_versions.yml +44 -0
- data/test/fixtures/vcr_cassettes/project_check_new.yml +33 -30
- data/test/fixtures/vcr_cassettes/project_check_update.yml +29 -30
- data/test/fixtures/vcr_cassettes/project_delete.yml +8 -8
- data/test/fixtures/vcr_cassettes/project_delete_for_licenses.yml +48 -0
- data/test/fixtures/vcr_cassettes/project_delete_for_update.yml +46 -0
- data/test/fixtures/vcr_cassettes/project_delete_merge_child.yml +46 -0
- data/test/fixtures/vcr_cassettes/project_delete_merge_parent.yml +46 -0
- data/test/fixtures/vcr_cassettes/project_get.yml +11 -12
- data/test/fixtures/vcr_cassettes/project_license.yml +11 -12
- data/test/fixtures/vcr_cassettes/project_license_command.yml +49 -0
- data/test/fixtures/vcr_cassettes/project_list.yml +14 -14
- data/test/fixtures/vcr_cassettes/project_merge.yml +46 -0
- data/test/fixtures/vcr_cassettes/project_unmerge.yml +46 -0
- data/test/fixtures/vcr_cassettes/project_update.yml +15 -16
- data/test/fixtures/vcr_cassettes/project_upload.yml +17 -16
- data/test/fixtures/vcr_cassettes/project_upload_for_licenses.yml +107 -0
- data/test/fixtures/vcr_cassettes/project_upload_for_update.yml +105 -0
- data/test/fixtures/vcr_cassettes/project_upload_merge_child.yml +65 -0
- data/test/fixtures/vcr_cassettes/project_upload_merge_parent.yml +104 -0
- data/test/fixtures/vcr_cassettes/project_upload_with_args.yml +106 -0
- data/test/fixtures/vcr_cassettes/services_ping.yml +6 -8
- data/test/fixtures/vcr_cassettes/user_get_favorites.yml +10 -10
- data/test/fixtures/vcr_cassettes/user_get_profile.yml +10 -10
- data/test/github_delete_test.rb +5 -3
- data/test/github_import_test.rb +8 -15
- data/test/github_info_test.rb +2 -2
- data/test/package_follow_test.rb +3 -3
- data/test/package_info_test.rb +16 -15
- data/test/package_reference_test.rb +4 -4
- data/test/package_search_test.rb +4 -4
- data/test/package_versions_test.rb +73 -0
- data/test/project_check_test.rb +107 -79
- data/test/project_license_test.rb +29 -11
- data/test/project_test.rb +59 -0
- data/test/user_me_test.rb +4 -4
- data/veye.gemspec +10 -8
- data/veye.log +11 -0
- metadata +73 -20
|
@@ -15,9 +15,11 @@ module Veye
|
|
|
15
15
|
printf("\t%-15s: %s\n", "Product key",
|
|
16
16
|
"#{result["prod_key"]}".bright)
|
|
17
17
|
printf("\t%-15s:\n\t %s\n", "Description", result["description"])
|
|
18
|
-
printf("\t%-15s: %s\n",
|
|
19
|
-
printf("\t%-15s: %s\n",
|
|
18
|
+
printf("\t%-15s: %s\n", 'Group id', result["group_id"])
|
|
19
|
+
printf("\t%-15s: %s\n", 'Link', result["links"].first.fetch('link'))
|
|
20
20
|
|
|
21
|
+
vulns = result['security_vulnerabilities'].to_a.map {|x| x['name_id'] }.join(',')
|
|
22
|
+
printf("\t%-15s: %s\n", 'CVEs', (vulns.empty? ? 'none'.color(:green) : vulns.color(:red)))
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
|
|
@@ -4,17 +4,20 @@ module Veye
|
|
|
4
4
|
module Package
|
|
5
5
|
class InfoTable < BaseTable
|
|
6
6
|
def initialize
|
|
7
|
-
headings = %w(name version product_key language license description)
|
|
7
|
+
headings = %w(name version product_key language license description CVEs)
|
|
8
8
|
super("Package information", headings)
|
|
9
9
|
end
|
|
10
10
|
def format(results)
|
|
11
11
|
result = results
|
|
12
12
|
return if result.nil?
|
|
13
|
+
|
|
14
|
+
vulns = result['security_vulnerabilities'].to_a.map {|x| x['name_id'] }.join(',')
|
|
13
15
|
|
|
14
16
|
row = [result["name"], result["version"], result["prod_key"]]
|
|
15
17
|
row << result["language"]
|
|
16
18
|
row << result["license_info"]
|
|
17
19
|
row << result["description"]
|
|
20
|
+
row << vulns
|
|
18
21
|
|
|
19
22
|
@table << row
|
|
20
23
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require_relative '../base_csv.rb'
|
|
2
|
+
|
|
3
|
+
module Veye
|
|
4
|
+
module Package
|
|
5
|
+
class VersionsCSV < BaseCSV
|
|
6
|
+
def initialize
|
|
7
|
+
headers = "nr,version,language,prod_key,prod_type,released_at"
|
|
8
|
+
super(headers)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def format(results, n = 10, from = 0)
|
|
12
|
+
prod_dt = results
|
|
13
|
+
|
|
14
|
+
results['versions'].to_a.each_with_index do |ver, i|
|
|
15
|
+
printf(
|
|
16
|
+
"%s,%s,%s,%s,%s,%s\n",
|
|
17
|
+
(from + i + 1), ver['version'], prod_dt['language'],
|
|
18
|
+
prod_dt['prod_key'], prod_dt['prod_type'], ver['released_at']
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require_relative '../base_json.rb'
|
|
2
|
+
|
|
3
|
+
module Veye
|
|
4
|
+
module Package
|
|
5
|
+
class VersionsJSON < BaseJSON
|
|
6
|
+
def format(results, n = 10, from = 0)
|
|
7
|
+
@results[:results] = results
|
|
8
|
+
@results[:pagination] = {
|
|
9
|
+
n: n,
|
|
10
|
+
from: from
|
|
11
|
+
}
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require_relative '../base_pretty.rb'
|
|
2
|
+
|
|
3
|
+
module Veye
|
|
4
|
+
module Package
|
|
5
|
+
class VersionsPretty < BasePretty
|
|
6
|
+
def format(result, n = 10, from = 0)
|
|
7
|
+
return if result.nil?
|
|
8
|
+
|
|
9
|
+
printf("\t%15s - %s\n", result['name'].to_s.color(:green).bright, result['version'].to_s.bright)
|
|
10
|
+
printf("\t%-15s: %s\n", 'Language', result['language'])
|
|
11
|
+
printf("\t%-15s: %s\n", 'Product type', result['prod_type'])
|
|
12
|
+
printf("\t%-15s: %s\n", 'Product key', result['prod_key'])
|
|
13
|
+
|
|
14
|
+
printf("\t%-15s: %d after skipping %d items\n", 'Showing items', n, from)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
result['versions'].to_a.each_with_index do |ver, i|
|
|
18
|
+
printf("\t%-15s: %s\t%s\n", ver['version'], (from + i + 1), ver['released_at'])
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require_relative '../base_table.rb'
|
|
2
|
+
|
|
3
|
+
module Veye
|
|
4
|
+
module Package
|
|
5
|
+
class VersionsTable < BaseTable
|
|
6
|
+
def initialize
|
|
7
|
+
headings = %w(nr name version released_at product_key language product_type)
|
|
8
|
+
super('Package versions', headings)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def format(results, n = 10, from = 0)
|
|
12
|
+
return if results.nil?
|
|
13
|
+
|
|
14
|
+
results['versions'].to_a.each_with_index do |ver, i|
|
|
15
|
+
row = [
|
|
16
|
+
(from + i + 1), results['name'], ver['version'], ver['released_at'],
|
|
17
|
+
results['prod_key'], results['language'], results['prod_type']
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
@table << row
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
@table
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/veye/views/package.rb
CHANGED
|
@@ -13,6 +13,10 @@ require_relative 'package/references_json.rb'
|
|
|
13
13
|
require_relative 'package/references_pretty.rb'
|
|
14
14
|
require_relative 'package/references_table.rb'
|
|
15
15
|
|
|
16
|
+
require_relative 'package/versions_csv.rb'
|
|
17
|
+
require_relative 'package/versions_json.rb'
|
|
18
|
+
require_relative 'package/versions_pretty.rb'
|
|
19
|
+
require_relative 'package/versions_table.rb'
|
|
16
20
|
|
|
17
21
|
module Veye
|
|
18
22
|
module Package
|
|
@@ -4,7 +4,7 @@ module Veye
|
|
|
4
4
|
module Project
|
|
5
5
|
class DependencyCSV < BaseCSV
|
|
6
6
|
def initialize
|
|
7
|
-
headings = "nr,name,prod_key,outdated,current,requested,stable,licenses"
|
|
7
|
+
headings = "nr,name,prod_key,outdated,current,requested,stable,licenses,upgrade_cost"
|
|
8
8
|
super(headings)
|
|
9
9
|
end
|
|
10
10
|
|
|
@@ -22,15 +22,23 @@ module Veye
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def print_line(result, i)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
upgrade_cost = if result.has_key?(:upgrade)
|
|
26
|
+
"#{result[:upgrade][:difficulty]}(#{result[:upgrade][:dv_score]})"
|
|
27
|
+
else
|
|
28
|
+
nil
|
|
29
|
+
end
|
|
30
|
+
printf(
|
|
31
|
+
"%d,%s,%s,%s,%s,%s,%s,'%s','%s'\n",
|
|
32
|
+
i,
|
|
33
|
+
result['name'],
|
|
34
|
+
result['prod_key'],
|
|
35
|
+
result['outdated'],
|
|
36
|
+
result['version_current'],
|
|
37
|
+
result['version_requested'],
|
|
38
|
+
result['stable'],
|
|
39
|
+
result['licenses'].to_a.map {|x| x['name']}.join(';'),
|
|
40
|
+
upgrade_cost
|
|
41
|
+
)
|
|
34
42
|
end
|
|
35
43
|
|
|
36
44
|
def print_line_with_filename(result, i, filename)
|
|
@@ -6,7 +6,8 @@ module Veye
|
|
|
6
6
|
def format(results, filename = nil)
|
|
7
7
|
return if results.nil?
|
|
8
8
|
results = [results] if results.is_a?(Hash)
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
printf("#-- Dependencies #{filename.to_s}-----------------------------------------\n")
|
|
10
11
|
results.each_with_index do |result, index|
|
|
11
12
|
project_name = "#{result['name']}".color(:green).bright
|
|
12
13
|
printf("%3d - %s\n", index + 1, project_name)
|
|
@@ -25,10 +26,20 @@ module Veye
|
|
|
25
26
|
printf("\t%-15s: %s\n", "Current", "#{result['version_current']}".color(color_code))
|
|
26
27
|
|
|
27
28
|
printf("\t%-15s: %s\n", "Requested", result["version_requested"])
|
|
28
|
-
|
|
29
|
+
|
|
29
30
|
licenses = result["licenses"].to_a.map {|x| x['name']}
|
|
30
31
|
printf("\t%-15s: %s\n", "Licenses", licenses.join(', '))
|
|
31
32
|
|
|
33
|
+
if result.has_key?(:upgrade)
|
|
34
|
+
printf(
|
|
35
|
+
"\t%-15s: %s(%.2f)\n",
|
|
36
|
+
"Upgrade cost",
|
|
37
|
+
result[:upgrade][:difficulty],
|
|
38
|
+
result[:upgrade][:dv_score]
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
32
43
|
end
|
|
33
44
|
end
|
|
34
45
|
end
|
|
@@ -4,13 +4,18 @@ module Veye
|
|
|
4
4
|
module Project
|
|
5
5
|
class DependencyTable < BaseTable
|
|
6
6
|
def initialize
|
|
7
|
-
headings = %w{index name prod_key version_current version_requested outdated stable license}
|
|
7
|
+
headings = %w{index name prod_key version_current version_requested outdated stable license upgrade_cost}
|
|
8
8
|
super("Project dependencies", headings)
|
|
9
9
|
end
|
|
10
10
|
def format(results, filename = nil)
|
|
11
11
|
results = [results] if results.is_a?(Hash)
|
|
12
12
|
|
|
13
13
|
results.each_with_index do |result, index|
|
|
14
|
+
upgrade_cost = if result.has_key?(:upgrade)
|
|
15
|
+
"#{result[:upgrade][:difficulty]}(#{result[:upgrade][:dv_score]})"
|
|
16
|
+
else
|
|
17
|
+
''
|
|
18
|
+
end
|
|
14
19
|
row = [
|
|
15
20
|
index + 1,
|
|
16
21
|
(filename or result["name"]),
|
|
@@ -19,7 +24,8 @@ module Veye
|
|
|
19
24
|
result["version_requested"],
|
|
20
25
|
result["outdated"] ? "outdated":"no",
|
|
21
26
|
result["stable"] ? "stable": "unstable",
|
|
22
|
-
result["licenses"].to_a.map {|x| x['name']}.join(',')
|
|
27
|
+
result["licenses"].to_a.map {|x| x['name']}.join(','),
|
|
28
|
+
upgrade_cost
|
|
23
29
|
]
|
|
24
30
|
@table << row
|
|
25
31
|
end
|
|
@@ -4,18 +4,24 @@ module Veye
|
|
|
4
4
|
module Project
|
|
5
5
|
class InfoCSV < BaseCSV
|
|
6
6
|
def initialize
|
|
7
|
-
headers = "nr,name,
|
|
7
|
+
headers = "nr,name,project_id,public,period,source,dep_number,out_number,created_at"
|
|
8
8
|
super(headers)
|
|
9
9
|
end
|
|
10
10
|
def format(results)
|
|
11
11
|
return nil if results.nil?
|
|
12
12
|
results = [results] if results.is_a? Hash
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
results.each_with_index do |result, index|
|
|
15
|
+
#BUG: API returns raw mongoID value as id when fetching a list of projects
|
|
16
|
+
if result['id'].is_a?(Hash)
|
|
17
|
+
result['id'] = result['id'].values.first
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
|
15
21
|
printf("%d,%s,%s,%s,%s,%s,%s,%s,%s\n",
|
|
16
22
|
index + 1,
|
|
17
23
|
result['name'],
|
|
18
|
-
result['
|
|
24
|
+
result['id'],
|
|
19
25
|
result['public'],
|
|
20
26
|
result['period'],
|
|
21
27
|
result['source'],
|
|
@@ -4,7 +4,7 @@ module Veye
|
|
|
4
4
|
module Project
|
|
5
5
|
class InfoMarkdown < BaseMarkdown
|
|
6
6
|
def initialize
|
|
7
|
-
headings = %w(index name
|
|
7
|
+
headings = %w(index name project_id project_type public period source dependencies outdated created)
|
|
8
8
|
super("Project's information", headings)
|
|
9
9
|
end
|
|
10
10
|
|
|
@@ -13,10 +13,15 @@ module Veye
|
|
|
13
13
|
|
|
14
14
|
results = [results] if results.is_a?(Hash) #required for `project show`
|
|
15
15
|
results.each_with_index do |result, index|
|
|
16
|
+
#BUG: API returns raw mongoID value as id when fetching a list of projects
|
|
17
|
+
if result['id'].is_a?(Hash)
|
|
18
|
+
result['id'] = result['id'].values.first
|
|
19
|
+
end
|
|
20
|
+
|
|
16
21
|
@table << [
|
|
17
22
|
(index + 1).to_s,
|
|
18
23
|
result["name"],
|
|
19
|
-
result["
|
|
24
|
+
result["id"],
|
|
20
25
|
result["project_type"],
|
|
21
26
|
result["public"].to_s,
|
|
22
27
|
result["period"],
|
|
@@ -9,9 +9,14 @@ module Veye
|
|
|
9
9
|
results = [results] if results.is_a? Hash
|
|
10
10
|
|
|
11
11
|
results.each_with_index do |result, index|
|
|
12
|
+
#BUG: API returns raw mongoID value as id when fetching a list of projects
|
|
13
|
+
if result['id'].is_a?(Hash)
|
|
14
|
+
result['id'] = result['id'].values.first
|
|
15
|
+
end
|
|
16
|
+
|
|
12
17
|
project_name = "#{result['name']}".color(:green).bright
|
|
13
18
|
printf("%3d - %s\n", index + 1, project_name)
|
|
14
|
-
printf("\t%-15s: %s\n", "Project
|
|
19
|
+
printf("\t%-15s: %s\n", "Project id", "#{result['id']}".bright)
|
|
15
20
|
printf("\t%-15s: %s\n", "Project type", result['project_type'])
|
|
16
21
|
printf("\t%-15s: %s\n", "Public", result['public'])
|
|
17
22
|
printf("\t%-15s: %s\n", "Period", result['period'])
|
|
@@ -4,7 +4,7 @@ module Veye
|
|
|
4
4
|
module Project
|
|
5
5
|
class InfoTable < BaseTable
|
|
6
6
|
def initialize
|
|
7
|
-
headings = %w(index name
|
|
7
|
+
headings = %w(index name project_id public period source dependencies outdated created_at)
|
|
8
8
|
super("List of projects", headings)
|
|
9
9
|
end
|
|
10
10
|
|
|
@@ -13,8 +13,13 @@ module Veye
|
|
|
13
13
|
results = [results] if results.is_a? Hash
|
|
14
14
|
|
|
15
15
|
results.each_with_index do |result, index|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
#BUG: API returns raw mongoID value as id when fetching a list of projects
|
|
17
|
+
if result['id'].is_a?(Hash)
|
|
18
|
+
result['id'] = result['id'].values.first
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
row = [index + 1, result['name'], result['id'],
|
|
22
|
+
result['public'], result['period'], result['source'],
|
|
18
23
|
result['dep_number'], result['out_number'], result['created_at']]
|
|
19
24
|
@table << row
|
|
20
25
|
end
|
data/lib/veye.rb
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# you just need to require this one file in your bin file
|
|
3
3
|
require 'rest-client'
|
|
4
4
|
require 'yaml'
|
|
5
|
+
require 'logger'
|
|
5
6
|
|
|
6
7
|
require 'veye/helpers/format_helpers.rb'
|
|
7
8
|
|
|
@@ -30,7 +31,7 @@ end
|
|
|
30
31
|
|
|
31
32
|
def check_config_file
|
|
32
33
|
unless config_exists?
|
|
33
|
-
|
|
34
|
+
printf(
|
|
34
35
|
"%s: %s\n",
|
|
35
36
|
'config file doesnt exist.'.color(:red),
|
|
36
37
|
'Use `veye initconfig` to initialize settings file.'
|
|
@@ -57,7 +58,7 @@ end
|
|
|
57
58
|
def check_api_key(global_opts)
|
|
58
59
|
result = false
|
|
59
60
|
if global_opts[:api_key].nil? || global_opts[:api_key].match("add your api key")
|
|
60
|
-
|
|
61
|
+
printf(
|
|
61
62
|
"%s: %s\n",
|
|
62
63
|
'Warning: API key is missing.'.color(:yellow),
|
|
63
64
|
'You cant access private data.'
|
|
@@ -74,9 +75,31 @@ def save_configs
|
|
|
74
75
|
File.open(filepath, 'w') do |f|
|
|
75
76
|
f.puts $global_options.to_yaml
|
|
76
77
|
end
|
|
77
|
-
|
|
78
|
+
printf(
|
|
78
79
|
"%s: %s",
|
|
79
80
|
'Success'.color(:green),
|
|
80
81
|
"new settings are saved into file: `#{filepath}`"
|
|
81
82
|
)
|
|
82
83
|
end
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
#-- initialize logger
|
|
87
|
+
module Veye
|
|
88
|
+
class << self
|
|
89
|
+
attr_writer :logger
|
|
90
|
+
|
|
91
|
+
def logger
|
|
92
|
+
@logger ||= Logger.new('veye.log').tap do |log|
|
|
93
|
+
log.level = case $global_options.fetch(:log_level, 'debug')
|
|
94
|
+
when 'info' then Logger::INFO
|
|
95
|
+
when 'debug' then Logger::DEBUG
|
|
96
|
+
when 'warn' then Logger::INFO
|
|
97
|
+
when 'error' then Logger::ERROR
|
|
98
|
+
when 'fatal' then Logger::FATAL
|
|
99
|
+
else Logger::DEBUG
|
|
100
|
+
end
|
|
101
|
+
log.progname = self.name
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
data/test/api/package_test.rb
CHANGED
|
@@ -33,6 +33,21 @@ class PackageTest < Minitest::Test
|
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
+
def test_version_list_api_call
|
|
37
|
+
VCR.use_cassette('package_versions') do
|
|
38
|
+
res = Veye::API::Package.get_version_list(@api_key, 'ruby', 'ruby')
|
|
39
|
+
refute_nil res
|
|
40
|
+
assert_equal 200, res.code
|
|
41
|
+
assert_equal true, res.success
|
|
42
|
+
assert_equal 'ruby', res.data['name']
|
|
43
|
+
assert_equal 'ruby', res.data['language']
|
|
44
|
+
assert_equal '0.1.0', res.data['version']
|
|
45
|
+
assert_equal 'RubyGem', res.data['prod_type']
|
|
46
|
+
assert_equal 1, res.data['versions'].count
|
|
47
|
+
assert_equal '0.1.0', res.data['versions'].first['version']
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
36
51
|
def test_get_follow_status_api_call
|
|
37
52
|
VCR.use_cassette('package_follow_status') do
|
|
38
53
|
res = Veye::API::Package.get_follow_status(@api_key, 'ruby', 'ruby')
|
data/test/api/project_test.rb
CHANGED
|
@@ -3,24 +3,45 @@ require 'test_helper'
|
|
|
3
3
|
class ProjectTest < Minitest::Test
|
|
4
4
|
def setup
|
|
5
5
|
init_environment
|
|
6
|
-
@api_key
|
|
7
|
-
@test_file
|
|
8
|
-
@
|
|
6
|
+
@api_key = ENV["VEYE_API_KEY"]
|
|
7
|
+
@test_file = "test/files/maven-1.0.1.pom.xml"
|
|
8
|
+
@test_file2 = "test/files/Gemfile"
|
|
9
|
+
@project_key = upload_project["id"]
|
|
10
|
+
|
|
11
|
+
@org_name = "veye_test"
|
|
12
|
+
@team_name = "veye_cli_tool"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def upload_project(test_file = nil, is_temporary = true, task_id = nil)
|
|
16
|
+
cassette_name = ( task_id.nil? ? 'project_upload' : "project_upload_#{task_id}" )
|
|
17
|
+
test_file ||= @test_file
|
|
18
|
+
org_name = @org_name
|
|
19
|
+
|
|
20
|
+
VCR.use_cassette(cassette_name) do
|
|
21
|
+
res = Veye::API::Project.upload(@api_key, test_file, org_name, nil, is_temporary)
|
|
22
|
+
res.data
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def delete_project(project_id, task_id = nil)
|
|
27
|
+
VCR.use_cassette("project_delete_#{task_id.to_s}") do
|
|
28
|
+
res = Veye::API::Project.delete_project(@api_key, project_id)
|
|
29
|
+
res.data
|
|
30
|
+
end
|
|
9
31
|
end
|
|
10
32
|
|
|
11
33
|
def test_get_list_api_call
|
|
12
34
|
VCR.use_cassette('project_list') do
|
|
13
|
-
res = Veye::API::Project.get_list(@api_key)
|
|
35
|
+
res = Veye::API::Project.get_list(@api_key, @org_name)
|
|
14
36
|
|
|
15
37
|
assert_equal 200, res.code
|
|
16
38
|
assert_equal true, res.success
|
|
17
39
|
|
|
18
40
|
proj = res.data.first
|
|
19
|
-
assert_equal "
|
|
20
|
-
assert_equal "
|
|
21
|
-
assert_equal "Lein", proj["project_type"]
|
|
41
|
+
assert_equal "OpenEJB :: Maven Plugins", proj["name"]
|
|
42
|
+
assert_equal "Maven2", proj["project_type"]
|
|
22
43
|
assert_equal false, proj["public"]
|
|
23
|
-
assert_equal "
|
|
44
|
+
assert_equal "API", proj["source"]
|
|
24
45
|
end
|
|
25
46
|
end
|
|
26
47
|
|
|
@@ -39,11 +60,11 @@ class ProjectTest < Minitest::Test
|
|
|
39
60
|
|
|
40
61
|
def test_upload_api_call_when_file_exists
|
|
41
62
|
VCR.use_cassette('project_upload') do
|
|
42
|
-
res = Veye::API::Project.upload(@api_key, @test_file)
|
|
63
|
+
res = Veye::API::Project.upload(@api_key, @test_file, @org_name)
|
|
43
64
|
refute_nil res
|
|
44
65
|
assert_equal 201, res.code
|
|
45
66
|
assert_equal true, res.success
|
|
46
|
-
assert_equal
|
|
67
|
+
assert_equal @project_key, res.data['id']
|
|
47
68
|
assert_equal "OpenEJB :: Maven Plugins", res.data["name"]
|
|
48
69
|
assert_equal "Maven2", res.data["project_type"]
|
|
49
70
|
assert_equal true, res.data["public"]
|
|
@@ -51,20 +72,44 @@ class ProjectTest < Minitest::Test
|
|
|
51
72
|
end
|
|
52
73
|
end
|
|
53
74
|
|
|
75
|
+
def test_upload_attaches_optional_arguments
|
|
76
|
+
VCR.use_cassette('project_upload_with_args') do
|
|
77
|
+
res = Veye::API::Project.upload(@api_key, @test_file, @org_name, @team_name, true, false, 'nipitiri')
|
|
78
|
+
refute_nil res
|
|
79
|
+
|
|
80
|
+
assert_equal 201, res.code
|
|
81
|
+
assert_equal true, res.success
|
|
82
|
+
assert_equal 'nipitiri', res.data['name']
|
|
83
|
+
assert_equal false, res.data['public']
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
|
|
54
88
|
def test_update_api_call
|
|
89
|
+
proj_dt = {}
|
|
90
|
+
VCR.use_cassette('project_upload_for_update') do
|
|
91
|
+
res = Veye::API::Project.upload(@api_key, @test_file, @org_name, @team_name, false)
|
|
92
|
+
refute_nil res
|
|
93
|
+
proj_dt = res.data
|
|
94
|
+
end
|
|
95
|
+
|
|
55
96
|
VCR.use_cassette('project_update') do
|
|
56
|
-
res = Veye::API::Project.update(@api_key,
|
|
97
|
+
res = Veye::API::Project.update(@api_key, proj_dt['id'], @test_file)
|
|
57
98
|
refute_nil res
|
|
58
99
|
assert_equal 201, res.code
|
|
59
100
|
assert_equal true, res.success
|
|
60
101
|
proj = res.data
|
|
61
|
-
assert_equal
|
|
102
|
+
assert_equal proj_dt['id'], proj["id"]
|
|
62
103
|
assert_equal "OpenEJB :: Maven Plugins", proj["name"]
|
|
63
104
|
assert_equal "Maven2", proj["project_type"]
|
|
64
105
|
assert_equal true, proj["public"]
|
|
65
106
|
assert_equal "API", proj["source"]
|
|
66
107
|
assert_equal 11, proj["dependencies"].count
|
|
67
108
|
end
|
|
109
|
+
|
|
110
|
+
VCR.use_cassette('project_delete_for_update') do
|
|
111
|
+
Veye::API::Project.delete_project(@api_key, proj_dt['id'])
|
|
112
|
+
end
|
|
68
113
|
end
|
|
69
114
|
|
|
70
115
|
def test_get_project_api_call
|
|
@@ -75,7 +120,7 @@ class ProjectTest < Minitest::Test
|
|
|
75
120
|
assert_equal 200, res.code
|
|
76
121
|
|
|
77
122
|
proj = res.data
|
|
78
|
-
assert_equal @project_key, proj["
|
|
123
|
+
assert_equal @project_key, proj["id"]
|
|
79
124
|
assert_equal "OpenEJB :: Maven Plugins", proj["name"]
|
|
80
125
|
assert_equal "Maven2", proj["project_type"]
|
|
81
126
|
assert_equal true, proj["public"]
|
|
@@ -99,20 +144,39 @@ class ProjectTest < Minitest::Test
|
|
|
99
144
|
|
|
100
145
|
def test_get_licenses_api_call
|
|
101
146
|
VCR.use_cassette('project_license') do
|
|
102
|
-
res = Veye::API::Project.get_licenses(@api_key,
|
|
147
|
+
res = Veye::API::Project.get_licenses(@api_key, @project_key)
|
|
103
148
|
assert_equal 200, res.code
|
|
104
149
|
assert_equal true, res.success
|
|
105
150
|
assert_equal true, res.data["success"]
|
|
106
151
|
|
|
107
152
|
licenses = res.data["licenses"]
|
|
108
|
-
|
|
109
|
-
assert_equal({
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
153
|
+
apache_license = licenses["Apache-2.0"].first
|
|
154
|
+
assert_equal({
|
|
155
|
+
"name" => "maven-plugin-annotations",
|
|
156
|
+
"prod_key" => "org.apache.maven.plugin-tools/maven-plugin-annotations"
|
|
157
|
+
}, apache_license)
|
|
113
158
|
end
|
|
114
159
|
end
|
|
115
160
|
|
|
161
|
+
def test_merge_api_call
|
|
162
|
+
#upload 2projects
|
|
163
|
+
parent_id = upload_project(@test_file, false, 'merge_parent')['id']
|
|
164
|
+
child_id = upload_project(@test_file2, false, 'merge_child')['id']
|
|
165
|
+
|
|
166
|
+
VCR.use_cassette('project_merge') do
|
|
167
|
+
res = Veye::API::Project.merge(@api_key, parent_id, child_id)
|
|
168
|
+
assert_equal true, res.success
|
|
169
|
+
assert_equal true, res.data['success']
|
|
170
|
+
end
|
|
116
171
|
|
|
172
|
+
VCR.use_cassette('project_unmerge') do
|
|
173
|
+
res = Veye::API::Project.unmerge(@api_key, parent_id, child_id)
|
|
174
|
+
assert_equal true, res.success
|
|
175
|
+
assert_equal true, res.data['success']
|
|
176
|
+
end
|
|
177
|
+
#delete projects
|
|
178
|
+
delete_project(parent_id, 'merge_parent')
|
|
179
|
+
delete_project(child_id, 'merge_child')
|
|
180
|
+
end
|
|
117
181
|
|
|
118
182
|
end
|