class SecretHub::Commands::Bulk

Public Instance Methods

clean_command() click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 80
def clean_command
  dry = args['--dry']

  config.each do |repo, secrets|
    say "!txtblu!#{repo}"
    clean_repo repo, secrets.keys, dry
  end

  say "\nDry run, nothing happened" if dry
end
init_command() click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 39
def init_command
  raise SecretHubError, "File #{config_file} already exists" if File.exist? config_file
  FileUtils.cp config_template, config_file
  say "!txtgrn!Saved #{config_file}"
end
list_command() click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 54
def list_command
  config.each_repo do |repo|
    say "!txtblu!#{repo}:"
    github.secrets(repo).each do |secret|
      say "- !txtpur!#{secret}"
    end
  end
end
save_command() click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 63
def save_command
  dry = args['--dry']
  only = args['--only']
  skipped = 0

  config.each do |repo, secrets|
    next if only and repo != only
    say "!txtblu!#{repo}"
    skipped += update_repo repo, secrets, dry
    clean_repo repo, secrets.keys, dry if args['--clean']
  end

  puts "\n" if skipped > 0 or dry
  say "Skipped #{skipped} missing secrets" if skipped > 0
  say "Dry run, nothing happened" if dry
end
show_command() click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 45
def show_command
  config.each do |repo, secrets|
    say "!txtblu!#{repo}:"
    secrets.each do |key, value|
      show_secret key, value, args['--visible']
    end
  end
end

Private Instance Methods

clean_repo(repo, keys, dry) click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 93
def clean_repo(repo, keys, dry)
  repo_keys = github.secrets repo
  delete_candidates = repo_keys - keys

  delete_candidates.each do |key|
    say "delete  !txtpur!#{key}  "
    github.delete_secret repo, key unless dry
    say "!txtgrn!OK"
  end
end
config() click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 134
def config
  @config ||= Config.load config_file
end
config_file() click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 130
def config_file
  args['CONFIG'] || 'secrethub.yml'
end
config_template() click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 138
def config_template
  File.expand_path '../config-template.yml', __dir__
end
show_secret(key, value, visible) click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 121
def show_secret(key, value, visible)
  if value
    value = value.obfuscate unless visible
    say "  !txtpur!#{key}: !txtcyn!#{value}"
  else
    say "  !txtpur!#{key}: !txtred!*MISSING*"
  end
end
update_repo(repo, secrets, dry) click to toggle source
# File lib/secret_hub/commands/bulk.rb, line 104
def update_repo(repo, secrets, dry)
  skipped = 0

  secrets.each do |key, value|
    say "save    !txtpur!#{key}  "
    if value
      github.put_secret repo, key, value unless dry
      say "!txtgrn!OK"
    else
      say "!txtred!MISSING"
      skipped += 1
    end
  end

  skipped
end