From 8457be7e5e08d50425a5f705046ecd5830483a53 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 14 Feb 2015 14:53:39 +0000 Subject: [PATCH 1/1] Convert wordpress_plugin to an LWRP --- .../plugin.rb} | 72 +++++++++++-------- cookbooks/wordpress/resources/plugin.rb | 33 +++++++++ 2 files changed, 77 insertions(+), 28 deletions(-) rename cookbooks/wordpress/{definitions/wordpress_plugin.rb => providers/plugin.rb} (51%) create mode 100644 cookbooks/wordpress/resources/plugin.rb diff --git a/cookbooks/wordpress/definitions/wordpress_plugin.rb b/cookbooks/wordpress/providers/plugin.rb similarity index 51% rename from cookbooks/wordpress/definitions/wordpress_plugin.rb rename to cookbooks/wordpress/providers/plugin.rb index 7be7a0038..ca490847e 100644 --- a/cookbooks/wordpress/definitions/wordpress_plugin.rb +++ b/cookbooks/wordpress/providers/plugin.rb @@ -1,8 +1,8 @@ # # Cookbook Name:: wordpress -# Definition:: wordpress_plugin +# Provider:: wordpress_plugin # -# Copyright 2013, OpenStreetMap Foundation +# Copyright 2015, OpenStreetMap Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,17 +17,17 @@ # limitations under the License. # -define :wordpress_plugin, :action => [:enable] do - name = params[:name] - site = params[:site] - site_directory = node[:wordpress][:sites][site][:directory] - plugin_directory = "#{site_directory}/wp-content/plugins/#{name}" - source = params[:source] +def whyrun_supported? + true +end + +use_inline_resources - if source +action :create do + if new_resource.source remote_directory plugin_directory do cookbook "wordpress" - source source + source new_resource.source owner node[:wordpress][:user] group node[:wordpress][:group] mode 0755 @@ -36,36 +36,52 @@ define :wordpress_plugin, :action => [:enable] do files_mode 0755 end else - repository = params[:repository] - - unless params - version = params[:version] || Chef::Wordpress.current_plugin_version(name) - - if version =~ /trunk/ - repository = "http://plugins.svn.wordpress.org/#{name}/trunk" - else - repository = "http://plugins.svn.wordpress.org/#{name}/tags/#{version}" - end - end + plugin_repository = new_resource.repository || default_repository - if repository =~ /\.git$/ + if plugin_repository.end_with?(".git") git plugin_directory do action :sync - repository repository - revision params[:revision] + repository plugin_repository + revision new_resource.revision user node[:wordpress][:user] group node[:wordpress][:group] - notifies :reload, "service[apache2]" end else subversion plugin_directory do action :sync - repository repository + repository plugin_repository user node[:wordpress][:user] group node[:wordpress][:group] - ignore_failure repository.start_with?("http://plugins.svn.wordpress.org/") - notifies :reload, "service[apache2]" + ignore_failure plugin_repository.start_with?("http://plugins.svn.wordpress.org/") end end end end + +action :delete do + directory plugin_directory do + action :delete + recursive true + end +end + +private + +def site_directory + node[:wordpress][:sites][new_resource.site][:directory] +end + +def plugin_directory + "#{site_directory}/wp-content/plugins/#{new_resource.name}" +end + +def default_repository + version = new_resource.version || + Chef::Wordpress.current_plugin_version(new_resource.name) + + if version =~ /trunk/ + "http://plugins.svn.wordpress.org/#{new_resource.name}/trunk" + else + "http://plugins.svn.wordpress.org/#{new_resource.name}/tags/#{version}" + end +end diff --git a/cookbooks/wordpress/resources/plugin.rb b/cookbooks/wordpress/resources/plugin.rb new file mode 100644 index 000000000..a1f5ad729 --- /dev/null +++ b/cookbooks/wordpress/resources/plugin.rb @@ -0,0 +1,33 @@ +# +# Cookbook Name:: wordpress +# Resource:: wordpress_plugin +# +# Copyright 2015, OpenStreetMap Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +actions :create, :delete +default_action :create + +attribute :name, :kind_of => String, :name_attribute => true +attribute :site, :kind_of => String, :required => true +attribute :source, :kind_of => String +attribute :version, :kind_of => String +attribute :repository, :kind_of => String +attribute :revision, :kind_of => String +attribute :reload_apache, :kind_of => [TrueClass, FalseClass], :default => true + +def after_created + notifies :reload, "service[apache2]" if reload_apache +end -- 2.43.2