require 'singleton' require 'ostruct' module Frank class Settings include Singleton attr_accessor :environment attr_accessor :root attr_accessor :server attr_accessor :options attr_accessor :static_folder attr_accessor :dynamic_folder attr_accessor :layouts_folder attr_accessor :export attr_accessor :publish attr_accessor :sass_options attr_accessor :haml_options def initialize reset end # Reset settings to the defaults def reset # reset server settings @server = OpenStruct.new @server.handler = "mongrel" @server.hostname = "0.0.0.0" @server.port = "3601" # reset options @options = OpenStruct.new # export settings @export = OpenStruct.new @export.path = "exported" @export.silent = false @export.force = false # publish options @publish = OpenStruct.new @publish.host = nil @publish.path = nil @publish.username = nil @publish.password = nil @publish.mode = nil # setup folders @static_folder = "static" @dynamic_folder = "dynamic" @layouts_folder = "layouts" # setup 3rd party configurations @sass_options = {} @haml_options = {} end # return the proj folder name def proj_name @root.split('/').last end # Are we serving up a raw static folder? def serving_static? @serving_static end # Mark this Frank run as serving static def serving_static! @serving_static = true end # Check to see if we're compiling def exporting? @exporting end # Mark this Frank run as compiling def exporting! @exporting = true end # Silent export if set or in test def silent_export? @environment == :test || @export.silent end # Check to see if we're in production mode def production? @production end # Mark this Frank run as production def production! @production = true end # Force overwrite export folder if it exists def force_export! @export.force = true end # Mark this Frank run as publishing def publishing! @exporting = true @production = true end end end