Class: JekyllAuth::Commands

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll_auth/commands.rb

Constant Summary collapse

FILES =
%w(Rakefile config.ru .gitignore .env).freeze
VARS =
%w(client_id client_secret team_id org_name).freeze

Class Method Summary collapse

Class Method Details

.changed?Boolean

Returns:

  • (Boolean)


16
17
18
19
20
# File 'lib/jekyll_auth/commands.rb', line 16

def self.changed?
  !execute_command("git", "status", destination, "--porcelain").empty?
rescue StandardError
  false
end

.configure_heroku(options) ⇒ Object



70
71
72
73
74
# File 'lib/jekyll_auth/commands.rb', line 70

def self.configure_heroku(options)
  VARS.each do |var|
    execute_command "heroku", "config:set", "GITHUB_#{var.upcase}=#{options[var]}" if options[var]
  end
end

.copy_templatesObject



29
30
31
32
33
34
35
36
37
38
# File 'lib/jekyll_auth/commands.rb', line 29

def self.copy_templates
  FILES.each do |file|
    if File.exist? "#{destination}/#{file}"
      puts "* #{destination}/#{file} already exists... skipping."
    else
      puts "* creating #{destination}/#{file}"
      FileUtils.cp "#{source}/#{file}", "#{destination}/#{file}"
    end
  end
end

.destinationObject



12
13
14
# File 'lib/jekyll_auth/commands.rb', line 12

def self.destination
  @destination ||= Dir.pwd
end

.env_var_set?(var) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/jekyll_auth/commands.rb', line 48

def self.env_var_set?(var)
  !ENV[var].to_s.blank?
end

.execute_command(*args) ⇒ Object



22
23
24
25
26
27
# File 'lib/jekyll_auth/commands.rb', line 22

def self.execute_command(*args)
  output, status = Open3.capture2e(*args)
  raise "Command `#{args.join(" ")}` failed: #{output}" unless status.exitstatus.zero?

  output
end

.heroku_remote_set?Boolean

Returns:

  • (Boolean)


65
66
67
68
# File 'lib/jekyll_auth/commands.rb', line 65

def self.heroku_remote_set?
  remotes = execute_command "git", "remote", "-v"
  !!(remotes =~ %r!^heroku\s!)
end

.init_repoObject



52
53
54
55
56
57
58
59
# File 'lib/jekyll_auth/commands.rb', line 52

def self.init_repo
  execute_command "git", "init", destination
  FILES.each do |file|
    next if file == ".env"

    execute_command("git", "add", "--", "#{destination}/#{file}")
  end
end

.initial_commitObject



61
62
63
# File 'lib/jekyll_auth/commands.rb', line 61

def self.initial_commit
  execute_command "git", "commit", "-m", "'[Jekyll Auth] Initial setup'"
end

.sourceObject



8
9
10
# File 'lib/jekyll_auth/commands.rb', line 8

def self.source
  @source ||= File.expand_path("../../templates", File.dirname(__FILE__))
end

.team_id(org, team) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/jekyll_auth/commands.rb', line 40

def self.team_id(org, team)
  client = Octokit::Client.new :access_token => ENV["GITHUB_TOKEN"]
  client.auto_paginate = true
  teams = client.organization_teams org
  found = teams.find { |t| t[:slug] == team }
  found[:id] if found
end