Class: JekyllAuth::Commands
- Inherits:
-
Object
- Object
- JekyllAuth::Commands
- 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
- .changed? ⇒ Boolean
- .configure_heroku(options) ⇒ Object
- .copy_templates ⇒ Object
- .destination ⇒ Object
- .env_var_set?(var) ⇒ Boolean
- .execute_command(*args) ⇒ Object
- .heroku_remote_set? ⇒ Boolean
- .init_repo ⇒ Object
- .initial_commit ⇒ Object
- .source ⇒ Object
- .team_id(org, team) ⇒ Object
Class Method Details
.changed? ⇒ 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() VARS.each do |var| execute_command "heroku", "config:set", "GITHUB_#{var.upcase}=#{[var]}" if [var] end end |
.copy_templates ⇒ Object
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 |
.destination ⇒ Object
12 13 14 |
# File 'lib/jekyll_auth/commands.rb', line 12 def self.destination @destination ||= Dir.pwd end |
.env_var_set?(var) ⇒ 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
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_repo ⇒ Object
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_commit ⇒ Object
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 |
.source ⇒ Object
8 9 10 |
# File 'lib/jekyll_auth/commands.rb', line 8 def self.source @source ||= File.("../../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 |