Class: PSQLToys::Template::Base

Inherits:
Object
  • Object
show all
Includes:
Memery, Toys::Template
Defined in:
lib/psql_toys/template/_base.rb

Overview

Base class for templates

Constant Summary collapse

PGPASS_FILE =
File.expand_path '~/.pgpass'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(db_config_proc:, db_extensions:, db_connection_proc: nil) ⇒ Base

Returns a new instance of Base.



15
16
17
18
19
# File 'lib/psql_toys/template/_base.rb', line 15

def initialize(db_config_proc:, db_extensions:, db_connection_proc: nil)
	@db_config_proc = db_config_proc
	@db_connection_proc = db_connection_proc
	@db_extensions = db_extensions
end

Instance Attribute Details

#db_config_procObject (readonly)

db_config_proc getter for Dumps sub-tools



13
14
15
# File 'lib/psql_toys/template/_base.rb', line 13

def db_config_proc
  @db_config_proc
end

#db_connection_procObject (readonly)

db_config_proc getter for Dumps sub-tools



13
14
15
# File 'lib/psql_toys/template/_base.rb', line 13

def db_connection_proc
  @db_connection_proc
end

#db_extensionsObject (readonly)

db_config_proc getter for Dumps sub-tools



13
14
15
# File 'lib/psql_toys/template/_base.rb', line 13

def db_extensions
  @db_extensions
end

Instance Method Details

#confirm(prompt) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/psql_toys/template/_base.rb', line 50

def confirm(prompt)
	require 'highline'
	highline = HighLine.new

	highline.choose do |menu|
		menu.layout = :one_line

		menu.prompt = prompt

		menu.choice(:yes) { nil }
		menu.choice(:no) { abort 'OK' }
	end
end

#update_pgpassObject



40
41
42
43
44
45
46
47
48
# File 'lib/psql_toys/template/_base.rb', line 40

def update_pgpass
	pgpass_lines =
		File.exist?(PGPASS_FILE) ? File.read(PGPASS_FILE).split($RS) : []

	return if pgpass_lines&.include? pgpass_line

	File.write PGPASS_FILE, pgpass_lines.push(pgpass_line, nil).join($RS)
	File.chmod(0o600, PGPASS_FILE)
end