Skip to content

Commit 8ebfa6e

Browse files
authored
[Feature] [#4] Automated GitHub features (#6)
* fix: #4 - lost debug instructions Signed-off-by: Pierre-Yves Lapersonne <pierreyves.lapersonne@orange.com> * chore: #4 - download of temporary repositories, better logs Signed-off-by: Pierre-Yves Lapersonne <pierreyves.lapersonne@orange.com> * feat: project - ignore for Git files in data directories Signed-off-by: Pierre-Yves Lapersonne <pierreyves.lapersonne@orange.com> * chore: #4 - better debug logs Signed-off-by: Pierre-Yves Lapersonne <pierreyves.lapersonne@orange.com> * chore: #4 - better debug logs, and less typos Signed-off-by: Pierre-Yves Lapersonne <pierreyves.lapersonne@orange.com>
1 parent da80b67 commit 8ebfa6e

File tree

5 files changed

+31
-21
lines changed

5 files changed

+31
-21
lines changed

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Toolbox is mainly written in Shell because this language is very efficient for f
77
## Environment
88

99
You must have a _BASH_ ready environment and also _Ruby_.
10-
For example, _Bash_ version here is _3.2.5_7.
10+
For example, _Bash_ version here is _3.2.5_.
1111

1212
## Project tree
1313

@@ -225,8 +225,8 @@ bash GitHubWizard.sh get-projects-conformity
225225
```
226226
SSH will be used to clone repositories, thus you must have your SSH configuration ready:
227227

228-
1 - Create an SSH key on your GitHub account [settings](https://github.com/settings/keys)
229-
2 - Add the SSH key in your environment
228+
1. Create an SSH key on your GitHub account [settings](https://github.com/settings/keys)
229+
2. Add the SSH key in your environment
230230

231231
```shell
232232
ssh-add .ssh/id_rsa
@@ -240,8 +240,8 @@ bash GitHubWizard.sh get-empty-projects
240240
```
241241
SSH will be used to clone repositories, thus you must have your SSH configuration ready:
242242

243-
1 - Create an SSH key on your GitHub account [settings](https://github.com/settings/keys)
244-
2 - Add the SSH key in your environment
243+
1. Create an SSH key on your GitHub account [settings](https://github.com/settings/keys)
244+
2. Add the SSH key in your environment
245245

246246
```shell
247247
ssh-add .ssh/id_rsa

toolbox/github/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Debug and test purposes only
2+
toolbox/diver/data/
3+
toolbox/github/data/

toolbox/github/GitHubFacade.rb

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,12 @@
8686
Log.log "Getting members of organizations with 2FA disabled..."
8787
raw_members = GitHubWrapper.get_organization_members_with_2fa_disabled
8888
Log.debug "Found #{raw_members.length} members!"
89+
cpt = 1
8990
raw_members.each { |light_member|
90-
Log.debug "Getting more details for #{light_member.login}"
91+
Log.debug "Getting more details for #{light_member.login} (#{cpt} / #{raw_members.length})"
9192
member = GitHubWrapper.get_user(client, light_member.login)
9293
members << member
94+
cpt += 1
9395
}
9496
Log.debug "Writting in log file #{$FILENAME_MEMBERS_2FA_DISABLED}..."
9597
FileManager.write_members_in_permanent_file(members, $FILENAME_MEMBERS_2FA_DISABLED)
@@ -108,10 +110,12 @@
108110
Log.log "Getting all members of organization..."
109111
raw_members = GitHubWrapper.get_all_organization_members
110112
Log.debug "Found #{raw_members.length} members!"
113+
cpt = 1
111114
raw_members.each { |light_member|
112-
Log.debug "Getting more details for #{light_member.login}"
115+
Log.debug "Getting more details for #{light_member.login} (#{cpt} / #{raw_members.length})"
113116
member = GitHubWrapper.get_user(client, light_member.login)
114117
members << member
118+
cpt += 1
115119
}
116120
Log.debug "Writting in log file #{$FILENAME_MEMBERS}..."
117121
FileManager.write_members_in_permanent_file(members, $FILENAME_MEMBERS)
@@ -127,17 +131,20 @@
127131
exit $EXIT_BAD_SETUP
128132
end
129133
members = []
130-
puts "Getting members of organization without company..."
134+
Log.log "Getting members of organization without company..."
131135
raw_members = GitHubWrapper.get_all_organization_members
136+
Log.debug "Found #{raw_members.length} members in organization."
137+
cpt = 1
132138
raw_members.each { |light_member|
133-
Log.debug "Checking company for #{light_member.login}"
139+
Log.debug "Checking company for #{light_member.login} (#{cpt} / #{raw_members.length})"
134140
member = GitHubWrapper.get_user(client, light_member.login)
135141
company = "#{member.company}"
136142
unless company.length > 0
137143
members << member
138144
end
145+
cpt += 1
139146
}
140-
Log.debug "Found #{members.length} members!"
147+
Log.debug "Found #{members.length} members without defined company!"
141148
Log.debug "Writting in log file #{$FILENAME_MEMBERS_UNDEFINED_COMPANY}..."
142149
FileManager.write_members_in_permanent_file(members, $FILENAME_MEMBERS_UNDEFINED_COMPANY)
143150
Log.log "Task completed! Exits now."

toolbox/github/GitHubWrapper.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -306,8 +306,6 @@ def self.get_projects_without_team(octokit_client, organization_name)
306306
repositories_without_team = []
307307
index = 1
308308
all_repositories.each { |repo|
309-
puts repo.owner.login
310-
exit
311309
Log.debug "Checking for repository '%s' (%s / %s)" % [repo.name, index, count]
312310
index += 1
313311
teams_url = repo.teams_url
@@ -443,18 +441,19 @@ def self.get_not_conform_repositories(octokit_client, organization_name)
443441
repository_ssh_url = repository.ssh_url
444442
current_repo = {"name" => "#{repository_name}", "url" => "#{repository_url}"}
445443
Log.debug "Will clone repository %s out of %s" % [cpt, repositories_count]
446-
GitWrapper.clone_git_repository(repository_ssh_url, repository_name)
447-
Log.debug "Checking content of #{repository_name}"
444+
full_name="data/#{repository_name}"
445+
GitWrapper.clone_git_repository(repository_ssh_url, full_name)
446+
Log.debug "Checking content of '#{repository_name}' in folder '#{full_name}'"
448447
expected_files_name.each do |expected_file_name|
449-
path_name = "#{repository_name}/#{expected_file_name}"
448+
path_name = "#{full_name}/#{expected_file_name}"
450449
if !File.exist?(path_name) && !File.exist?("#{path_name}.txt") && !File.exist?("#{path_name}.md")
451450
current_repo[expected_file_name] = "0"
452451
else
453452
current_repo[expected_file_name] = "1"
454453
end
455454
end
456455
unconform_repositories << current_repo
457-
FileUtils.rm_rf(repository_name)
456+
FileUtils.rm_rf(full_name)
458457
cpt += 1
459458
end
460459
return unconform_repositories
@@ -484,13 +483,14 @@ def self.get_empty_repositories(octokit_client, organization_name, limit = 1)
484483
repository_url = repository.html_url
485484
repository_ssh_url = repository.ssh_url
486485
Log.debug "Will clone repository %s out of %s" % [cpt, repositories_count]
487-
GitWrapper.clone_git_repository(repository_ssh_url, repository_name)
488-
Log.debug "Checking content of #{repository_name}"
489-
count = Dir.glob(File.join(repository_name, '**', '*')).select { |file| File.file?(file) }.count
486+
full_name="data/#{repository_name}"
487+
GitWrapper.clone_git_repository(repository_ssh_url, full_name)
488+
Log.debug "Checking content of '#{repository_name}' in foler '#{full_name}'"
489+
count = Dir.glob(File.join(full_name, '**', '*')).select { |file| File.file?(file) }.count
490490
if count <= limit
491491
empty_repositories << {"name" => "#{repository_name}", "url" => "#{repository_url}"}
492492
end
493-
FileUtils.rm_rf(repository_name)
493+
FileUtils.rm_rf(full_name)
494494
cpt += 1
495495
end
496496
return empty_repositories

toolbox/github/GitWrapper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def self.clone_git_repository(ssh_url, folder_name)
3232
if folder_name.nil? || folder_name.empty?
3333
Log.error "Forlder for repository cloning is not defined, clone won't be done. Returns now."
3434
return
35-
end
35+
end
3636
Log.log "Clone Git repository using SSH URL '%s' under name '%s'" % [ssh_url, folder_name]
3737
Git.clone(ssh_url, folder_name)
3838
end

0 commit comments

Comments
 (0)