71 lines
1.3 KiB
Ruby
71 lines
1.3 KiB
Ruby
|
|
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
|
|
|