From 9b553d148797b6a803f856329def0aff071d2227 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 14 Feb 2015 15:32:55 +0000 Subject: [PATCH] Convert wordpress_theme to an LWRP --- .../wordpress_theme.rb => providers/theme.rb} | 60 ++++++++++++------- cookbooks/wordpress/resources/theme.rb | 33 ++++++++++ 2 files changed, 70 insertions(+), 23 deletions(-) rename cookbooks/wordpress/{definitions/wordpress_theme.rb => providers/theme.rb} (56%) create mode 100644 cookbooks/wordpress/resources/theme.rb diff --git a/cookbooks/wordpress/definitions/wordpress_theme.rb b/cookbooks/wordpress/providers/theme.rb similarity index 56% rename from cookbooks/wordpress/definitions/wordpress_theme.rb rename to cookbooks/wordpress/providers/theme.rb index 0720a8f1f..018492bc1 100644 --- a/cookbooks/wordpress/definitions/wordpress_theme.rb +++ b/cookbooks/wordpress/providers/theme.rb @@ -1,8 +1,8 @@ # # Cookbook Name:: wordpress -# Definition:: wordpress_theme +# Provider:: wordpress_theme # -# 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_theme, :action => [:enable] do - name = params[:name] - site = params[:site] - site_directory = node[:wordpress][:sites][site][:directory] - theme_directory = "#{site_directory}/wp-content/themes/#{name}" - source = params[:source] +def whyrun_supported? + true +end + +use_inline_resources - if source +action :create do + if new_resource.source remote_directory theme_directory do cookbook "wordpress" - source source + source new_resource.source owner node[:wordpress][:user] group node[:wordpress][:group] mode 0755 @@ -36,31 +36,45 @@ define :wordpress_theme, :action => [:enable] do files_mode 0644 end else - repository = params[:repository] - - unless repository - version = params[:version] || node[:wordpress][:plugins][name][:version] - repository = "http://themes.svn.wordpress.org/#{name}/#{version}" - end + theme_repository = new_resource.repository || default_repository - if repository =~ /\.git$/ + if theme_repository.end_with?(".git") git theme_directory do action :sync - repository repository - revision params[:revision] + repository theme_repository + revision new_resource.revision user node[:wordpress][:user] group node[:wordpress][:group] - notifies :reload, "service[apache2]" end else subversion theme_directory do action :sync - repository repository + repository theme_repository user node[:wordpress][:user] group node[:wordpress][:group] - ignore_failure repository.start_with?("http://themes.svn.wordpress.org/") - notifies :reload, "service[apache2]" + ignore_failure theme_repository.start_with?("http://themes.svn.wordpress.org/") end end end end + +action :delete do + directory theme_directory do + action :delete + recursive true + end +end + +private + +def site_directory + node[:wordpress][:sites][new_resource.site][:directory] +end + +def theme_directory + "#{site_directory}/wp-content/themes/#{new_resource.name}" +end + +def default_repository + "http://themes.svn.wordpress.org/#{new_resource.name}/#{new_resource.version}" +end diff --git a/cookbooks/wordpress/resources/theme.rb b/cookbooks/wordpress/resources/theme.rb new file mode 100644 index 000000000..019b9c612 --- /dev/null +++ b/cookbooks/wordpress/resources/theme.rb @@ -0,0 +1,33 @@ +# +# Cookbook Name:: wordpress +# Resource:: wordpress_theme +# +# 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.39.5