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



68
69
70
71
72
# File 'lib/jekyll_auth/commands.rb', line 68

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



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

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)


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

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

.execute_command(*args) ⇒ Object



22
23
24
25
26
# 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)


63
64
65
66
# File 'lib/jekyll_auth/commands.rb', line 63

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

.init_repoObject



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

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



59
60
61
# File 'lib/jekyll_auth/commands.rb', line 59

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



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

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