class LinuxHub::CLI

Public Class Methods

new(config) click to toggle source
# File lib/linux-hub/cli.rb, line 3
def initialize(config)
  @organization = config["organisation"]
  @team = config["team"]
  @groups = config["groups"]

  Github.instance.access_token = config["access_token"]
  Octokit.auto_paginate = true
end

Public Instance Methods

create_users() click to toggle source
# File lib/linux-hub/cli.rb, line 28
def create_users
  add_users(github_users)
end
list() click to toggle source
# File lib/linux-hub/cli.rb, line 12
def list
  puts github_users.collect(&:authorized_keys)
end
sync_users() click to toggle source
# File lib/linux-hub/cli.rb, line 16
def sync_users
  linux_users = LinuxUser.users_in_group
  linux_usernames = linux_users.collect(&:username)
  github_usernames = github_users.collect(&:username)
  # Equivalent to github_users - linux_users
  users_to_add = github_users.reject { |u| linux_usernames.include? u.username }
  # Equivalent to linux_users - github_users
  users_to_delete = linux_users.reject { |u| github_usernames.include? u.username }
  add_users(users_to_add)
  delete_users(users_to_delete)
end

Private Instance Methods

add_users(users) click to toggle source
# File lib/linux-hub/cli.rb, line 34
def add_users(users)
  users.each do |user|
    LinuxUser.new(
      username: user.username,
      groups: @groups,
      ssh_keys: user.ssh_keys
    ).create
  end
end
delete_users(users) click to toggle source
# File lib/linux-hub/cli.rb, line 44
def delete_users(users)
  users.each do |user|
    LinuxUser.new(
      username: user.username
    ).delete
  end
end
github_users() click to toggle source
# File lib/linux-hub/cli.rb, line 52
def github_users
  GithubTeam.new(
    organisation: @organization,
    team: @team,
  ).users
end