-require "chef/mixin/command"
+require "chef/mixin/shell_out"
+
+require "httpclient"
+require "php_serialize"
class Chef
module Wordpress
- extend Chef::Mixin::Command
+ extend Chef::Mixin::ShellOut
@api_responses = {}
@svn_responses = {}
- def self.current_version
- core_version_check["offers"].first["current"]
- end
+ class << self
+ def current_version
+ core_version_check["offers"].first["current"]
+ end
- def self.current_plugin_version(name)
- if svn_cat("http://plugins.svn.wordpress.org/#{name}/trunk/readme.txt") =~ /Stable tag:\s*([^\s\r]*)[\s\r]*/
- Regexp.last_match[1]
- else
- "trunk"
+ def current_plugin_version(name)
+ if svn_cat("http://plugins.svn.wordpress.org/#{name}/trunk/readme.txt") =~ /Stable tag:\s*([^\s\r]*)[\s\r]*/
+ Regexp.last_match[1]
+ else
+ "trunk"
+ end
end
- end
- private
+ private
- def self.core_version_check
- api_get("http://api.wordpress.org/core/version-check/1.6")
- end
+ def core_version_check
+ api_get("http://api.wordpress.org/core/version-check/1.6")
+ end
- def self.api_get(url)
- @api_responses[url] ||= ::PHP.unserialize(::HTTPClient.new.get_content(url))
- end
+ def api_get(url)
+ @api_responses[url] ||= ::PHP.unserialize(::HTTPClient.new.get_content(url))
+ end
- def self.svn_cat(url)
- unless @svn_responses[url]
- status, stdout, stderr = output_of_command("svn cat #{url}", {})
- handle_command_failures(status, "STDOUT: #{stdout}\nSTDERR: #{stderr}", :output_on_failure => true)
+ def svn_cat(url)
+ unless @svn_responses[url]
+ result = shell_out!("svn", "cat", url)
- @svn_responses[url] = stdout.force_encoding("UTF-8")
- end
+ @svn_responses[url] = result.stdout.force_encoding("UTF-8")
+ end
- @svn_responses[url]
+ @svn_responses[url]
+ end
end
end
end