class OktaTerraformGenerator::CLI::GithubMembership
Public Instance Methods
run(argv = ARGV.dup)
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 70 def run(argv = ARGV.dup) if argv.size == 1 print_usage exit 1 end setup(argv) generate end
Private Instance Methods
add_login_and_github_handle(login_and_github_handle)
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 113 def add_login_and_github_handle(login_and_github_handle) login, handle = login_and_github_handle(login_and_github_handle) return unless (github_handle = github_handle(handle)) return if resource_name_exists? login add_to_resource_hash(login.to_s => { 'username' => github_handle, 'role' => user_or_admin(login) }) end
admins()
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 94 def admins @admin_group_id ||= okta_client.group_id(config[:okta_admin_group]) @admins ||= list_group_github_handles(@admin_group_id).map { |u| u.profile.login.downcase.split('@').shift }.sort end
generate()
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 138 def generate config[:okta_group].each do |okta_group| group_id = okta_client.group_id(okta_group) logins_and_github_handles(okta_group, group_id).sort_by { |x, _y| x }.each do |login_and_github_handle| add_login_and_github_handle(login_and_github_handle) end end write_tf_file('github_membership.tf', resources) end
github_client()
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 86 def github_client @github_client ||= Octokit::Client.new(access_token: config[:github_token]) end
github_handle(handle)
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 99 def github_handle(handle) github_client.user(handle).login rescue Octokit::NotFound false end
list_group_github_handles(group_id)
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 105 def list_group_github_handles(group_id) okta_client.list_active_group_members(group_id).select { |user| user.profile.key?(:githubHandle) && !user.profile.githubHandle.empty? } end
login_and_github_handle(login_and_github_handle)
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 125 def login_and_github_handle(login_and_github_handle) # login = Okta login # handle = GitHub handle login, handle = login_and_github_handle login = login.split('@').shift [login, handle] end
logins_and_github_handles(okta_group, group_id)
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 133 def logins_and_github_handles(okta_group, group_id) puts "Looking for active users in Okta group \"#{okta_group}\" (with group id: #{group_id}) and the \"githubHandle\" profile attribute set ... " list_group_github_handles(group_id).map { |u| [u.profile.login.downcase, u.profile.githubHandle.downcase] } end
okta_client()
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 90 def okta_client @okta_client ||= Oktakit::Client.new(token: config[:okta_token], api_endpoint: config[:okta_endpoint]) end
setup(argv)
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 82 def setup(argv) parse_options(argv) end
user_or_admin(login)
click to toggle source
# File lib/okta-terraform-generator/cli/github_membership.rb, line 109 def user_or_admin(login) admins.include?(login) ? 'admin' : 'member' end