wpmu 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in wpmu.gemspec
4
+ gemspec
@@ -0,0 +1,12 @@
1
+ WPMU
2
+ ====
3
+
4
+ **WordPress MulitiSite** a **CLI** toolbox supporting administration of
5
+ blogfarm.
6
+
7
+ Usage
8
+ -----
9
+
10
+ To see usage information please invoke without any arguments
11
+
12
+ $ wmpu
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- mode: ruby -*-
3
+
4
+ require 'wpmu/cli'
5
+ WPMU::CLI.start
@@ -0,0 +1,7 @@
1
+ require "wpmu/version"
2
+
3
+ module WPMU
4
+
5
+ autoload :DB, 'wpmu/db'
6
+ autoload :CLI, 'wpmu/cli'
7
+ end
@@ -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
@@ -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
@@ -0,0 +1,3 @@
1
+ module WPMU
2
+ VERSION = "0.0.1".freeze
3
+ end
@@ -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: