environment/bin/dat
Artur Gurgul1 757921be5b update
2025-08-06 10:17:48 +02:00

78 lines
1.7 KiB
Ruby
Executable file

#!/usr/bin/env ruby
require 'optparse'
require 'ostruct'
# dat set private git://repo
# dat init private
# dat install
# dat reinstall
options = OpenStruct.new
# take the first so OptionParser will not see it
subcommand = ARGV.shift&.to_sym
options.name = ARGV[0] && ARGV[0] !~ /^-/ ? ARGV.shift : nil
OptionParser.new do |opt|
opt.on('-i', '--install', 'Install dat for the user') { |o| options.type = :install }
opt.on('-u', '--update', 'Update') do |o|
options.type = :update
end
opt.on('-n', '--name NAME', 'Make the recipe') do |o|
options.name = o
end
opt.on('--cache', 'Use cache') do |o|
options.use_cache = true
end
opt.on('-t', '--target TARGET', ['user', 'usr', 'package', 'pkg', 'system', 'sys'], 'Target type (user, package, system)') do |target|
normalized = case target.downcase
when 'user', 'usr'
:user
when 'package', 'pkg'
:package
when 'system', 'sys'
:system
end
options.target = normalized
end
end.parse!
case subcommand
when :install
puts "installing...."
require 'install'
Install.base_install
when :update
puts "updating...."
require 'install'
Install.base_update
when :make
puts "making..."
require 'make'
Make.command(options)
when :goto
Dir.chdir(ENV["DAT_ROOT"])
when :vm
puts 'vm command'
# dat vm --create name
# dat vm --run name --graphic (default no graphic)
# Idea ===========
# dat vm --pool --execute script.sh
else
puts "Error not found #{options.type}"
end
# install locally for the user
# dat install
# dat set git://repo
# dat init
# dat deinit
# dat reinstall