From 9c77ae9d2c60d4d9fca410d1b8335fbb440ccb9c Mon Sep 17 00:00:00 2001 From: Artur Gurgul1 Date: Wed, 6 Aug 2025 17:49:36 +0200 Subject: [PATCH] make it possible to call DSL script --- bin/dat | 4 +++ lib/execute.rb | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 lib/execute.rb diff --git a/bin/dat b/bin/dat index b6fd0fb..274d5fa 100755 --- a/bin/dat +++ b/bin/dat @@ -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 diff --git a/lib/execute.rb b/lib/execute.rb new file mode 100644 index 0000000..d91d6ef --- /dev/null +++ b/lib/execute.rb @@ -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 +