From aa521fc92857502598fb8b91fff6e8930f7eab05 Mon Sep 17 00:00:00 2001 From: Mark Longair Date: Tue, 3 Dec 2013 11:36:54 +0000 Subject: Ensure that the lib/themes directory exists before installing to there (An alternative would have been to add an empty lib/themes/.gitkeep file to this directory, but that makes ignoring the installed themes more complicated.) --- lib/tasks/themes.rake | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/tasks/themes.rake') diff --git a/lib/tasks/themes.rake b/lib/tasks/themes.rake index 78ffe73be..7651145ca 100644 --- a/lib/tasks/themes.rake +++ b/lib/tasks/themes.rake @@ -84,6 +84,7 @@ namespace :themes do end def install_theme(theme_url, verbose, deprecated=false) + FileUtils.mkdir_p plugin_dir deprecation_string = deprecated ? " using deprecated THEME_URL" : "" theme_name = theme_url_to_theme_name theme_url puts "Installing theme #{theme_name}#{deprecation_string} from #{theme_url}" -- cgit v1.2.3 From d4e75c6715c7ab15b257bbdd42625301783e84f6 Mon Sep 17 00:00:00 2001 From: Mark Longair Date: Tue, 3 Dec 2013 12:01:07 +0000 Subject: Try to uninstall the old theme from vendor/plugins and lib/themes The theme install task would fail if there's an old theme present in vendor/plugins, since it doesn't try to uninstall the plugin from that location, only the new location. Then when the install.rb in the new plugin runs, it'll complain that there's a public/alavetelitheme symlink already present. This commit changes themes:install to try to uninstall the plugin from both locations. --- lib/tasks/themes.rake | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'lib/tasks/themes.rake') diff --git a/lib/tasks/themes.rake b/lib/tasks/themes.rake index 7651145ca..65b142a63 100644 --- a/lib/tasks/themes.rake +++ b/lib/tasks/themes.rake @@ -9,6 +9,14 @@ namespace :themes do File.join(plugin_dir, theme_name) end + def old_theme_dir(theme_name) + File.join(Rails.root, "vendor", "plugins", theme_name) + end + + def possible_theme_dirs(theme_name) + [theme_dir(theme_name), old_theme_dir(theme_name)] + end + def checkout(commitish) puts "Checking out #{commitish}" if verbose system "git checkout #{commitish}" @@ -61,13 +69,14 @@ namespace :themes do end def uninstall(theme_name, verbose=false) - dir = theme_dir(theme_name) - if File.directory?(dir) - run_hook(theme_name, 'uninstall', verbose) - puts "Removing '#{dir}'" if verbose - rm_r dir - else - puts "Plugin doesn't exist: #{dir}" + possible_theme_dirs(theme_name).each do |dir| + if File.directory?(dir) + run_hook(theme_name, 'uninstall', verbose) + puts "Removing '#{dir}'" if verbose + rm_r dir + else + puts "Plugin doesn't exist: #{dir}" + end end end @@ -80,7 +89,7 @@ namespace :themes do end def installed?(theme_name) - File.directory?(theme_dir(theme_name)) + possible_theme_dirs(theme_name).any? { |dir| File.directory? dir } end def install_theme(theme_url, verbose, deprecated=false) -- cgit v1.2.3