Module: Lakitu::FileOperator

Defined in:
lib/lakitu/file_operator.rb

Class Method Summary collapse

Class Method Details

.backup_ssh_config!Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/lakitu/file_operator.rb', line 27

def self.backup_ssh_config!
  return unless File.exist? Lakitu::SSHCONFIG_PATH
  unless ssh_config_is_managed?
    Lakitu.logger.debug "SSH config is unmanaged"
    if File.exist? Lakitu::LOCAL_SSHCONFIG_PATH
      Lakitu.logger.fatal "Can't back up unmanaged ssh config: #{Lakitu::LOCAL_SSHCONFIG_PATH} already exists."
      exit 1
      return
    end

    Lakitu.logger.info "Moving #{Lakitu::SSHCONFIG_PATH} to #{Lakitu::LOCAL_SSHCONFIG_PATH}"
    FileUtils.mv Lakitu::SSHCONFIG_PATH, Lakitu::LOCAL_SSHCONFIG_PATH
  end
end

.key_path(key_name) ⇒ Object



4
5
6
7
8
9
# File 'lib/lakitu/file_operator.rb', line 4

def self.key_path key_name
  expected_key_path = File.join Lakitu::SSH_PATH, "#{key_name}.pem"
  return nil unless File.exist? expected_key_path
  Lakitu.logger.debug "Found key at #{expected_key_path}"
  expected_key_path
end

.lakitu_config_exists?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/lakitu/file_operator.rb', line 55

def self.lakitu_config_exists?
  File.exist? Lakitu::OPTIONS_FILE_PATH
end

.local_ssh_configObject



17
18
19
20
# File 'lib/lakitu/file_operator.rb', line 17

def self.local_ssh_config
  return File.read(Lakitu::LOCAL_SSHCONFIG_PATH) if File.exist?(Lakitu::LOCAL_SSHCONFIG_PATH)
  return ""
end

.optionsObject



67
68
69
# File 'lib/lakitu/file_operator.rb', line 67

def self.options
  Lakitu::Options.options
end

.read_lakitu_configObject



59
60
61
# File 'lib/lakitu/file_operator.rb', line 59

def self.read_lakitu_config
  File.read Lakitu::OPTIONS_FILE_PATH
end

.should_overwriteObject



22
23
24
25
# File 'lib/lakitu/file_operator.rb', line 22

def self.should_overwrite
  return true unless ssh_config_is_managed?
  ssh_config_is_stale?
end

.ssh_config_is_managed?Boolean

Returns:

  • (Boolean)


42
43
44
45
# File 'lib/lakitu/file_operator.rb', line 42

def self.ssh_config_is_managed?
  return false unless File.exist? Lakitu::SSHCONFIG_PATH
  File.read(Lakitu::SSHCONFIG_PATH).include? Lakitu::MANAGED_SSH_CONFIG_TOKEN
end

.ssh_config_is_stale?Boolean

Returns:

  • (Boolean)


47
48
49
50
51
52
53
# File 'lib/lakitu/file_operator.rb', line 47

def self.ssh_config_is_stale?
  ssh_config_age_minutes = (Time.now - File.mtime(Lakitu::SSHCONFIG_PATH)) / 60
  effectively_stale = (ssh_config_age_minutes > options.refresh_interval_minutes or options.force)
  Lakitu.logger.debug "SSH Config modified #{ssh_config_age_minutes} minutes ago, threshold: #{options.refresh_interval_minutes}"
  Lakitu.logger.info "SSH config is still fresh, use --force to force generation" unless effectively_stale
  return !!effectively_stale
end

.write_lakitu_config(content) ⇒ Object



63
64
65
# File 'lib/lakitu/file_operator.rb', line 63

def self.write_lakitu_config content
  File.write Lakitu::OPTIONS_FILE_PATH, content
end

.write_ssh_config!(content) ⇒ Object

Raises:

  • (RuntimeError)


11
12
13
14
15
# File 'lib/lakitu/file_operator.rb', line 11

def self.write_ssh_config! content
  raise RuntimeError.new("Won't overwrite unmanaged ssh config") unless ssh_config_is_managed? or !File.exist?(Lakitu::SSHCONFIG_PATH)
  Lakitu.logger.info "Writing ssh config to #{Lakitu::SSHCONFIG_PATH}"
  File.write Lakitu::SSHCONFIG_PATH, content
end