wordpress-tools 0.0.1alpha1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in wordpress-tools.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Rodolfo Carvalho
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Wordpress::Tools
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'wordpress-tools'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install wordpress-tools
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
data/bin/wp ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'wordpress-tools'
4
+
5
+ cmd = Wordpress::Tools::CommandLine::Parser.new(ARGV)
6
+
7
+ cmd.parse!
data/files/footer.php ADDED
@@ -0,0 +1,3 @@
1
+ <?php wp_footer() ?>
2
+ </body>
3
+ </html>
data/files/header.php ADDED
@@ -0,0 +1,7 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><?php echo bloginfo('blogtitle') ?></title>
5
+ <?php wp_head() ?>
6
+ </head>
7
+ <body>
data/files/index.php ADDED
@@ -0,0 +1,2 @@
1
+ <?php get_header() ?>
2
+ <?php get_footer() ?>
@@ -0,0 +1,20 @@
1
+ index.php
2
+ license.txt
3
+ readme.html
4
+ wp-activate.php
5
+ wp-admin/
6
+ wp-blog-header.php
7
+ wp-comments-post.php
8
+ wp-config-sample.php
9
+ wp-cron.php
10
+ wp-includes
11
+ wp-links-opml.php
12
+ wp-load.php
13
+ wp-login.php
14
+ wp-mail.php
15
+ wp-settings.php
16
+ wp-signup.php
17
+ wp-trackback.php
18
+ xmlrpc.php
19
+ wp-content/languages
20
+ .sass-cache/
@@ -0,0 +1 @@
1
+ *
@@ -0,0 +1,9 @@
1
+ require "wordpress-tools/version"
2
+
3
+ module Wordpress
4
+ module Tools
5
+ autoload :CommandLine, 'wordpress-tools/command_line'
6
+ autoload :Template, 'wordpress-tools/template'
7
+ autoload :Configuration, 'wordpress-tools/configuration'
8
+ end
9
+ end
@@ -0,0 +1,123 @@
1
+ require 'optparse'
2
+ require 'open-uri'
3
+ require 'tempfile'
4
+ require 'erb'
5
+ require 'active_support/core_ext'
6
+
7
+ module Wordpress::Tools
8
+ module CommandLine
9
+ autoload :Action, 'wordpress-tools/command_line/action'
10
+
11
+ class Parser
12
+ attr_reader :parser, :options, :argv, :args, :action
13
+
14
+ ACTIONS = {
15
+ :init => "Initialize a blank project"
16
+ }
17
+
18
+ def initialize(argv)
19
+ @argv = argv
20
+ @options = {
21
+ :wp_version => "latest",
22
+ :show_version => false,
23
+ :show_help => false,
24
+ :skip_wordpress => false,
25
+ :dry_run => false,
26
+ :verbose => false
27
+ }
28
+
29
+ @parser = OptionParser.new { |opts| setup(opts) }
30
+ end
31
+
32
+ def parse!
33
+ @action, *@args = @parser.parse!(@argv)
34
+ validate!
35
+ current_action.run!
36
+ end
37
+
38
+ private
39
+
40
+ def current_action
41
+ begin
42
+ clazz = "Wordpress::Tools::CommandLine::Action::#{action.to_s.camelize}".constantize
43
+ @action_obj ||= clazz.new(args, options)
44
+ rescue => ex
45
+ puts ex
46
+ puts ex.backtrace
47
+ nil
48
+ end
49
+ end
50
+
51
+ def validate!
52
+ exit 0 if options[:show_version] || options[:show_help]
53
+
54
+ if action.to_s.strip.empty?
55
+ puts "You must specify an action."
56
+ puts @parser
57
+ exit -1
58
+ end
59
+
60
+ unless ACTIONS.keys.any? { |a| a.to_s == action }
61
+ puts "Invalid action: #{action}"
62
+ puts @parser
63
+ exit -2
64
+ end
65
+
66
+ if current_action.nil?
67
+ puts "Unimplemented action: #{action}"
68
+ exit -3
69
+ end
70
+
71
+ unless current_action.valid?
72
+ puts "Invalid parameters for action: #{action}"
73
+ exit -5
74
+ end
75
+ end
76
+
77
+ def setup(opts)
78
+ opts.banner = "Usage: wp action [OPTIONS]"
79
+ opts.separator ""
80
+ opts.separator "Available actions:"
81
+ opts.separator ACTIONS.keys.map(&:to_s).join(" ")
82
+
83
+ opts.separator ""
84
+ opts.separator "init:"
85
+ opts.separator "Example: wp init <main_theme_name> [OPTIONS]"
86
+
87
+ opts.on("--wordpress-version=[WORDPRESS_VERSION]",
88
+ "Wordpress Version to use. Default: #{options[:wp_version]}") do |v|
89
+ options[:wp_version] = v
90
+ end
91
+
92
+ opts.on("--skip-wordpress", "Skips wordpress download (Assumes an existing wordpress site)") do
93
+ options[:skip_wordpress] = true
94
+ end
95
+
96
+ opts.separator ""
97
+ opts.separator "Common options:"
98
+
99
+ opts.on("-v", "--version", "Show the program version") do
100
+ options[:show_version] = true
101
+ puts "wp (wodpress-tools) version #{Wordpress::Tools::VERSION}"
102
+ end
103
+
104
+ opts.on("-V", "--verbose") do
105
+ options[:verbose] = true
106
+ end
107
+
108
+ opts.on("--dry-run") do
109
+ options[:dry_run] = true
110
+ end
111
+
112
+ opts.on("-c", "--class-prefix CLASS_PREFIX", "Prefix for all theme-related classes") do |cp|
113
+ options[:class_prefix] = cp
114
+ end
115
+
116
+ opts.on_tail("-h", "--help", "Print this message") do
117
+ options[:show_help] = true
118
+ puts opts
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,6 @@
1
+ module Wordpress::Tools::CommandLine
2
+ module Action
3
+ autoload :Base, 'wordpress-tools/command_line/action/base'
4
+ autoload :Init, 'wordpress-tools/command_line/action/init'
5
+ end
6
+ end
@@ -0,0 +1,84 @@
1
+ require 'colorize'
2
+
3
+ module Wordpress::Tools::CommandLine::Action
4
+ class Base
5
+ attr_reader :args, :options
6
+
7
+ def initialize(args, options={})
8
+ @args = args
9
+ @options = options
10
+ @config = Wordpress::Tools::Configuration.new(args, options)
11
+ end
12
+
13
+ def run!
14
+ raise NotImplementedError
15
+ end
16
+
17
+ def valid?
18
+ true
19
+ end
20
+
21
+ protected
22
+ attr_reader :config
23
+
24
+ def dry_run?
25
+ !!options[:dry_run]
26
+ end
27
+
28
+ def verbose?
29
+ !!options[:verbose]
30
+ end
31
+
32
+ def create_directory(name, recursive=true)
33
+ puts "[directory]".green + "\t#{name}" if verbose? or dry_run?
34
+ return if dry_run?
35
+ if recursive
36
+ FileUtils.mkdir_p(name)
37
+ else
38
+ FileUtils.mkdir(name)
39
+ end
40
+ end
41
+
42
+ def run(cmd)
43
+ puts "[run]".green + "\t\t#{cmd}" if verbose? or dry_run?
44
+ return if dry_run?
45
+ puts cmd if verbose?
46
+ result = %x|#{cmd}|
47
+ puts result if verbose?
48
+ end
49
+
50
+ def render_template(name, target_path, params={})
51
+ puts "[template]".green + "\t#{name} -> #{target_path}" if verbose? or dry_run?
52
+ return if dry_run?
53
+ template_file = File.expand_path("../../../../../templates/#{name}", __FILE__)
54
+ template = Wordpress::Tools::Template.new(File.read(template_file), params)
55
+
56
+ File.open(target_path, "w") do |f|
57
+ f << template.render
58
+ end
59
+ end
60
+
61
+ def cd_into(path)
62
+ begin
63
+ current = FileUtils.pwd
64
+ puts "[cd]".green + "\t\t#{path}" if verbose? or dry_run?
65
+ FileUtils.cd path unless dry_run?
66
+ yield
67
+ ensure
68
+ puts "[cd]".green + "\t\t#{current}" if verbose? or dry_run?
69
+ FileUtils.cd current
70
+ end
71
+ end
72
+
73
+ def copy_file(name, target_path)
74
+ puts "[file]".green + "\t\t#{name} -> #{target_path}" if verbose? or dry_run?
75
+ return if dry_run?
76
+
77
+ static_file = File.expand_path("../../../../../files/#{name}", __FILE__)
78
+
79
+ File.open(target_path, "w") do |f|
80
+ f << File.read(static_file)
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,97 @@
1
+ module Wordpress::Tools::CommandLine::Action
2
+ class Init < Base
3
+ def run!
4
+ if args.empty?
5
+ raise "You must specify a main theme name."
6
+ end
7
+
8
+ unless options[:skip_wordpress]
9
+ path = download_wp
10
+ untar_wp(path, target_directory)
11
+ end
12
+
13
+ bootstrap_theme(target_directory, main_theme_name)
14
+
15
+ %w(build.xml build.properties).each do |t|
16
+ render_template "#{t}.erb", "#{target_directory}/#{t}", :theme_name => main_theme_name
17
+ end
18
+
19
+ config.update :theme_name => main_theme_name
20
+ config.save("#{target_directory}/config.yml") unless dry_run?
21
+ add_to_vcs(target_directory)
22
+ end
23
+
24
+ private
25
+
26
+ def bootstrap_theme(target_dir, theme_name)
27
+ theme_path = "#{target_dir}/wp-content/themes/#{theme_name}"
28
+ classes_path = "#{theme_path}/classes"
29
+ templates_path = "#{theme_path}/templates"
30
+ helpers_path = "#{theme_path}/helpers"
31
+ assets_path = "#{theme_path}/assets"
32
+
33
+ [classes_path, templates_path, helpers_path, assets_path].each do |dir|
34
+ create_directory dir
35
+ end
36
+
37
+ render_template "functions.php.erb", "#{theme_path}/functions.php",
38
+ :theme_name => theme_name, :class_prefix => options[:class_prefix]
39
+
40
+ render_template "theme_class.php.erb", "#{classes_path}/#{options[:class_prefix]}Theme.class.php",
41
+ :theme_name => theme_name, :class_prefix => options[:class_prefix]
42
+
43
+ %w(index header footer).each do |f|
44
+ copy_file "#{f}.php", "#{theme_path}/#{f}.php"
45
+ end
46
+
47
+ render_template "style.css.erb", File.join(theme_path, "style.css"), :theme_name => theme_name
48
+ cd_into(assets_path) { run "compass create ." }
49
+ end
50
+
51
+ def add_to_vcs(path)
52
+ cd_into path do
53
+ run "git init ."
54
+ copy_file "main_gitignore", "#{path}/.gitignore"
55
+
56
+ render_template "themes_gitignore.erb", "#{File.dirname(theme_path)}/.gitignore",
57
+ :theme_name => main_theme_name
58
+ copy_file("plugins_gitignore", "#{target_directory}/wp-content/plugins/.gitignore")
59
+ end
60
+ end
61
+
62
+ def untar_wp(from, to)
63
+ wp_src_dir = "#{File.dirname(from)}/wordpress"
64
+
65
+ cmd = "tar -xz#{ "v" if verbose?}f #{from} -C #{File.dirname(from)}"
66
+ run cmd
67
+ run "mv -v #{wp_src_dir} #{to}"
68
+ end
69
+
70
+ def download_wp
71
+ tmp = Tempfile.new('wp')
72
+ puts "Downloading Wordpress from #{wp_download_link}..." if verbose?
73
+
74
+ if dry_run?
75
+ return "/some/dummy/path/for/wp"
76
+ else
77
+ open(wp_download_link) do |io|
78
+ tmp << io.read
79
+ tmp.path
80
+ end
81
+ end
82
+ end
83
+
84
+ def wp_download_link
85
+ "http://br.wordpress.org/#{options[:wp_version]}-pt_BR.tar.gz"
86
+ end
87
+
88
+ # Utility Methods
89
+ def main_theme_name; args.first; end
90
+ def theme_path
91
+ "#{target_directory}/wp-content/themes/#{main_theme_name}"
92
+ end
93
+ def target_directory
94
+ @target_directory ||= File.expand_path("#{main_theme_name}")
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,63 @@
1
+ require 'fileutils'
2
+ require 'yaml'
3
+
4
+ module Wordpress::Tools
5
+ class Configuration
6
+ TRANSIENT_CONFIG = [
7
+ :dry_run, :show_version, :show_help, :skip_wordpress,
8
+ :verbose, :wp_version
9
+ ]
10
+
11
+ attr_reader :action
12
+
13
+ def initialize(args, options)
14
+ read_configuration!
15
+ merge_config!(args, options)
16
+ end
17
+
18
+ def save(path = nil)
19
+ path = path.nil? ? config_file_path : path
20
+ File.open(path, "w") { |f| f << @config.dup.delete_if { |k, v| TRANSIENT_CONFIG.include?(k.to_sym) }.to_yaml }
21
+ end
22
+
23
+ def target_path
24
+ @target_path ||= FileUtils.pwd
25
+ end
26
+
27
+ def class_prefix
28
+ @config[:class_prefix]
29
+ end
30
+
31
+ def theme_name
32
+ @config[:theme_name]
33
+ end
34
+
35
+ def wordpress_version
36
+ @config[:wordpress_version]
37
+ end
38
+
39
+ def update(extra_options)
40
+ @config.merge! extra_options
41
+ end
42
+
43
+ private
44
+ def merge_config!(args, options)
45
+ @config.merge!(options)
46
+ if args.any?
47
+ @action = args.first
48
+ end
49
+ end
50
+
51
+ def config_file_path
52
+ "#{target_path}/config.yml"
53
+ end
54
+
55
+ def read_configuration!
56
+ if File.exists? config_file_path
57
+ @config = YAML.load File.read(config_file_path)
58
+ else
59
+ @config = {}
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,53 @@
1
+ $rsync_opts = %w(-avz --progress)
2
+ $remote_site = "infweb@infweb.web805.uni5.net:~/www"
3
+ $local_site = File.expand_path("..", __FILE__)
4
+ $theme_name = "infweb"
5
+
6
+ def rsync(from, to, opt=$rsync_opts)
7
+ cmd = "rsync #{opt.join(" ")} #{from} #{to}"
8
+ puts "Executing command \"#{cmd}\""
9
+ out = %x|#{cmd}|
10
+ puts out if ENV['VERBOSE']
11
+ out
12
+ end
13
+
14
+ namespace :sync do
15
+ desc "Sync plugins down to the local site"
16
+ task :plugins do
17
+ rsync "#{$remote_site}/wp-content/plugins/",
18
+ "#{$local_site}/wp-content/plugins/"
19
+ end
20
+
21
+ desc "Sync down theme specified by $THEME"
22
+ task :theme do
23
+ theme = ENV['THEME']
24
+ raise "You must specify a theme passed by THEME env var." if theme.nil?
25
+ rsync "#{$remote_site}/wp-content/themes/#{theme}",
26
+ "#{$local_site}/wp-content/themes/#{theme}"
27
+ end
28
+ end
29
+
30
+ desc "Deploy the local copy to the website"
31
+ task :deploy do
32
+ rsync "#{$local_site}/wp-content/themes/#{$theme_name}/",
33
+ "#{$remote_site}/wp-content/themes/#{$theme_name}/"
34
+ end
35
+
36
+ desc "Bootstrap the app, downloading the latest wordpress to the current directory"
37
+ task :bootstrap do
38
+ puts "TODO"
39
+ end
40
+
41
+ namespace :deploy do
42
+ desc "Deploy the latest versions of plugins to the live website"
43
+ task :plugins do
44
+ delete_remote = ENV['DELETE'].to_s == "yes"
45
+ extra_options = $rsync_opts.dup
46
+
47
+ extra_options << "--delete" if delete_remote
48
+
49
+ rsync "#{$local_site}/wp-content/plugins/",
50
+ "#{$remote_site}/wp-content/plugins/",
51
+ extra_options
52
+ end
53
+ end
@@ -0,0 +1,16 @@
1
+ class Wordpress::Tools::Template
2
+ def initialize(template, params={})
3
+ @params = params
4
+ @template = template
5
+ metaclass = class <<self; self; end
6
+
7
+
8
+ params.each do |k, v|
9
+ metaclass.send(:define_method, k) { v }
10
+ end
11
+ end
12
+
13
+ def render
14
+ ERB.new(@template).result(binding)
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ module Wordpress
2
+ module Tools
3
+ VERSION = "0.0.1alpha1"
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ sync.application=<%= theme_name %>
2
+ sync.destination.projectdir=
3
+
4
+ sync.remote.user=
5
+ sync.excludelist=\.gitignore|build\.xml|build\.properties
6
+ git.repository=
7
+ git.branch=master
8
+
9
+ sync.remote.appservers=server1,server2,server3
@@ -0,0 +1,65 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project name="<%= theme_name %>"
3
+ default="prepare"
4
+ basedir="."
5
+ description="Using phing to automate wordpress deploy">
6
+
7
+ <property file="build.properties">
8
+ <filterchain>
9
+ <expandproperties/>
10
+ </filterchain>
11
+ </property>
12
+
13
+ <property name="sync.cachedir" value="~/.repo-cache/${sync.application}"/>
14
+ <property name="sync.files" value="${sync.cachedir}/.gitfiles"/>
15
+ <property name="message" value="Print instructions for first deploy"/>
16
+ <property name="rsynccmd" value="rsync -av --progress --files-from=${sync.files}"/>
17
+
18
+ <target name="prepare">
19
+ <echo msg="${message}"/>
20
+ <exec command="cat README.txt" logoutput="true"/>
21
+ </target>
22
+
23
+ <target name="deploy:prepare">
24
+ <fail unless="sync.remote.host"
25
+ msg="Please set the property sync.remote.host on you build.properties file, or using -D switch from the command-line"/>
26
+
27
+ <property name="sync.remote.sshcommand"
28
+ value="mkdir -p $(dirname ${sync.cachedir}) &amp;&amp;
29
+ echo $([ -d &quot;${sync.cachedir}&quot; ] || git clone ${git.repository} ${sync.cachedir}) &amp;&amp;
30
+ cd ${sync.cachedir} &amp;&amp;
31
+ git checkout -f ${git.branch} &amp;&amp;
32
+ git pull --rebase &amp;&amp;
33
+ echo $(git ls-files | egrep -v '&quot;'&quot;'(${sync.excludelist})'&quot;'&quot;' &gt; ${sync.files})"/>
34
+ <echo msg="Executing '${sync.remote.sshcommand}' on remote host ${sync.remote.host}"/>
35
+ <exec
36
+ command="ssh ${sync.remote.user}@${sync.remote.host} '${sync.remote.sshcommand}'"
37
+ logoutput="true"
38
+ />
39
+ </target>
40
+
41
+ <target name="deploy:check:all" description="List changes to be sent across all servers">
42
+ <foreach list="${sync.remote.appservers}" target="deploy:check" param="sync.remote.host"/>
43
+ </target>
44
+
45
+ <target name="deploy:all" description="List changes to be sent across all servers">
46
+ <foreach list="${sync.remote.appservers}" target="deploy" param="sync.remote.host"/>
47
+ </target>
48
+
49
+ <target name="deploy:check" depends="deploy:prepare" description="List changes to be sent to server">
50
+ <property name="sync.remote.rsynccommand"
51
+ value="${rsynccmd} --dry-run ${sync.cachedir} ${sync.destination.projectdir}"/>
52
+ <exec
53
+ command="ssh ${sync.remote.user}@${sync.remote.host} '${sync.remote.rsynccommand}'"
54
+ logoutput="true"/>
55
+ </target>
56
+
57
+ <target name="deploy" depends="deploy:prepare" description="Sync files to the remote server">
58
+ <property name="sync.remote.rsynccommand"
59
+ value="${rsynccmd} ${sync.cachedir} ${sync.destination.projectdir}; chmod a+w ${sync.destination.projectdir}/tmp"/>
60
+
61
+ <exec
62
+ command="ssh ${sync.remote.user}@${sync.remote.host} '${sync.remote.rsynccommand}'"
63
+ logoutput="true"/>
64
+ </target>
65
+ </project>
@@ -0,0 +1,36 @@
1
+ <?php
2
+ require_once dirname(__FILE__) . '/classes/<%= class_prefix %>Theme.class.php';
3
+
4
+ function <%= theme_name %>setup_theme() {
5
+ <%= class_prefix %>Theme::themeInitialize();
6
+ }
7
+ add_action('after_setup_theme', '<%= theme_name %>setup_theme');
8
+
9
+
10
+ function <%= theme_name %>init() {
11
+ if (class_exists('STSTheme'))
12
+ {
13
+ $theme =& <%= class_prefix %>Theme::getInstance();
14
+ $theme->init();
15
+ }
16
+ else
17
+ {
18
+ $msg = __("Please install and/or activate iNF Web Theme Framework", "<%= theme_name %>");
19
+ if (is_admin())
20
+ add_action('admin_notices', create_function('',
21
+ "echo \"<div id='message' class='error'><p><strong>$msg</strong></p></div>\";"
22
+ ));
23
+ else
24
+ die($msg);
25
+ }
26
+
27
+ $files = scandir(TEMPLATEPATH . '/helpers', 1);
28
+
29
+ if ($files !== false) {
30
+ foreach ($files as $file) {
31
+ if (!preg_match('/\.php$/', $file)) continue;
32
+ include_once dirname(__FILE__ . '/helpers/' . $file);
33
+ }
34
+ }
35
+ }
36
+ add_action('init', '<%= theme_name %>init');
@@ -0,0 +1,3 @@
1
+ /*
2
+ Theme Name: <%= theme_name %>
3
+ */
@@ -0,0 +1,36 @@
1
+ <?php <% class_name = "#{class_prefix}Theme" %>
2
+ class <%= class_name %> {
3
+ static $instance;
4
+ static function getInstance() {
5
+ if (self::$instance == null)
6
+ self::$instance = new <%= class_name %>();
7
+ return self::$instance;
8
+ }
9
+
10
+ static function themeInitialize() {
11
+ $i = self::getInstance();
12
+ $i->setFeatures();
13
+ add_action('init', array(&$i, 'init'));
14
+ }
15
+
16
+ function __construct() {
17
+ $path = get_template_directory() . "/languages";
18
+ load_theme_textdomain('<%= theme_name %>', $path);
19
+ }
20
+
21
+ function init() {
22
+ $this->registerPostTypes();
23
+ }
24
+
25
+ function setFeatures() {
26
+ // Uncomment these lines to add theme support
27
+ /*
28
+ add_theme_support('post-thumbnails');
29
+ add_theme_support('menus');
30
+ */
31
+ }
32
+
33
+ function registerPostTypes() {
34
+ // Register post types here
35
+ }
36
+ }
@@ -0,0 +1,4 @@
1
+ *
2
+ !<%= theme_name %>/
3
+ !<%= theme_name %>/*
4
+ !<%= theme_name %>/**/*
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/wordpress-tools/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Rodolfo Carvalho"]
6
+ gem.email = ["rodolfo@infweb.net"]
7
+ gem.description = %q{A gem to create and manage wordpress websites}
8
+ gem.summary = <<-EOM
9
+ A gem to create and manage wordpress websites.
10
+ In this first version, you can use the gem to initialize a blank wordpress website.
11
+ EOM
12
+ gem.homepage = "http://github.com/infweb/wordpress-tools"
13
+
14
+ gem.license = "MIT"
15
+
16
+ gem.required_ruby_version = '>= 1.8.7'
17
+
18
+ gem.files = `git ls-files`.split($\)
19
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
20
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
+ gem.name = "wordpress-tools"
22
+ gem.require_paths = ["lib"]
23
+ gem.version = Wordpress::Tools::VERSION
24
+
25
+ gem.add_dependency "rake"
26
+ gem.add_dependency "compass"
27
+ gem.add_dependency "activesupport", "~> 3.2.12"
28
+ gem.add_dependency "colorize"
29
+ end
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wordpress-tools
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1alpha1
5
+ prerelease: 5
6
+ platform: ruby
7
+ authors:
8
+ - Rodolfo Carvalho
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !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: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: compass
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: activesupport
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 3.2.12
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 3.2.12
62
+ - !ruby/object:Gem::Dependency
63
+ name: colorize
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: A gem to create and manage wordpress websites
79
+ email:
80
+ - rodolfo@infweb.net
81
+ executables:
82
+ - wp
83
+ extensions: []
84
+ extra_rdoc_files: []
85
+ files:
86
+ - .gitignore
87
+ - Gemfile
88
+ - LICENSE
89
+ - README.md
90
+ - Rakefile
91
+ - bin/wp
92
+ - files/footer.php
93
+ - files/header.php
94
+ - files/index.php
95
+ - files/main_gitignore
96
+ - files/plugins_gitignore
97
+ - lib/wordpress-tools.rb
98
+ - lib/wordpress-tools/command_line.rb
99
+ - lib/wordpress-tools/command_line/action.rb
100
+ - lib/wordpress-tools/command_line/action/base.rb
101
+ - lib/wordpress-tools/command_line/action/init.rb
102
+ - lib/wordpress-tools/configuration.rb
103
+ - lib/wordpress-tools/tasks.rb
104
+ - lib/wordpress-tools/template.rb
105
+ - lib/wordpress-tools/version.rb
106
+ - templates/build.properties.erb
107
+ - templates/build.xml.erb
108
+ - templates/functions.php.erb
109
+ - templates/style.css.erb
110
+ - templates/theme_class.php.erb
111
+ - templates/themes_gitignore.erb
112
+ - wordpress-tools.gemspec
113
+ homepage: http://github.com/infweb/wordpress-tools
114
+ licenses:
115
+ - MIT
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: 1.8.7
126
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>'
130
+ - !ruby/object:Gem::Version
131
+ version: 1.3.1
132
+ requirements: []
133
+ rubyforge_project:
134
+ rubygems_version: 1.8.23
135
+ signing_key:
136
+ specification_version: 3
137
+ summary: A gem to create and manage wordpress websites. In this first version, you
138
+ can use the gem to initialize a blank wordpress website.
139
+ test_files: []