From 5e4c38c28ecfd927a466aa128b9cb85a2e0e4ebc Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Mon, 17 Nov 2025 16:54:55 +0100 Subject: locopy: Require all arguments --- locopy/bin/locopy.rb | 105 --------------------------------------------------- 1 file changed, 105 deletions(-) delete mode 100755 locopy/bin/locopy.rb (limited to 'locopy/bin') diff --git a/locopy/bin/locopy.rb b/locopy/bin/locopy.rb deleted file mode 100755 index f726210..0000000 --- a/locopy/bin/locopy.rb +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env ruby -# This Source Code Form is subject to the terms of the Mozilla Public License, -# v. 2.0. If a copy of the MPL was not distributed with this file, You can -# obtain one at https://mozilla.org/MPL/2.0/. - -require 'pathname' -require 'mysql2' -require 'optparse' -require 'json' - -# Tool for easy updating a local copy of a website - -arguments = {} -option_parser = OptionParser.new do |options| - options.banner = "Usage: #{File.basename $0} [OPTIONS] (wordpress)" - - options.on '--root=ROOT', 'Website configuration directory' do |option| - arguments[:root] = Pathname.new option - end - options.on '--dump=DUMP', 'Database file' do |option| - arguments[:root] = Pathname.new option - end -end - -option_parser.parse! - -# Read arguments -while argument = ARGV.shift do - case argument - when 'wordpress' - ENV['CMD'] = argument - end -end - -class DatabaseAccess - attr_accessor :name, :user, :password - attr_reader :host, :socket, :port - - def initialize(wp_config) - @name = wp_config['DB_NAME'] - @user = wp_config['DB_USER'] - @password = wp_config['DB_PASSWORD'] - - self.host = wp_config['DB_HOST'] - end - - def host=(host) - host_part, socket_part = host.split(':') - port = socket_part.to_i - - @host = host_part - if port == 0 - @socket = socket_part - else - @port = port - end - end -end - -wp_settings = Pathname.new('wp-settings.php').realpath -wp_config = nil - -Dir.chdir arguments[:root] do - wp_config = JSON.parse `php #{wp_settings}` -end - -def copy_db(root, wp_config) - table_prefix = wp_config['table_prefix'] - php_constants = DatabaseAccess.new wp_config - keep_option_names = ['siteurl', 'home'] - - client = Mysql2::Client.new host: php_constants.host, username: php_constants.user, - password: php_constants.password, database: php_constants.name, socket: php_constants.socket - statement = client.prepare <<~SQL - SELECT option_name, option_value - FROM #{table_prefix}options - WHERE option_name LIKE ? - SQL - keep_option_values = keep_option_names.each_with_object({}) do |keep_option_name, accumulator| - accumulator[keep_option_name] = statement.execute(keep_option_name).first['option_value'] - accumulator - end - keep_option_values = { - "siteurl"=>"http://localhost:8083", - "home"=>"http://localhost:8083" - } - - statement = client.prepare <<~SQL - UPDATE #{table_prefix}options - SET option_value = ? - WHERE option_name LIKE ? - SQL - keep_option_values.each_pair do |name, value| - statement.execute(value, name) - end -end - -case ENV['CMD'] -when 'wordpress' - # Set permissions - copy_db(arguments[:root], wp_config) -else - puts option_parser.help - exit 1 -end -- cgit v1.2.3