make it possible to call DSL script

This commit is contained in:
Artur Gurgul1 2025-08-06 17:49:36 +02:00
parent 2578cd7a6d
commit 9c77ae9d2c
2 changed files with 75 additions and 0 deletions

View file

@ -56,6 +56,10 @@ when :make
puts "making..."
require 'make'
Make.command(options)
when :execute
puts "Ececuting: #{options.name}"
require 'execute'
Execute.file(options)
when :goto
Dir.chdir(ENV["DAT_ROOT"])
when :vm

71
lib/execute.rb Normal file
View file

@ -0,0 +1,71 @@
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