Ru-b2-SQL-Backups/mysql_database_config.rb

63 lines
1.7 KiB
Ruby
Raw Normal View History

2023-02-23 15:42:16 -07:00
# frozen_string_literal: true
# class for generating the mysql config if it doesn't exist
require 'json'
# class for generating our config
class MysqlDatabaseConfig
def initialize(config_file)
@config_file = config_file
end
def generate
if File.exist?(@config_file)
puts 'Config file already exists, skipping generation.'
else
mysql_host = prompt('MySQL Host')
mysql_username = prompt('MySQL Username')
mysql_password = prompt('MySQL Password')
backup_dir = prompt('Backup Directory', default: '.')
@config = {
2023-02-23 15:42:16 -07:00
'mysql' => {
'host' => mysql_host,
'username' => mysql_username,
'password' => mysql_password
},
'backup_dir' => backup_dir
}
b2_enabled = prompt_bool('Enable Backblaze B2?', default: false)
@config['b2_enabled'] = b2_enabled
2023-02-23 15:42:16 -07:00
if b2_enabled
@b2_key_id = prompt('B2 Key ID')
@b2_application_key = prompt('B2 Application Key')
@b2_bucket_name = prompt('B2 Bucket Name')
@config['b2'] = {
2023-02-23 15:42:16 -07:00
'key_id' => @b2_key_id,
'application_key' => @b2_application_key,
'bucket_name' => @b2_bucket_name
}
end
File.write(@config_file, JSON.pretty_generate(@config))
2023-02-23 15:42:16 -07:00
puts "Config file generated: #{@config_file}"
end
end
private
def prompt(message, default: nil)
print message.to_s
print " [#{default}]" if default
print ': '
value = gets.chomp
value.empty? ? default : value
end
def prompt_bool(message, default: false)
prompt("#{message} (y/n)", default: default) =~ /y|yes/i
end
end