Compare commits
2 commits
2578cd7a6d
...
a7807f089c
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a7807f089c | ||
![]() |
9c77ae9d2c |
3 changed files with 112 additions and 0 deletions
4
bin/dat
4
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
|
||||
|
|
37
doc/execute.md
Normal file
37
doc/execute.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
|
||||
|
||||
It is how you can describe config of your server
|
||||
|
||||
|
||||
|
||||
```ruby
|
||||
user :artur
|
||||
user :lucyna
|
||||
|
||||
service :forgejo do |context|
|
||||
context.home_page = true
|
||||
# per default all users are allowed
|
||||
context.users = [:artur]
|
||||
end
|
||||
|
||||
service :zulip
|
||||
|
||||
# this should be already installed, becouse it is required by others
|
||||
service :postgresql
|
||||
|
||||
install :nvim, :python
|
||||
```
|
||||
|
||||
|
||||
And then save it as `Configfile` as default or with specyfic name
|
||||
|
||||
|
||||
```bash
|
||||
# if default file name
|
||||
dat execute
|
||||
|
||||
# if non standard file
|
||||
dat execute file-name
|
||||
|
||||
```
|
||||
|
71
lib/execute.rb
Normal file
71
lib/execute.rb
Normal 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
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue