require 'erb' class NGINXProxy class << self attr_accessor :domain, :port, :service, :user def domain(value = nil) @domain = value unless value.nil? @domain end def user(value = nil) @user = value unless value.nil? @user end def port(value = nil) @port = value unless value.nil? @port end # This is name of the daemon that will be installed # This is also master name user as user if not provided def service(value = nil) @service = value unless value.nil? @service end def generate template = File.read("proxy.erb") template = ERB.new(template) template.result(binding) end def available_path "/etc/nginx/sites-available/#{service}.#{domain}" end def enabled_path "/etc/nginx/sites-available/#{service}.#{domain}" end def install config = generate File.write end end end class ExampleProxy < NGINXProxy domain "gurgul.org" service "forgejo" user "git" port 3000 end puts ExampleProxy.generate puts ExampleProxy.path