wpmu 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +12 -0
- data/Rakefile +1 -0
- data/bin/wpmu +5 -0
- data/lib/wpmu.rb +7 -0
- data/lib/wpmu/cli.rb +108 -0
- data/lib/wpmu/db.rb +50 -0
- data/lib/wpmu/version.rb +3 -0
- data/wpmu.gemspec +26 -0
- metadata +101 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/wpmu
ADDED
data/lib/wpmu.rb
ADDED
data/lib/wpmu/cli.rb
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'php_serialize'
|
3
|
+
require 'wpmu/version'
|
4
|
+
require 'wpmu/db'
|
5
|
+
|
6
|
+
module WPMU
|
7
|
+
|
8
|
+
|
9
|
+
class List < Thor
|
10
|
+
|
11
|
+
desc 'themes', 'lists themes and sites which use them (currently lists only active themes)'
|
12
|
+
def themes
|
13
|
+
themes_options = get_options('template')
|
14
|
+
themes = {}
|
15
|
+
themes_options.each do |site_id, options|
|
16
|
+
theme_name = options['template']
|
17
|
+
themes[theme_name] ||= []
|
18
|
+
themes[theme_name] << site_id
|
19
|
+
end
|
20
|
+
|
21
|
+
themes.each do |theme_name, site_ids|
|
22
|
+
puts "#{theme_name} - #{site_ids.to_s}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
desc 'plugins', 'lists plugins and sites which use them (currently lists only active plugins)'
|
27
|
+
def plugins
|
28
|
+
plugins_options = get_options('active_plugins')
|
29
|
+
plugins = {}
|
30
|
+
plugins_options.each do |site_id, options|
|
31
|
+
encoded_list = options['active_plugins']
|
32
|
+
PHP.unserialize(encoded_list).each do |plugin_name|
|
33
|
+
plugins[plugin_name] ||= []
|
34
|
+
plugins[plugin_name] << site_id
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
plugins.each do |plugin_name, site_ids|
|
39
|
+
puts "#{plugin_name} - #{site_ids.to_s}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
desc 'sites', 'lists sites'
|
44
|
+
def sites
|
45
|
+
sites_options = get_options(%w{blogname siteurl admin_email template active_plugins})
|
46
|
+
sites_options.each do |site_id, site_options|
|
47
|
+
site_options.each do |key, value|
|
48
|
+
if key == 'active_plugins'
|
49
|
+
puts "#{site_id}| #{key}:"
|
50
|
+
PHP.unserialize(value).each do |plugin|
|
51
|
+
puts "\t#{plugin}"
|
52
|
+
end if value
|
53
|
+
else
|
54
|
+
puts "#{site_id}| #{key}: #{value}"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
puts "\n"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
no_tasks do
|
62
|
+
|
63
|
+
# get sites ids from table names
|
64
|
+
def all_site_ids
|
65
|
+
db = WPMU::DB.get
|
66
|
+
site_ids = []
|
67
|
+
regex = /(\d+)/
|
68
|
+
|
69
|
+
db.tables.each do |table_name|
|
70
|
+
match = regex.match(table_name)
|
71
|
+
if match.class == MatchData
|
72
|
+
site_ids << match[1].to_i
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# get unique and sort
|
77
|
+
site_ids.uniq.sort
|
78
|
+
end
|
79
|
+
|
80
|
+
# gets given set of optoins for all sites
|
81
|
+
def get_options(*option_names)
|
82
|
+
option_names.flatten!
|
83
|
+
all_sites_options = {}
|
84
|
+
all_site_ids.each do |site_id|
|
85
|
+
current_site_options = {}
|
86
|
+
table = WPMU::DB.get["okfn_org_#{site_id}_options".to_sym]
|
87
|
+
option_names.each do |option_name|
|
88
|
+
current_site_options[option_name] = table.first(:option_name => option_name)[:option_value].strip
|
89
|
+
end
|
90
|
+
all_sites_options[site_id] = current_site_options
|
91
|
+
end
|
92
|
+
all_sites_options
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
class CLI < Thor
|
101
|
+
|
102
|
+
desc 'list RESOURCES', 'prints listing for given type of resource'
|
103
|
+
subcommand 'list', List
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
end
|
data/lib/wpmu/db.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'sequel'
|
2
|
+
require 'mysql2'
|
3
|
+
|
4
|
+
module WPMU
|
5
|
+
|
6
|
+
class DB
|
7
|
+
|
8
|
+
class << self
|
9
|
+
def get
|
10
|
+
#TODO: fetch data from wp-config.php
|
11
|
+
@db ||= Sequel.mysql2 connection_options
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def connection_options
|
17
|
+
@connection_options ||= get_connection_options
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_connection_options
|
21
|
+
connection_options = {}
|
22
|
+
map = {
|
23
|
+
:user => 'DB_USER',
|
24
|
+
:database => 'DB_NAME',
|
25
|
+
:password => 'DB_PASSWORD',
|
26
|
+
:host => 'DB_HOST'
|
27
|
+
}
|
28
|
+
wp_config_path = File.join Dir.pwd, 'wp-config.php'
|
29
|
+
begin
|
30
|
+
lines = File.open(wp_config_path){ |f| f.readlines }
|
31
|
+
rescue Errno::ENOENT
|
32
|
+
puts "couldn't find wp-config.php, please make sure you run command from root directory of your blogfarm!"
|
33
|
+
exit 1
|
34
|
+
end
|
35
|
+
lines.each do |line|
|
36
|
+
map.each_pair do |db_key, wp_key|
|
37
|
+
regex = /'#{wp_key}', '([^']+)'/
|
38
|
+
match = regex.match line
|
39
|
+
if match.class == MatchData
|
40
|
+
connection_options[db_key] = match[1]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
connection_options
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/lib/wpmu/version.rb
ADDED
data/wpmu.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "wpmu/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "wpmu"
|
7
|
+
s.version = WPMU::VERSION.dup
|
8
|
+
s.authors = ["elf Pavlik"]
|
9
|
+
s.email = ["perpetual-tripper@wwelves.org"]
|
10
|
+
s.homepage = "https://gitorious.org/elf-pavlik-misc-repos/wpmu-ruby"
|
11
|
+
s.summary = %q{CLI toolset for managing Wordpress Multisite}
|
12
|
+
s.description = %q{CLI toolset for managing Wordpress Multisite}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
# specify any dependencies here; for example:
|
20
|
+
# s.add_development_dependency "rspec"
|
21
|
+
# s.add_runtime_dependency "rest-client"
|
22
|
+
s.add_runtime_dependency "thor"
|
23
|
+
s.add_runtime_dependency "sequel"
|
24
|
+
s.add_runtime_dependency "mysql2"
|
25
|
+
s.add_runtime_dependency "php-serialize"
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wpmu
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- elf Pavlik
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-27 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: &76732910 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *76732910
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: sequel
|
27
|
+
requirement: &76732500 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *76732500
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: mysql2
|
38
|
+
requirement: &76732170 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *76732170
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: php-serialize
|
49
|
+
requirement: &76731690 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *76731690
|
58
|
+
description: CLI toolset for managing Wordpress Multisite
|
59
|
+
email:
|
60
|
+
- perpetual-tripper@wwelves.org
|
61
|
+
executables:
|
62
|
+
- wpmu
|
63
|
+
extensions: []
|
64
|
+
extra_rdoc_files: []
|
65
|
+
files:
|
66
|
+
- .gitignore
|
67
|
+
- Gemfile
|
68
|
+
- README.md
|
69
|
+
- Rakefile
|
70
|
+
- bin/wpmu
|
71
|
+
- lib/wpmu.rb
|
72
|
+
- lib/wpmu/cli.rb
|
73
|
+
- lib/wpmu/db.rb
|
74
|
+
- lib/wpmu/version.rb
|
75
|
+
- wpmu.gemspec
|
76
|
+
homepage: https://gitorious.org/elf-pavlik-misc-repos/wpmu-ruby
|
77
|
+
licenses: []
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options: []
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
requirements: []
|
95
|
+
rubyforge_project:
|
96
|
+
rubygems_version: 1.8.10
|
97
|
+
signing_key:
|
98
|
+
specification_version: 3
|
99
|
+
summary: CLI toolset for managing Wordpress Multisite
|
100
|
+
test_files: []
|
101
|
+
has_rdoc:
|