aboutsummaryrefslogtreecommitdiff
path: root/locopy/bin/locopy.rb
diff options
context:
space:
mode:
Diffstat (limited to 'locopy/bin/locopy.rb')
-rwxr-xr-xlocopy/bin/locopy.rb105
1 files changed, 0 insertions, 105 deletions
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