veye 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. data/Gemfile.lock +16 -16
  2. data/README.md +66 -0
  3. data/bin/veye +140 -186
  4. data/lib/veye/base_executor.rb +24 -0
  5. data/lib/veye/github/delete.rb +35 -0
  6. data/lib/veye/github/import.rb +32 -0
  7. data/lib/veye/github/info.rb +30 -0
  8. data/lib/veye/github/list.rb +37 -0
  9. data/lib/veye/github/search.rb +34 -0
  10. data/lib/veye/github/sync.rb +33 -0
  11. data/lib/veye/github.rb +14 -0
  12. data/lib/veye/helpers/format_helpers.rb +4 -1
  13. data/lib/veye/helpers/repo_helpers.rb +5 -0
  14. data/lib/veye/package/follow.rb +37 -22
  15. data/lib/veye/package/info.rb +17 -27
  16. data/lib/veye/package/search.rb +29 -40
  17. data/lib/veye/project/check.rb +80 -74
  18. data/lib/veye/project/licence.rb +17 -31
  19. data/lib/veye/service.rb +16 -4
  20. data/lib/veye/user/me.rb +25 -45
  21. data/lib/veye/version.rb +1 -1
  22. data/lib/veye/views/base_csv.rb +26 -0
  23. data/lib/veye/views/base_json.rb +20 -0
  24. data/lib/veye/views/base_markdown.rb +17 -0
  25. data/lib/veye/views/base_pretty.rb +17 -0
  26. data/lib/veye/views/base_table.rb +34 -0
  27. data/lib/veye/views/github/info_csv.rb +30 -0
  28. data/lib/veye/views/github/info_json.rb +11 -0
  29. data/lib/veye/views/github/info_pretty.rb +35 -0
  30. data/lib/veye/views/github/info_table.rb +36 -0
  31. data/lib/veye/views/github/list_csv.rb +28 -0
  32. data/lib/veye/views/github/list_json.rb +16 -0
  33. data/lib/veye/views/github/list_pretty.rb +27 -0
  34. data/lib/veye/views/github/list_table.rb +28 -0
  35. data/lib/veye/views/github/search_csv.rb +36 -0
  36. data/lib/veye/views/github/search_json.rb +12 -0
  37. data/lib/veye/views/github/search_pretty.rb +31 -0
  38. data/lib/veye/views/github/search_table.rb +34 -0
  39. data/lib/veye/views/github.rb +19 -0
  40. data/lib/veye/{package → views/package}/info_csv.rb +7 -6
  41. data/lib/veye/views/package/info_json.rb +12 -0
  42. data/lib/veye/{package → views/package}/info_pretty.rb +8 -10
  43. data/lib/veye/views/package/info_table.rb +25 -0
  44. data/lib/veye/views/package/search_csv.rb +28 -0
  45. data/lib/veye/views/package/search_json.rb +11 -0
  46. data/lib/veye/views/package/search_pretty.rb +26 -0
  47. data/lib/veye/views/package/search_table.rb +25 -0
  48. data/lib/veye/views/package.rb +14 -0
  49. data/lib/veye/views/project/dependency_csv.rb +30 -0
  50. data/lib/veye/views/project/dependency_json.rb +11 -0
  51. data/lib/veye/views/project/dependency_markdown.rb +31 -0
  52. data/lib/veye/{project/project_dependency_pretty.rb → views/project/dependency_pretty.rb} +5 -7
  53. data/lib/veye/{project/project_dependency_table.rb → views/project/dependency_table.rb} +6 -15
  54. data/lib/veye/{project/project_csv.rb → views/project/info_csv.rb} +7 -7
  55. data/lib/veye/views/project/info_json.rb +12 -0
  56. data/lib/veye/{project/project_markdown.rb → views/project/info_markdown.rb} +8 -14
  57. data/lib/veye/{project/project_pretty.rb → views/project/info_pretty.rb} +3 -4
  58. data/lib/veye/views/project/info_table.rb +24 -0
  59. data/lib/veye/{project/project_licence_csv.rb → views/project/licence_csv.rb} +7 -5
  60. data/lib/veye/views/project/licence_json.rb +11 -0
  61. data/lib/veye/{project/project_licence_pretty.rb → views/project/licence_pretty.rb} +4 -6
  62. data/lib/veye/views/project/licence_table.rb +24 -0
  63. data/lib/veye/views/project.rb +22 -0
  64. data/lib/veye/views/user/favorite_csv.rb +32 -0
  65. data/lib/veye/views/user/favorite_json.rb +13 -0
  66. data/lib/veye/views/user/favorite_pretty.rb +23 -0
  67. data/lib/veye/views/user/favorite_table.rb +24 -0
  68. data/lib/veye/views/user/profile_csv.rb +23 -0
  69. data/lib/veye/views/user/profile_json.rb +12 -0
  70. data/lib/veye/{user → views/user}/profile_pretty.rb +6 -10
  71. data/lib/veye/views/user/profile_table.rb +30 -0
  72. data/lib/veye/views/user.rb +14 -0
  73. data/lib/veye.rb +3 -1
  74. metadata +90 -60
  75. data/lib/veye/package/info_json.rb +0 -14
  76. data/lib/veye/package/info_table.rb +0 -29
  77. data/lib/veye/package/search_csv.rb +0 -33
  78. data/lib/veye/package/search_json.rb +0 -19
  79. data/lib/veye/package/search_pretty.rb +0 -35
  80. data/lib/veye/package/search_table.rb +0 -40
  81. data/lib/veye/project/project_dependency_csv.rb +0 -30
  82. data/lib/veye/project/project_dependency_json.rb +0 -12
  83. data/lib/veye/project/project_dependency_markdown.rb +0 -47
  84. data/lib/veye/project/project_json.rb +0 -11
  85. data/lib/veye/project/project_licence_json.rb +0 -12
  86. data/lib/veye/project/project_licence_table.rb +0 -29
  87. data/lib/veye/project/project_table.rb +0 -30
  88. data/lib/veye/user/favorite_csv.rb +0 -28
  89. data/lib/veye/user/favorite_json.rb +0 -14
  90. data/lib/veye/user/favorite_pretty.rb +0 -25
  91. data/lib/veye/user/favorite_table.rb +0 -28
  92. data/lib/veye/user/profile_csv.rb +0 -21
  93. data/lib/veye/user/profile_json.rb +0 -14
  94. data/lib/veye/user/profile_table.rb +0 -34
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- veye (0.0.6)
5
- awesome_print (= 1.2.0)
6
- gli (= 2.8.0)
7
- rainbow
8
- render-as-markdown (~> 0.0.1)
9
- rest-client (= 1.6.7)
10
- terminal-table (= 1.4.5)
4
+ veye (0.0.7)
5
+ awesome_print (~> 1.2.0)
6
+ gli (~> 2.8.1)
7
+ rainbow (~> 1.1.4)
8
+ render-as-markdown (~> 0.0.5)
9
+ rest-client (~> 1.6.7)
10
+ terminal-table (~> 1.4.5)
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
@@ -27,19 +27,19 @@ GEM
27
27
  multi_json (>= 1.7.5, < 2.0)
28
28
  multi_test (>= 0.0.2)
29
29
  diff-lcs (1.2.4)
30
- ffi (1.9.0)
31
- gherkin (2.12.1)
30
+ ffi (1.9.1)
31
+ gherkin (2.12.2)
32
32
  multi_json (~> 1.3)
33
- gli (2.8.0)
34
- json (1.8.0)
33
+ gli (2.8.1)
34
+ json (1.8.1)
35
35
  mime-types (1.25)
36
- multi_json (1.8.1)
36
+ multi_json (1.8.2)
37
37
  multi_test (0.0.2)
38
38
  rainbow (1.1.4)
39
39
  rake (10.1.0)
40
40
  rdoc (4.0.1)
41
41
  json (~> 1.4)
42
- render-as-markdown (0.0.3)
42
+ render-as-markdown (0.0.5)
43
43
  rest-client (1.6.7)
44
44
  mime-types (>= 1.16)
45
45
  rspec-expectations (2.14.3)
@@ -50,7 +50,7 @@ PLATFORMS
50
50
  ruby
51
51
 
52
52
  DEPENDENCIES
53
- aruba
54
- rake
55
- rdoc
53
+ aruba (~> 0.5.3)
54
+ rake (~> 10.1.0)
55
+ rdoc (~> 4.0)
56
56
  veye!
data/README.md CHANGED
@@ -302,4 +302,70 @@ This command removes the specified project from your project's list.
302
302
  ```
303
303
  $> veye me favorites
304
304
  $> veye me favorites --page=2 --format=table
305
+ ```
306
+
307
+ ### Github
308
+
309
+ `Github` command includes subcommands to manage your Github repositories on VersionEye.
310
+
311
+ All subcommands expect that you had already connected your Github with your VersionEye account. Otherwise you'll get plain exception message.
312
+
313
+ ##### Sync
314
+
315
+ Updates your Github data - this api's resource tries to be lazy: it pulls updates only if there's no cached repositories or Github shows there's any changes on your repositories. But you can use `--force` switch to re-import all data regardless there's any changes on your repositories. Beware this command can takes time.
316
+
317
+ ```
318
+ $> veye github sync
319
+ $> veye github sync --force
320
+ ```
321
+
322
+ ###### List
323
+
324
+ `list` commands shows paginated view of your repositories.
325
+
326
+ ```
327
+ $> veye github list --format=table
328
+ ```
329
+
330
+ ###### Info
331
+
332
+ This command shows more detailed information.
333
+
334
+ ```
335
+ $> veye github info versioneye/veye
336
+ $> veye github info versioneye/veye --format=table
337
+ ```
338
+
339
+ ###### Import
340
+
341
+ `import` command takes fullname of repository and tries to import project file from that repository. Fullname have to include the owner and the name of repository.
342
+
343
+ By default, it tries to read project file on master branch; you can use a `--branch` flag to specify the name of branch.
344
+
345
+ This command gives exception when you are trying to import already imported repository.
346
+
347
+
348
+ ```
349
+ $> veye github import versioneye/veye
350
+ $> veye github import versioneye/veye --branch=dev
351
+ ```
352
+
353
+
354
+ ###### Delete
355
+
356
+ It removes imported project.
357
+
358
+ ```
359
+ $> veye github delete versioneye/veye
360
+ $> veye github delete versioneye/veye --branch=dev
361
+ ```
362
+
363
+ ###### Search
364
+
365
+ This command makes authorized request to the Github search api for repositories. As authorized user, you can make up to *5000* request per hour.
366
+
367
+ ```
368
+ $> veye github search versioneye
369
+ $> veye github search json --language=php --page=2 ;; filter results by language
370
+ $> veye github search veye --user versioneye ;; filter results by users
305
371
  ```
data/bin/veye CHANGED
@@ -44,25 +44,16 @@ pre do |global_options, command, args|
44
44
  check_config_file
45
45
  $global_options = init_environment
46
46
  $global_options.merge!(global_options)
47
- needs_api_key = ! COMMANDS_WITHOUT_API_KEY.member?(command.name)
47
+ needs_api_key = !COMMANDS_WITHOUT_API_KEY.member?(command.name)
48
48
  check_configs($global_options, needs_api_key)
49
49
  $global_options[:url] = Veye::API::Resource.build_url($global_options)
50
50
  end
51
51
 
52
52
  desc 'check service status'
53
53
  command :ping do |c|
54
- c.action do |global_options, options, args|
55
- respond = Veye::Service.ping()
56
- if respond.success
57
- puts "#{respond.data['message']}".foreground(:green)
58
- else
59
- printf(
60
- "VersionEye didnt recognized secret word.Answered %s, %s\n",
61
- respond.code.to_s.foreground(:red),
62
- "#{respond.message}".foreground(:yellow)
63
- )
64
- end
65
- end
54
+ c.action do |global_options, options, args|
55
+ Veye::Service.ping
56
+ end
66
57
  end
67
58
 
68
59
  desc 'change the api key'
@@ -82,11 +73,11 @@ command :search do |c|
82
73
  c.desc 'filter results by language'
83
74
  c.flag [:l, :language, 'language-name']
84
75
 
85
- c.desc 'filter result by Manven specific GroupId'
76
+ c.desc 'filter result by Maven specific GroupId'
86
77
  c.flag "group-id"
87
78
 
88
79
  c.desc "get next N results, by default it only return 30 results."
89
- c.flag [:page, 'page-number']
80
+ c.flag [:page, 'page-number'], :default_value => 1
90
81
 
91
82
  c.desc "change output format"
92
83
  c.flag [:format,'format-name'], :default_value => "pretty"
@@ -98,26 +89,7 @@ command :search do |c|
98
89
  c.action do |global_options, options, args|
99
90
  help_now!("the search term is mandatory.".foreground(:red)) if args.empty?
100
91
  search_term = args.shift
101
- response = Veye::Package::Search.search(search_term,
102
- options[:language],
103
- options["group-id"],
104
- options[:page])
105
-
106
- if response.success == false or response.data["results"].empty?
107
- error_msg = sprintf(
108
- "No results for `%s` %s",
109
- "#{search_term}".foreground(:yellow),
110
- (options[:language].nil?)? "" : " for language: #{options[:language]}"
111
- )
112
- exit_now!(error_msg)
113
- end
114
-
115
- Veye::Package::Search.format(response.data["results"], options[:format])
116
- if options[:pagination]
117
- printf("\n#-- pagination data ------------------\n")
118
- Veye::Pagination::Show.format response.data['paging'], options[:format]
119
- end
120
-
92
+ Veye::Package::Search.search(search_term, options)
121
93
  end
122
94
  end
123
95
 
@@ -130,17 +102,7 @@ command :info do |c|
130
102
  c.action do |global_options, options, args|
131
103
  help_now!("package_key is missing".foreground(:red)) if args.empty?
132
104
  package_key = args.shift
133
- response = Veye::Package::Info.search(package_key)
134
-
135
- unless response.success
136
- error_msg = sprintf(
137
- "Didnt find any package with product_key: `%s`",
138
- "#{package_key}".foreground(:yellow)
139
- )
140
- exit_now!(error_msg)
141
- end
142
-
143
- Veye::Package::Info.format(response.data, options[:format])
105
+ response = Veye::Package::Info.get_package(package_key, options)
144
106
  end
145
107
  end
146
108
 
@@ -150,23 +112,12 @@ arg_name 'product_file'
150
112
  command :check do |c|
151
113
  c.desc "change output format"
152
114
  c.flag [:format, 'format-name'], :default_value => 'pretty'
153
-
115
+
154
116
  c.action do |global_options, options, args|
155
- help_now!("File of project is unspecified.".foreground(:red)) if args.empty?
117
+ help_now!("Project file is missing.".foreground(:red)) if args.empty?
156
118
  file_name = args.shift
157
- response = Veye::Project::Check.upload(file_name, global_options[:api_key])
158
- if response.success == false
159
- exit_now!("File upload failed.\n #{response.message}\n".foreground(:red))
160
- end
161
-
162
- if response.success
163
- Veye::Project::Check.format_dependencies(
164
- response.data['dependencies'],
165
- options[:format]
166
- )
167
- else
168
- exit_now!("Didnt get dependency info from API: #{response.message}")
169
- end
119
+ api_key = global_options[:api_key]
120
+ response = Veye::Project::Check.upload(file_name, api_key, options)
170
121
  end
171
122
  end
172
123
 
@@ -176,19 +127,23 @@ arg_name 'subcommand'
176
127
  command :projects do |c|
177
128
  c.desc "change output format"
178
129
  c.flag [:format, 'format-name'], :default_value => 'pretty'
179
-
130
+
180
131
  c.desc "show all projects"
181
132
  c.command :list do |list|
182
133
  list.action do |global_options, options, args|
183
134
  api_key = global_options[:api_key]
184
- response = Veye::Project::Check.get_list(api_key)
185
-
186
- if response.success == false
187
- error_msg = "Didnt get list of projects: \n #{response.message.foreground(:red)}"
188
- exit_now!(error_msg)
189
- end
190
-
191
- Veye::Project::Check.format(response.data, options[:format])
135
+ Veye::Project::Check.get_list(api_key, options)
136
+ end
137
+ end
138
+
139
+ c.desc "show project info"
140
+ c.arg_name "project_key"
141
+ c.command :info do |info|
142
+ info.action do |global_options, options, args|
143
+ help_now!("Project_key is unspecified".foreground(:red)) if args.empty?
144
+ proj_key = args.shift
145
+ api_key = global_options[:api_key]
146
+ Veye::Project::Check.get_project(proj_key, api_key, options)
192
147
  end
193
148
  end
194
149
 
@@ -199,55 +154,20 @@ command :projects do |c|
199
154
  help_now!("The filepath is missing.".foreground(:red)) if args.empty?
200
155
  filename = args.shift
201
156
  api_key = global_options[:api_key]
202
- response = Veye::Project::Check.upload(filename, api_key)
203
- unless response.success
204
- error_msg = "Uploading failed - #{response.message.foreground(:red)}"
205
- exit_now! error_msg
206
- end
207
-
208
- Veye::Project::Check.format(response.data, options[:format])
209
- Veye::Project::Check.format_dependencies(response.data['dependencies'], options[:format])
157
+ Veye::Project::Check.upload(filename, api_key, options)
210
158
  end
211
159
  end
212
-
160
+
213
161
  c.desc "update existing project file"
214
162
  c.arg_name "project_key_and_filepath", multiple: true
215
163
  c.command :update do |update|
216
164
  update.action do |global_options, options, args|
217
165
  help_now!("The project key and the filepath are missing".foreground(:red)) if args.empty?
218
166
  help_now!("One argument is missing: a project key or filepath".foreground(:red)) if args.count == 1
219
-
220
- project_key, filename = args
221
- api_key = global_options[:api_key]
222
-
223
- response = Veye::Project::Check.update(project_key, filename, api_key)
224
- unless response.success
225
- error_msg = "Uploading failed - #{response.message.foreground(:red)}"
226
- exit_now! error_msg
227
- end
228
-
229
- Veye::Project::Check.format(response.data, options[:format])
230
- Veye::Project::Check.format_dependencies(response.data['dependencies'], options[:format])
231
- end
232
- end
233
167
 
234
- c.desc "show project info"
235
- c.arg_name "project_key"
236
- c.command :show do |show|
237
- show.action do |global_options, options, args|
238
- help_now!("Project_key is unspecified".foreground(:red)) if args.empty?
239
- proj_key = args.shift
168
+ project_key, filename = args
240
169
  api_key = global_options[:api_key]
241
-
242
- response = Veye::Project::Check.get_project(proj_key, api_key)
243
- unless response.success
244
- error_msg = "Cant read information about project: `#{proj_key}`"
245
- error_msg += "- #{response.message}".foreground(:red)
246
- exit_now! error_msg
247
- end
248
-
249
- Veye::Project::Check.format(response.data, options[:format])
250
- Veye::Project::Check.format_dependencies(response.data['dependencies'], options[:format])
170
+ Veye::Project::Check.update(project_key, filename, api_key, options)
251
171
  end
252
172
  end
253
173
 
@@ -258,16 +178,7 @@ command :projects do |c|
258
178
  help_now!("Project's key is unspecified".foreground(:red)) if args.empty?
259
179
  proj_key = args.shift
260
180
  api_key = global_options[:api_key]
261
-
262
- response = Veye::Project::Licence.get_project(proj_key, api_key)
263
- unless response.success
264
- error_msg = sprintf("%s \n %s",
265
- "Cant access a information for project `#{proj_key}`".foreground(:red),
266
- "#{response.message}")
267
- exit_now! error_msg
268
- end
269
-
270
- Veye::Project::Licence.format(response.data, options[:format])
181
+ Veye::Project::Licence.get_project(proj_key, api_key, options)
271
182
  end
272
183
  end
273
184
 
@@ -278,14 +189,7 @@ command :projects do |c|
278
189
  help_now!("Project is missing".foreground(:red)) if args.empty?
279
190
  proj_key = args.shift
280
191
  api_key = global_options[:api_key]
281
-
282
- response = Veye::Project::Check.delete_project(proj_key, api_key)
283
- unless response.success
284
- printf("Cant delete - %s\n%s\n", response.message.foreground(:red),
285
- response.data['error'])
286
- else
287
- printf "Deleted\n".foreground(:green)
288
- end
192
+ Veye::Project::Check.delete_project(proj_key, api_key)
289
193
  end
290
194
  end
291
195
  end
@@ -302,16 +206,7 @@ command :products do |c|
302
206
  help_now!("Product's key is missing".foreground(:red)) if args.empty?
303
207
  prod_key = args.shift
304
208
  api_key = global_options[:api_key]
305
-
306
- response = Veye::Package::Follow.get_follow_status(prod_key, api_key)
307
- unless response.success
308
- error_msg = sprintf("Checking state of following failed: %s \n %s",
309
- "#{response.message}".foreground(:red),
310
- "#{response.data}")
311
- exit_now! error_msg
312
- end
313
-
314
- printf "#{response.data}\n".foreground(:green)
209
+ Veye::Package::Follow.get_follow_status(prod_key, api_key)
315
210
  end
316
211
  end
317
212
 
@@ -322,15 +217,7 @@ command :products do |c|
322
217
  help_now!("Product's key is missing".foreground(:red)) if args.empty?
323
218
  prod_key = args.shift
324
219
  api_key = global_options[:api_key]
325
-
326
- response = Veye::Package::Follow.follow(prod_key, api_key)
327
- unless response.success
328
- error_msg = sprintf("Following failed: %s \n %s",
329
- "#{response.message}".foreground(:red),
330
- "#{response.data}")
331
- exit_now! error_msg
332
- end
333
- printf "#{response.data}\n".foreground(:green)
220
+ Veye::Package::Follow.follow(prod_key, api_key)
334
221
  end
335
222
  end
336
223
 
@@ -341,16 +228,7 @@ command :products do |c|
341
228
  help_now!("Product's key is missing".foreground(:red)) if args.empty?
342
229
  prod_key = args.shift
343
230
  api_key = global_options[:api_key]
344
-
345
- response = Veye::Package::Follow.unfollow(prod_key, api_key)
346
- unless response.success
347
- error_msg = sprintf("Unfollowing failed: %s \n %s",
348
- "#{response.message}".foreground(:red),
349
- "#{response.data}")
350
- exit_now! error_msg
351
- end
352
-
353
- printf "#{response.data}\n".foreground(:green)
231
+ Veye::Package::Follow.unfollow(prod_key, api_key)
354
232
  end
355
233
  end
356
234
  end
@@ -361,48 +239,124 @@ command :me do |c|
361
239
  c.desc "change output format"
362
240
  c.flag [:format, 'format-name'], :default_value => 'pretty'
363
241
 
242
+ c.desc "pagination number"
243
+ c.flag [:page, 'page-number'], :default_value => 1
244
+
245
+ c.desc "show paging information"
246
+ c.switch [:pagination, 'show-pagination'],
247
+ :default_value => true,
248
+ :negatable => true
249
+
364
250
  c.desc "get profile information"
365
251
  c.action do |global_options, options, args|
366
252
  api_key = global_options[:api_key]
367
- response = Veye::User::Me.get_profile(api_key)
368
- unless response.success
369
- error_msg = sprintf("Failed to read your profile data: %s\n%s\n",
370
- "#{response.message}".foreground(:red),
371
- "#{response.data}")
372
- exit_now! error_msg
373
- end
374
-
375
- Veye::User::Me.format_profile response.data, options[:format]
253
+ Veye::User::Me.get_profile(api_key, options)
376
254
  end
377
255
 
378
256
  c.desc "get your favorite packages"
379
257
  c.command :favorites do |favorites|
380
- favorites.desc "pagination number"
381
- favorites.flag [:page, 'page-number']
258
+ favorites.action do |global_options, options, args|
259
+ api_key = global_options[:api_key]
260
+ Veye::User::Me.get_favorites(api_key, options)
261
+ end
262
+ end
263
+ end
264
+
265
+ desc "work with github repositories"
266
+ command :github do |c|
267
+ c.desc "change output format"
268
+ c.flag [:format, 'format-name'], :default_value => 'pretty'
269
+ c.desc "page number for pagination"
270
+ c.flag [:page, 'page-number'], :default_value => 1
271
+
272
+ c.desc "show paging information"
273
+ c.switch [:pagination, 'show-pagination'], :default_value => true,
274
+ :negatable => true
382
275
 
383
- favorites.desc "show paging information"
384
- favorites.switch [:pagination, 'show-pagination'], :default_value => true,
385
- :negatable => true
276
+ c.desc "filter by language"
277
+ c.flag [:lang, :language]
386
278
 
387
- favorites.action do |global_options, options, args|
279
+ c.desc "filter by user"
280
+ c.flag [:user]
281
+
282
+ c.desc "specify branch"
283
+ c.flag [:branch], :default_value => "master"
284
+
285
+ c.action do |global_options, options, args|
286
+ help_now!
287
+ end
288
+
289
+ c.desc "list all your repositories"
290
+ c.command :list do |list|
291
+ list.desc "filter by visibility, (accepts: true/false)"
292
+ list.flag [:private]
293
+
294
+ list.desc "filter by name of organisation"
295
+ list.flag [:org, 'org-name']
296
+
297
+ list.desc "filter by type of organisation"
298
+ list.flag ['org-type']
299
+
300
+ list.action do |global_options, options, args|
388
301
  api_key = global_options[:api_key]
389
- response = Veye::User::Me.get_favorites(api_key, options[:page])
390
-
391
- unless response.success
392
- error_msg = sprintf("Failed to read your profile data: %s\n%s\n",
393
- "#{response.message}".foreground(:red),
394
- "#{response.data}")
395
- exit_now! error_msg
396
- end
397
-
398
- Veye::User::Me.format_favorites response.data['favorites'], options[:format]
399
- if options[:pagination]
400
- printf("\n#-- pagination data ------------------\n")
401
- Veye::Pagination::Show.format response.data['paging'], options[:format]
402
- end
302
+ response = Veye::Github::List.get_list(api_key, options)
403
303
  end
304
+ end #end-of-list
305
+
306
+ c.desc "update list of repositories"
307
+ c.command :sync do |sync|
308
+ sync.desc "if true, then reloads all collections"
309
+ sync.switch [:force], :default_value => false
404
310
 
311
+ sync.action do |global_options, options, args|
312
+ api_key = global_options[:api_key]
313
+ response = Veye::Github::Sync.import_all(api_key, options)
314
+ end
315
+ end #end of sync
316
+
317
+ c.desc "search repositories on github"
318
+ c.arg_name "search_term"
319
+ c.command :search do |gsearch|
320
+ gsearch.action do |global_options, options, args|
321
+ help_now!("the search term is mandatory.".foreground(:red)) if args.empty?
322
+ search_term = args.shift
323
+ api_key = global_options[:api_key]
324
+ Veye::Github::Search.search(api_key, search_term, options)
325
+ end
326
+ end # end of search
327
+
328
+ c.desc "show more specific information for the repository"
329
+ c.arg_name "repo_name"
330
+ c.command :info do |info|
331
+ info.action do |global_options, options, args|
332
+ help_now!("the name of repository is mandatory".foreground(:red)) if args.empty?
333
+ repo_name = args.shift
334
+ api_key = global_options[:api_key]
335
+ Veye::Github::Info.get_repo(api_key, repo_name, options)
336
+ end
337
+ end # end of info
338
+
339
+ c.desc "import project from github repository"
340
+ c.arg_name "repo_name"
341
+ c.command :import do |imp|
342
+ imp.action do |global_options, options, args|
343
+ help_now!("the name of repository is mandatory".foreground(:red)) if args.empty?
344
+ repo_name = args.shift
345
+ api_key = global_options[:api_key]
346
+ Veye::Github::Import.import_repo(api_key, repo_name, options)
347
+ end
348
+ end # end of import
349
+
350
+ c.desc "remove imported project"
351
+ c.arg_name "repo_name"
352
+ c.command :delete do |del|
353
+ del.action do |global_options, options, args|
354
+ help_now!("the name of repository is mandatory".foreground(:red)) if args.empty?
355
+ repo_name = args.shift
356
+ api_key = global_options[:api_key]
357
+ Veye::Github::Delete.delete_repo(api_key, repo_name, options)
358
+ end
405
359
  end
406
- end
360
+ end #end of github comamnd
407
361
 
408
362
  exit run(ARGV)
@@ -0,0 +1,24 @@
1
+
2
+ class BaseExecutor
3
+ extend FormatHelpers
4
+ extend RepoHelpers
5
+
6
+ def self.show_results(output_formats, results, options = {}, paging = nil)
7
+ format = options[:format]
8
+ self.supported_format?(output_formats, format)
9
+ formatter = output_formats[format]
10
+
11
+ formatter.before
12
+ formatter.format(results)
13
+ formatter.after(paging, options[:pagination])
14
+ end
15
+
16
+ def self.catch_request_error(response, msg)
17
+ if response.nil? or not response.success
18
+ error_msg = sprintf("%s\n%s\n",
19
+ "#{msg}".foreground(:red),
20
+ "#{response.data}")
21
+ exit_now! error_msg
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,35 @@
1
+ require_relative '../base_executor.rb'
2
+
3
+ module Veye
4
+ module Github
5
+ class Delete < BaseExecutor
6
+
7
+ def self.delete_repo(api_key, repo_name, options)
8
+ github_api = API::Resource.new(RESOURCE_PATH)
9
+ qparams = {
10
+ :params => {
11
+ :api_key => api_key,
12
+ :branch => options[:branch]
13
+ }
14
+ }
15
+ response_data = nil
16
+ safe_repo_key = self.encode_repo_key(repo_name)
17
+ github_api.resource["/#{safe_repo_key}"].delete(qparams) do |response, request, result|
18
+ response_data = API::JSONResponse.new(request, result, response)
19
+ end
20
+ show_result(response_data)
21
+ response_data
22
+ end
23
+
24
+ def self.show_result(response)
25
+ unless response.success
26
+ printf("Cant delete - %s\n%s\n", response.message.foreground(:red),
27
+ response.data['error'])
28
+ else
29
+ printf "Deleted\n".foreground(:green)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
@@ -0,0 +1,32 @@
1
+ require_relative '../views/github.rb'
2
+ require_relative '../base_executor.rb'
3
+
4
+ module Veye
5
+ module Github
6
+ class Import < 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.import_repo(api_key, repo_name, options)
15
+ github_api = API::Resource.new(RESOURCE_PATH)
16
+ results = nil
17
+ params = {api_key: api_key, branch: options[:branch]}
18
+ repo_name = encode_repo_key(repo_name)
19
+
20
+ github_api.resource["/#{repo_name}"].post(params) do |response, request, result|
21
+ results = API::JSONResponse.new(request, result, response)
22
+ end
23
+
24
+ catch_request_error(results, "Can not find repository `#{repo_name}`")
25
+ show_results(@@output_formats, results.data, options, nil)
26
+ results
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+