ghedsh 1.1.40 → 2.3.8
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/.editorconfig +12 -0
- data/.github/ISSUE_TEMPLATE.md +31 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +30 -0
- data/.gitignore +12 -1
- data/.rspec +3 -0
- data/CODE_OF_CONDUCT.md +46 -0
- data/Gemfile +5 -0
- data/LICENSE +165 -0
- data/README.md +6 -93
- data/Rakefile +3 -9
- data/bin/ghedsh +2 -1
- data/file_templates/add_members_template.json +12 -0
- data/file_templates/create_teams_template.json +19 -0
- data/file_templates/invite_outside_collabs.json +12 -0
- data/file_templates/remove_members_template.json +12 -0
- data/ghedsh.gemspec +3 -2
- data/lib/actions/orgs.rb +636 -842
- data/lib/actions/system.rb +212 -278
- data/lib/actions/teams.rb +15 -229
- data/lib/actions/user.rb +304 -12
- data/lib/commands.rb +465 -0
- data/lib/common.rb +15 -0
- data/lib/context.rb +42 -0
- data/lib/helpers.rb +147 -0
- data/lib/interface.rb +71 -733
- data/lib/plugin_loader.rb +43 -0
- data/lib/version.rb +1 -1
- data/spec/cli_spec.rb +30 -0
- data/spec/spec_helper.rb +106 -0
- metadata +38 -10
- data/docs/Javier-clemente-MemoriaTFG-ghedsh.pdf +0 -0
- data/lib/actions/help.rb +0 -357
- data/lib/actions/repo.rb +0 -832
- data/spec/spec.rb +0 -1
data/lib/actions/system.rb
CHANGED
@@ -3,469 +3,404 @@ require 'fileutils'
|
|
3
3
|
require 'octokit'
|
4
4
|
require 'optparse'
|
5
5
|
require 'json'
|
6
|
-
require 'actions/system'
|
7
6
|
require 'version'
|
7
|
+
require 'rainbow'
|
8
|
+
require 'tty-spinner'
|
9
|
+
require 'tty-prompt'
|
8
10
|
|
9
11
|
class Sys
|
10
12
|
attr_reader :client
|
11
13
|
attr_reader :memory
|
12
|
-
LIST = [
|
13
|
-
|
14
|
-
'add group','rm repository ', 'new people info ', 'private ', 'people info ', 'new issue comment ', "rm people info", "change repo",'add students','new relation','rm clone files'].sort
|
14
|
+
LIST = %w[clear exit repos new_repo new_team rm_team rm_repo new_issue issues clone invite_outside_collaborators
|
15
|
+
rm_cloned new_eval foreach foreach_try files commits orgs invite_member_from_file invite_member people teams cd open bash].sort
|
15
16
|
|
16
|
-
def initialize
|
17
|
-
@memory=[]
|
17
|
+
def initialize
|
18
|
+
@memory = []
|
18
19
|
end
|
19
20
|
|
20
21
|
# CACHE READLINE METHODS
|
21
22
|
def add_history(value)
|
22
23
|
@memory.push(value)
|
23
|
-
|
24
|
+
write_memory
|
24
25
|
end
|
25
26
|
|
26
27
|
def quit_history(value)
|
27
28
|
@memory.pop(value)
|
28
|
-
|
29
|
+
write_memory
|
29
30
|
end
|
30
31
|
|
31
|
-
def add_history_str(mode,value)
|
32
|
-
if mode==1
|
32
|
+
def add_history_str(mode, value)
|
33
|
+
if mode == 1
|
33
34
|
value.each do |i|
|
34
35
|
@memory.push(i[0])
|
35
|
-
|
36
|
+
write_memory
|
36
37
|
end
|
37
38
|
end
|
38
|
-
if mode==2
|
39
|
+
if mode == 2
|
39
40
|
value.each do |i|
|
40
41
|
@memory.push(i)
|
41
|
-
|
42
|
+
write_memory
|
42
43
|
end
|
43
44
|
end
|
44
45
|
end
|
46
|
+
|
45
47
|
def write_memory
|
46
|
-
history=(LIST
|
47
|
-
comp = proc { |s| history.grep(
|
48
|
-
Readline.completion_append_character =
|
48
|
+
history = (LIST + @memory).sort
|
49
|
+
comp = proc { |s| history.grep(/^#{Regexp.escape(s)}/) }
|
50
|
+
Readline.completion_append_character = ''
|
49
51
|
Readline.completion_proc = comp
|
50
52
|
end
|
51
53
|
|
52
|
-
def load_memory(path,config)
|
53
|
-
if File.exist?("#{path}/ghedsh-#{config[
|
54
|
-
source=File.read("#{path}/ghedsh-#{config[
|
55
|
-
s=source.split("\n")
|
54
|
+
def load_memory(path, config)
|
55
|
+
if File.exist?("#{path}/ghedsh-#{config['User']}-history")
|
56
|
+
source = File.read("#{path}/ghedsh-#{config['User']}-history")
|
57
|
+
s = source.split("\n")
|
56
58
|
s.each do |i|
|
57
59
|
Readline::HISTORY.push(i)
|
58
60
|
end
|
59
61
|
else
|
60
|
-
File.write("#{path}/ghedsh-#{config[
|
62
|
+
File.write("#{path}/ghedsh-#{config['User']}-history", '')
|
61
63
|
end
|
62
64
|
end
|
63
65
|
|
64
|
-
def save_memory(path,config)
|
65
|
-
mem= Readline::HISTORY.to_a
|
66
|
-
me=
|
66
|
+
def save_memory(path, config)
|
67
|
+
mem = Readline::HISTORY.to_a
|
68
|
+
me = ''
|
67
69
|
mem.each do |i|
|
68
|
-
me=me+i.to_s+"\n"
|
70
|
+
me = me + i.to_s + "\n"
|
69
71
|
end
|
70
|
-
File.write("#{path}/ghedsh-#{config[
|
72
|
+
File.write("#{path}/ghedsh-#{config['User']}-history", me)
|
71
73
|
end
|
72
74
|
|
73
|
-
|
74
75
|
def write_initial_memory
|
75
|
-
history=LIST+memory
|
76
|
-
comp = proc { |s| LIST.grep(
|
77
|
-
|
78
|
-
Readline.completion_append_character = ""
|
76
|
+
history = LIST + memory
|
77
|
+
comp = proc { |s| LIST.grep(/^#{Regexp.escape(s)}/) }
|
78
|
+
Readline.completion_append_character = ''
|
79
79
|
Readline.completion_proc = comp
|
80
80
|
end
|
81
81
|
# END CACHE READLINE METHODS
|
82
82
|
|
83
|
-
#Loading initial configure, if ghedsh path doesnt exist, call the create method
|
84
|
-
def load_config(configure_path,argv_token)
|
83
|
+
# Loading initial configure, if ghedsh path doesnt exist, call the create method
|
84
|
+
def load_config(configure_path, argv_token)
|
85
85
|
if File.exist?(configure_path)
|
86
|
-
if argv_token
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
86
|
+
token = if argv_token.nil?
|
87
|
+
get_login_token(configure_path)
|
88
|
+
else
|
89
|
+
argv_token
|
90
|
+
end
|
91
91
|
json = File.read("#{configure_path}/ghedsh-cache.json")
|
92
|
-
config=JSON.parse(json)
|
92
|
+
config = JSON.parse(json)
|
93
93
|
|
94
|
-
if token
|
95
|
-
@client=
|
96
|
-
config[
|
97
|
-
|
94
|
+
if !token.nil?
|
95
|
+
@client = login(token)
|
96
|
+
config['User'] = @client.login
|
97
|
+
config['user_url'] = @client.web_endpoint.to_s << @client.login.to_s
|
98
|
+
userslist = load_users(configure_path)
|
98
99
|
|
99
|
-
if userslist[
|
100
|
-
|
101
|
-
end
|
102
|
-
if argv_token!=nil
|
103
|
-
self.save_token(configure_path,argv_token)
|
100
|
+
if userslist['users'].detect { |f| f[(config['User']).to_s] }.nil?
|
101
|
+
add_users(configure_path, (config['User']).to_s => token)
|
104
102
|
end
|
103
|
+
save_token(configure_path, argv_token) unless argv_token.nil?
|
105
104
|
return config
|
106
105
|
else
|
107
|
-
return
|
106
|
+
return set_loguin_data_sh(config, configure_path)
|
108
107
|
end
|
109
108
|
else
|
110
|
-
|
111
|
-
load_config(configure_path,argv_token)
|
109
|
+
create_config(configure_path)
|
110
|
+
load_config(configure_path, argv_token)
|
112
111
|
end
|
113
112
|
end
|
114
113
|
|
115
|
-
#loading configure with --user mode
|
114
|
+
# loading configure with --user mode
|
116
115
|
def load_config_user(configure_path, user)
|
117
116
|
if File.exist?(configure_path)
|
118
|
-
list=
|
119
|
-
userFound=list[
|
120
|
-
if userFound
|
121
|
-
|
117
|
+
list = load_users(configure_path)
|
118
|
+
userFound = list['users'].detect { |f| f[user.to_s] }
|
119
|
+
if !userFound.nil?
|
120
|
+
clear_cache(configure_path)
|
122
121
|
json = File.read("#{configure_path}/ghedsh-cache.json")
|
123
|
-
config=JSON.parse(json)
|
124
|
-
@client=
|
125
|
-
config[
|
126
|
-
|
122
|
+
config = JSON.parse(json)
|
123
|
+
@client = login(userFound[user.to_s])
|
124
|
+
config['User'] = @client.login
|
125
|
+
config['user_url'] = @client.web_endpoint.to_s << @client.login.to_s
|
126
|
+
save_token(configure_path, userFound[user.to_s])
|
127
127
|
return config
|
128
128
|
else
|
129
|
-
puts
|
129
|
+
puts 'User not found'
|
130
130
|
return nil
|
131
131
|
end
|
132
132
|
else
|
133
133
|
puts "No user's history is available"
|
134
|
-
|
134
|
+
nil
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
138
138
|
def load_users(path)
|
139
|
-
json=File.read("#{path}/ghedsh-users.json")
|
140
|
-
users=JSON.parse(json)
|
141
|
-
|
139
|
+
json = File.read("#{path}/ghedsh-users.json")
|
140
|
+
users = JSON.parse(json)
|
141
|
+
users
|
142
142
|
end
|
143
143
|
|
144
|
-
# USER=1
|
145
|
-
# ORGS=2
|
146
|
-
# USER_REPO=10
|
147
|
-
# ORGS_REPO=3
|
148
|
-
# TEAM=4
|
149
|
-
# ASSIG=6
|
150
|
-
# TEAM_REPO=5
|
151
|
-
|
152
144
|
def return_deep(path)
|
153
145
|
json = File.read("#{path}/ghedsh-cache.json")
|
154
|
-
cache=JSON.parse(json)
|
155
|
-
deep=
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
deep=5
|
160
|
-
else
|
161
|
-
deep=4
|
162
|
-
end
|
163
|
-
when cache["Team"]==nil
|
164
|
-
if cache["Org"]!=nil
|
165
|
-
if cache["Repo"]!=nil
|
166
|
-
deep=3
|
167
|
-
else
|
168
|
-
if cache["Assig"]!=nil
|
169
|
-
deep=6
|
170
|
-
else
|
171
|
-
deep=2
|
172
|
-
end
|
173
|
-
end
|
174
|
-
else
|
175
|
-
if cache["Repo"]!=nil
|
176
|
-
deep=10
|
177
|
-
else
|
178
|
-
deep=1
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
return deep
|
146
|
+
cache = JSON.parse(json)
|
147
|
+
deep = User
|
148
|
+
return deep = Team unless cache['Team'].nil?
|
149
|
+
return deep = Organization unless cache['Org'].nil?
|
150
|
+
deep
|
183
151
|
end
|
184
152
|
|
185
|
-
def add_users(path,data)
|
186
|
-
json=File.read("#{path}/ghedsh-users.json")
|
187
|
-
users=JSON.parse(json)
|
188
|
-
users[
|
189
|
-
File.write("#{path}/ghedsh-users.json",users.to_json)
|
153
|
+
def add_users(path, data)
|
154
|
+
json = File.read("#{path}/ghedsh-users.json")
|
155
|
+
users = JSON.parse(json)
|
156
|
+
users['users'].push(data)
|
157
|
+
File.write("#{path}/ghedsh-users.json", users.to_json)
|
190
158
|
end
|
191
159
|
|
192
|
-
def save_token(path,token)
|
193
|
-
json=File.read("#{path}/ghedsh-users.json")
|
194
|
-
login=JSON.parse(json)
|
195
|
-
login[
|
196
|
-
File.write("#{path}/ghedsh-users.json",login.to_json)
|
160
|
+
def save_token(path, token)
|
161
|
+
json = File.read("#{path}/ghedsh-users.json")
|
162
|
+
login = JSON.parse(json)
|
163
|
+
login['login'] = token
|
164
|
+
File.write("#{path}/ghedsh-users.json", login.to_json)
|
197
165
|
end
|
198
166
|
|
199
167
|
def get_login_token(path)
|
200
|
-
json=File.read("#{path}/ghedsh-users.json")
|
201
|
-
us=JSON.parse(json)
|
202
|
-
|
168
|
+
json = File.read("#{path}/ghedsh-users.json")
|
169
|
+
us = JSON.parse(json)
|
170
|
+
us['login']
|
203
171
|
end
|
204
172
|
|
205
173
|
def login(token)
|
206
174
|
begin
|
207
|
-
user=Octokit::Client.new(:
|
208
|
-
user.auto_paginate=true #show all pages of any query
|
209
|
-
rescue
|
210
|
-
puts
|
175
|
+
user = Octokit::Client.new(access_token: token) # per_page:100
|
176
|
+
user.auto_paginate = true # show all pages of any query
|
177
|
+
rescue StandardError
|
178
|
+
puts 'Oauth error'
|
211
179
|
end
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
180
|
+
|
181
|
+
user
|
182
|
+
end
|
183
|
+
|
184
|
+
# initial program configure
|
185
|
+
def set_loguin_data_sh(config, configure_path)
|
186
|
+
prompt = TTY::Prompt.new(enable_color: true)
|
187
|
+
username = prompt.ask('Username:', required: true)
|
188
|
+
passwd = prompt.ask('Password:', echo: false)
|
189
|
+
|
190
|
+
client = Octokit::Client.new \
|
191
|
+
login: username,
|
192
|
+
password: passwd
|
193
|
+
response = client.create_authorization(scopes: ['user', 'repo', 'admin:org', 'admin:public_key', 'admin:repo_hook', 'admin:org_hook', 'gist', 'notifications', 'delete_repo', 'admin:gpg_key'],
|
194
|
+
note: 'GitHub Education Shell auth token')
|
195
|
+
token = response[:token]
|
196
|
+
us = login(token)
|
197
|
+
userhash = {}
|
198
|
+
|
199
|
+
unless us.nil?
|
200
|
+
puts Rainbow("Successful login as #{us.login}\n").green
|
201
|
+
config['User'] = us.login
|
202
|
+
config['user_url'] = us.web_endpoint << us.login
|
203
|
+
|
204
|
+
add_users(configure_path, (config['User']).to_s => token)
|
205
|
+
save_token(configure_path, token)
|
206
|
+
@client = us
|
228
207
|
return config
|
229
208
|
end
|
230
209
|
end
|
231
210
|
|
232
211
|
def load_assig_db(path)
|
233
|
-
if
|
212
|
+
if File.exist?(path) == true
|
234
213
|
if File.exist?("#{path}/assignments.json")
|
235
214
|
json = File.read("#{path}/assignments.json")
|
236
215
|
else
|
237
|
-
#{"Organization":[{"name":null,"assignments":[{"name":null,"teams":{"teamid":null}}]}]}
|
238
|
-
con={:
|
239
|
-
File.write("#{path}/assignments.json",con.to_json)
|
216
|
+
# {"Organization":[{"name":null,"assignments":[{"name":null,"teams":{"teamid":null}}]}]}
|
217
|
+
con = { orgs: [] }
|
218
|
+
File.write("#{path}/assignments.json", con.to_json)
|
240
219
|
json = File.read("#{path}/assignments.json")
|
241
220
|
end
|
242
221
|
end
|
243
|
-
config=JSON.parse(json)
|
244
|
-
|
222
|
+
config = JSON.parse(json)
|
223
|
+
config
|
245
224
|
end
|
246
225
|
|
247
226
|
def load_people_db(path)
|
248
|
-
if
|
227
|
+
if File.exist?(path) == true
|
249
228
|
if File.exist?("#{path}/ghedsh-people.json")
|
250
229
|
json = File.read("#{path}/ghedsh-people.json")
|
251
230
|
else
|
252
|
-
con={:
|
253
|
-
File.write("#{path}/ghedsh-people.json",con.to_json)
|
231
|
+
con = { orgs: [] }
|
232
|
+
File.write("#{path}/ghedsh-people.json", con.to_json)
|
254
233
|
json = File.read("#{path}/ghedsh-people.json")
|
255
234
|
end
|
256
235
|
end
|
257
|
-
config=JSON.parse(json)
|
258
|
-
|
236
|
+
config = JSON.parse(json)
|
237
|
+
config
|
259
238
|
end
|
260
239
|
|
261
240
|
def load_script(path)
|
262
|
-
if
|
263
|
-
script = File.read(
|
264
|
-
|
241
|
+
if File.exist?(path) == true
|
242
|
+
script = File.read(path.to_s)
|
243
|
+
script.split("\n")
|
265
244
|
else
|
266
|
-
puts
|
267
|
-
|
245
|
+
puts 'No script is found with that name'
|
246
|
+
[]
|
268
247
|
end
|
269
248
|
end
|
270
249
|
|
271
250
|
def load_groups(path)
|
272
|
-
if
|
251
|
+
if File.exist?(path) == true
|
273
252
|
if File.exist?("#{path}/groups.json")
|
274
253
|
json = File.read("#{path}/groups.json")
|
275
254
|
else
|
276
|
-
con={:
|
277
|
-
File.write("#{path}/groups.json",con.to_json)
|
255
|
+
con = { orgs: [] }
|
256
|
+
File.write("#{path}/groups.json", con.to_json)
|
278
257
|
json = File.read("#{path}/groups.json")
|
279
258
|
end
|
280
259
|
else
|
281
|
-
#path="/db/assignments.json"
|
282
|
-
#json = File.read(path)
|
260
|
+
# path="/db/assignments.json"
|
261
|
+
# json = File.read(path)
|
283
262
|
end
|
284
|
-
|
285
|
-
|
263
|
+
config = JSON.parse(json)
|
264
|
+
config
|
286
265
|
end
|
287
266
|
|
288
|
-
def refresh_clonefile(path,list)
|
289
|
-
if
|
290
|
-
File.write("#{path}/ghedsh-clonedfiles",list)
|
291
|
-
end
|
267
|
+
def refresh_clonefile(path, list)
|
268
|
+
File.write("#{path}/ghedsh-clonedfiles", list) if File.exist?(path) == true
|
292
269
|
end
|
293
270
|
|
294
271
|
def load_clonefile(path)
|
295
|
-
if
|
272
|
+
if File.exist?(path) == true
|
296
273
|
if File.exist?("#{path}/ghedsh-clonedfiles")
|
297
|
-
files=File.read("#{path}/ghedsh-clonedfiles")
|
298
|
-
files=files.delete(
|
299
|
-
files=files.split(
|
300
|
-
|
274
|
+
files = File.read("#{path}/ghedsh-clonedfiles")
|
275
|
+
files = files.delete('['); files = files.delete(']')
|
276
|
+
files = files.split(',')
|
277
|
+
files
|
301
278
|
else
|
302
|
-
File.write("#{path}/ghedsh-clonedfiles",
|
303
|
-
|
279
|
+
File.write("#{path}/ghedsh-clonedfiles", '')
|
280
|
+
[]
|
304
281
|
end
|
305
282
|
end
|
306
283
|
end
|
307
284
|
|
308
285
|
def create_temp(path)
|
309
|
-
if
|
310
|
-
FileUtils.mkdir_p(path)
|
311
|
-
end
|
286
|
+
FileUtils.mkdir_p(path) if File.exist?(path) == false
|
312
287
|
end
|
313
288
|
|
314
289
|
def remove_temp(path)
|
315
|
-
if
|
316
|
-
system("rm -rf #{path}")
|
317
|
-
end
|
290
|
+
system("rm -rf #{path}") if File.exist?(path) == true
|
318
291
|
end
|
319
292
|
|
320
|
-
def save_groups(path,data)
|
321
|
-
File.write("#{path}/groups.json",data.to_json)
|
293
|
+
def save_groups(path, data)
|
294
|
+
File.write("#{path}/groups.json", data.to_json)
|
322
295
|
end
|
323
296
|
|
324
|
-
def save_assigs(path,data)
|
325
|
-
File.write("#{path}/assignments.json",data.to_json)
|
297
|
+
def save_assigs(path, data)
|
298
|
+
File.write("#{path}/assignments.json", data.to_json)
|
326
299
|
end
|
327
300
|
|
328
|
-
def save_people(path,data)
|
329
|
-
File.write("#{path}/ghedsh-people.json",data.to_json)
|
301
|
+
def save_people(path, data)
|
302
|
+
File.write("#{path}/ghedsh-people.json", data.to_json)
|
330
303
|
end
|
331
304
|
|
332
|
-
#creates all ghedsh local stuff
|
305
|
+
# creates all ghedsh local stuff
|
333
306
|
def create_config(configure_path)
|
334
|
-
con={:
|
335
|
-
us={:
|
307
|
+
con = { User: nil, user_url: nil, Org: nil, org_url: nil, Repo: nil, repo_url: nil, Team: nil, team_url: nil, TeamID: nil }
|
308
|
+
us = { login: nil, users: [] }
|
336
309
|
FileUtils.mkdir_p(configure_path)
|
337
|
-
File.write("#{configure_path}/ghedsh-cache.json",con.to_json)
|
338
|
-
File.write("#{configure_path}/ghedsh-users.json",us.to_json)
|
339
|
-
puts "
|
310
|
+
File.write("#{configure_path}/ghedsh-cache.json", con.to_json)
|
311
|
+
File.write("#{configure_path}/ghedsh-users.json", us.to_json)
|
312
|
+
puts "Configuration files created in #{configure_path}"
|
340
313
|
end
|
341
314
|
|
342
|
-
|
343
|
-
|
344
|
-
File.write("#{path}/ghedsh-cache.json",data.to_json)
|
315
|
+
def save_cache(path, data)
|
316
|
+
File.write("#{path}/ghedsh-cache.json", data.to_json)
|
345
317
|
end
|
346
318
|
|
347
319
|
def clear_cache(path)
|
348
|
-
con={:
|
349
|
-
File.write("#{path}/ghedsh-cache.json",con.to_json)
|
320
|
+
con = { User: nil, user_url: nil, Org: nil, org_url: nil, Repo: nil, repo_url: nil, Team: nil, team_url: nil, TeamID: nil }
|
321
|
+
File.write("#{path}/ghedsh-cache.json", con.to_json)
|
350
322
|
end
|
351
323
|
|
352
|
-
def save_db(path,data)
|
324
|
+
def save_db(path, data)
|
353
325
|
File.write("#{path}/db/assignments.json", data.to_json)
|
354
326
|
end
|
355
327
|
|
356
|
-
def save_users(path,data)
|
357
|
-
File.write("#{path}/ghedsh-users.json",data.to_json)
|
328
|
+
def save_users(path, data)
|
329
|
+
File.write("#{path}/ghedsh-users.json", data.to_json)
|
358
330
|
end
|
359
331
|
|
360
332
|
def execute_bash(exp)
|
361
333
|
system(exp)
|
362
334
|
end
|
363
335
|
|
364
|
-
def search_rexp(list,exp)
|
365
|
-
list= list.select{|o| o.match(/#{exp}/)}
|
366
|
-
|
336
|
+
def search_rexp(list, exp)
|
337
|
+
list = list.select { |o| o.match(/#{exp}/) }
|
338
|
+
list
|
367
339
|
end
|
368
340
|
|
369
|
-
def search_rexp_peoplehash(list,exp)
|
370
|
-
found=[]
|
371
|
-
yes=false
|
341
|
+
def search_rexp_peoplehash(list, exp)
|
342
|
+
found = []
|
343
|
+
yes = false
|
372
344
|
list.each do |i|
|
373
345
|
i.each do |j|
|
374
|
-
|
375
|
-
if j[1]
|
376
|
-
yes=true
|
377
|
-
end
|
346
|
+
unless j[1].nil?
|
347
|
+
yes = true if j[1] =~ /#{exp}/
|
378
348
|
end
|
379
349
|
end
|
380
|
-
if yes==true
|
350
|
+
if yes == true
|
381
351
|
found.push(i)
|
382
|
-
yes=false
|
383
|
-
end
|
384
|
-
end
|
385
|
-
return found
|
386
|
-
end
|
387
|
-
|
388
|
-
def parse()
|
389
|
-
options = {:user => nil, :token => nil, :path => nil}
|
390
|
-
|
391
|
-
parser = OptionParser.new do|opts|
|
392
|
-
opts.banner = "Usage: ghedsh [options]\nWith no options it runs with default configuration. Configuration files are being set in #{ENV['HOME']}/.ghedsh\n"
|
393
|
-
opts.on('-t', '--token token', 'Provides a github access token by argument.') do |token|
|
394
|
-
options[:token] = token;
|
395
|
-
end
|
396
|
-
opts.on('-c', '--configpath path', 'Give your own path for GHEDSH configuration files') do |path|
|
397
|
-
options[:configpath] = path;
|
398
|
-
end
|
399
|
-
opts.on('-u', '--user user', 'Change your user from your users list') do |user|
|
400
|
-
options[:user] = user;
|
401
|
-
end
|
402
|
-
opts.on('-v', '--version', 'Show the current version of GHEDSH') do
|
403
|
-
puts "GitHub Education Shell v#{Ghedsh::VERSION}"
|
404
|
-
exit
|
352
|
+
yes = false
|
405
353
|
end
|
406
|
-
opts.on('-h', '--help', 'Displays Help') do
|
407
|
-
puts opts
|
408
|
-
exit
|
409
|
-
end
|
410
354
|
end
|
411
|
-
|
412
|
-
begin
|
413
|
-
parser.parse!
|
414
|
-
rescue
|
415
|
-
puts "Argument error. Use ghedsh -h or ghedsh --help for more information about the usage of this program"
|
416
|
-
exit
|
417
|
-
end
|
418
|
-
return options
|
355
|
+
found
|
419
356
|
end
|
420
357
|
|
421
358
|
def createTempFile(data)
|
422
|
-
tempfile=
|
423
|
-
path="#{ENV['HOME']}/.ghedsh/#{tempfile}"
|
424
|
-
File.write(path,data)
|
425
|
-
|
359
|
+
tempfile = 'temp.txt'
|
360
|
+
path = "#{ENV['HOME']}/.ghedsh/#{tempfile}"
|
361
|
+
File.write(path, data)
|
362
|
+
path
|
426
363
|
end
|
427
364
|
|
428
|
-
def showcachelist(list,exp)
|
365
|
+
def showcachelist(list, exp)
|
429
366
|
print "\n"
|
430
|
-
rlist=[]
|
431
|
-
options=
|
432
|
-
o=Organizations.new
|
433
|
-
regex=false
|
434
|
-
|
435
|
-
|
436
|
-
if exp
|
437
|
-
regex=true
|
438
|
-
sp=exp.split('/')
|
439
|
-
exp=Regexp.new(sp[1],sp[2])
|
367
|
+
rlist = []
|
368
|
+
options = {}
|
369
|
+
o = Organizations.new
|
370
|
+
regex = false
|
371
|
+
|
372
|
+
unless exp.nil?
|
373
|
+
if exp =~ /^\//
|
374
|
+
regex = true
|
375
|
+
sp = exp.split('/')
|
376
|
+
exp = Regexp.new(sp[1], sp[2])
|
440
377
|
end
|
441
378
|
end
|
442
|
-
counter=0
|
443
|
-
allpages=true
|
379
|
+
counter = 0
|
380
|
+
allpages = true
|
444
381
|
|
445
382
|
list.each do |i|
|
446
|
-
if regex==false
|
447
|
-
if counter==100 && allpages==true
|
448
|
-
op=Readline.readline("\nThere are more results. Show next repositories (press any key) or Show all repositories (press a): ",true)
|
449
|
-
if op==
|
450
|
-
|
451
|
-
end
|
452
|
-
counter=0
|
383
|
+
if regex == false
|
384
|
+
if counter == 100 && allpages == true
|
385
|
+
op = Readline.readline("\nThere are more results. Show next repositories (press any key) or Show all repositories (press a): ", true)
|
386
|
+
allpages = false if op == 'a'
|
387
|
+
counter = 0
|
453
388
|
end
|
454
389
|
puts i
|
455
390
|
rlist.push(i)
|
456
|
-
counter
|
391
|
+
counter += 1
|
457
392
|
else
|
458
393
|
|
459
|
-
|
394
|
+
if i.match(exp)
|
460
395
|
puts i
|
461
396
|
rlist.push(i)
|
462
|
-
counter
|
463
|
-
|
397
|
+
counter += 1
|
398
|
+
end
|
464
399
|
end
|
465
400
|
end
|
466
401
|
|
467
402
|
if rlist.empty?
|
468
|
-
puts
|
403
|
+
puts 'No repository matches with that expression'
|
469
404
|
else
|
470
405
|
print "\n"
|
471
406
|
puts "Repositories found: #{rlist.size}"
|
@@ -474,20 +409,19 @@ class Sys
|
|
474
409
|
|
475
410
|
def loadfile(path)
|
476
411
|
if File.exist?(path)
|
477
|
-
mem=File.read(path)
|
478
|
-
mem=mem.split("\n")
|
479
|
-
|
412
|
+
mem = File.read(path)
|
413
|
+
mem = mem.split("\n")
|
414
|
+
mem
|
480
415
|
else
|
481
|
-
puts
|
482
|
-
|
416
|
+
puts 'File not found'
|
417
|
+
nil
|
483
418
|
end
|
484
419
|
end
|
485
420
|
|
486
421
|
def open_url(url)
|
487
|
-
|
488
|
-
when RUBY_PLATFORM.downcase.include?("darwin")
|
422
|
+
if RUBY_PLATFORM.downcase.include?('darwin')
|
489
423
|
system("open #{url}")
|
490
|
-
|
424
|
+
elsif RUBY_PLATFORM.downcase.include?('linux')
|
491
425
|
system("xdg-open #{url}")
|
492
426
|
end
|
493
427
|
end
|