module Execute end require 'rubygems' require 'ostruct' # dat execute progress # dat execute < default Configfile module Execute def dependency(name) puts "Checking for #{name}..." unless gem_installed?(name) puts "Installing #{name}..." system("gem install #{name}") else puts "#{name} is already installed." end require name rescue LoadError => e puts "Failed to load #{name}: #{e.message}" end def gem_installed?(name) Gem::Specification::find_all_by_name(name).any? end def postgres require 'setup/postgresql' puts 'installing postgres' Setup::PostgreSQL.install end def service(name) if block_given? context = OpenStruct.new output = yield context puts output puts "context: #{context}" else puts "No block provided" end end def user(name) puts "Creating user: #{name}" end def install(*packages) packages.each do |pkg| puts "Installing #{pkg}" end end def self.file(options) puts "options: #{options}" dsl = Object.new dsl.extend(Execute) # Configfile path = File.join(Dir.pwd, options.name || "./Configfile") dsl.instance_eval(File.read(path), path) # Execute the config end end