crabgrass/config/directories.rb

69 lines
2.1 KiB
Ruby

require 'pathname'
#
# All the magic directory constants should live here.
#
dirs = []
APP_ROOT = Pathname.new(File.dirname(__FILE__)) + '..'
# config
dirs << CRABGRASS_CONFIG_DIRECTORY = APP_ROOT + 'config/crabgrass'
# extensions
dirs << EXTENSION_DIRECTORY = APP_ROOT + 'extensions'
dirs << THEMES_DIRECTORY = EXTENSION_DIRECTORY + 'themes'
dirs << SEARCH_FILTERS_DIRECTORY = EXTENSION_DIRECTORY + 'search_filters'
dirs << LOCALE_OVERRIDE_DIRECTORY = EXTENSION_DIRECTORY + 'locales'
# plugins
dirs << PAGES_DIRECTORY = EXTENSION_DIRECTORY + 'pages'
dirs << CRABGRASS_PLUGINS_DIRECTORY = APP_ROOT + 'vendor/crabgrass_plugins'
# tmp
dirs << TMP_DIRECTORY = APP_ROOT + 'tmp'
dirs << CACHE_DIRECTORY = TMP_DIRECTORY + 'cache'
# stylesheets and javascript
dirs << STATIC_JS_SRC_DIR = APP_ROOT + 'app/assets/javascripts'
dirs << AS_NEEDED_JS_SRC_DIR = APP_ROOT + 'app/assets/javascripts/as_needed'
dirs << STATIC_JS_DEST_DIR = APP_ROOT + 'public/static'
dirs << AS_NEEDED_JS_DEST_DIR = APP_ROOT + 'public/static/as_needed'
# assets
if Rails.env == 'test'
dirs << ASSET_PRIVATE_STORAGE = APP_ROOT + 'tmp/private_assets'
dirs << ASSET_PUBLIC_STORAGE = APP_ROOT + 'tmp/public_assets'
dirs << PICTURE_PRIVATE_STORAGE = APP_ROOT + 'tmp/private_pictures'
dirs << PICTURE_PUBLIC_STORAGE = APP_ROOT + 'tmp/public_pictures'
dirs << KEYRING_STORAGE = APP_ROOT + 'tmp/private_assets/keyrings'
else
dirs << ASSET_PRIVATE_STORAGE = APP_ROOT + 'assets'
dirs << ASSET_PUBLIC_STORAGE = APP_ROOT + 'public/assets'
dirs << PICTURE_PRIVATE_STORAGE = APP_ROOT + 'assets/pictures'
dirs << PICTURE_PUBLIC_STORAGE = APP_ROOT + 'public/pictures'
dirs << KEYRING_STORAGE = APP_ROOT + 'assets/keyrings'
end
#
# ensure the directories exist
#
require 'fileutils'
dirs.each do |dir|
resolved = File.symlink?(dir) ? File.readlink(dir) : dir
next if File.directory?(resolved)
if File.exist?(resolved)
msg = 'ERROR: %s is supposed to be a directory, but file already exists'
raise format(msg, resolved)
end
FileUtils.mkdir_p(resolved)
end