Sha256: c8494fb4599b986032dacd258d52adf777cb652efd6e283ba3ec79d39b1550af

Contents?: true

Size: 1.67 KB

Versions: 15

Compression:

Stored size: 1.67 KB

Contents

module DnsOne; class Util
    
  DOM_REGEX = /^[a-z0-9]+([\-\.][a-z0-9]+)*\.[a-z]{2,32}$/i

  class << self
    def die msg
      Global.logger.fatal msg
      exit 1
    end

    def run cmd
        puts "Running #{cmd}..."
        system cmd
    end

    def has_systemd?
        File.exist?(`which systemctl`.strip) && 
        File.writable?('/lib/systemd/system')
    end

    def ensure_sytemd
        unless has_systemd?
            STDERR.puts "Systemd not available. Aborting." 
            exit 1
        end
    end

    def match_root stat
        stat.uid == 0 && stat.gid == 0
    end

    def last_mod constant
      constant.to_s.split('::').last
    end

    def const_underscore name
        name = name.to_s.dup
        name.gsub!('::', '/')
        name.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2')
        name.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
        name.tr!("-", "_")
        name.downcase!
        name
    end

    def hash_to_ostruct_deep hash
        os = OpenStruct.new
        hash.each_pair{ |k, v| 
            if v.is_a? Hash
                os[k] = hash_to_ostruct_deep v
            else
                os[k] = v
            end
        }
        os
    end

    def init_logger logdev, level = Logger::WARN, shift_age = 10, shift_size = 2**20
        if logdev.is_a? String
            begin
                FileUtils.mkdir_p File.dirname(logdev)
                File.write logdev, ''
            rescue => e
                $stderr.puts "#{e.desc}\nCannot open log file #{logdev}. Will use STDOUT."
                logdev = $stdout
            end
        end
        l = Logger.new logdev, shift_age, shift_size
        l.level = level
        l
    end

  end 

end; end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
dns_one-0.5.20 lib/dns_one/util.rb
dns_one-0.5.19 lib/dns_one/util.rb
dns_one-0.5.18 lib/dns_one/util.rb
dns_one-0.5.17 lib/dns_one/util.rb
dns_one-0.5.16 lib/dns_one/util.rb
dns_one-0.5.15 lib/dns_one/util.rb
dns_one-0.5.14 lib/dns_one/util.rb
dns_one-0.5.13 lib/dns_one/util.rb
dns_one-0.5.12 lib/dns_one/util.rb
dns_one-0.5.11 lib/dns_one/util.rb
dns_one-0.5.10 lib/dns_one/util.rb
dns_one-0.5.9 lib/dns_one/util.rb
dns_one-0.5.8 lib/dns_one/util.rb
dns_one-0.5.7 lib/dns_one/util.rb
dns_one-0.5.6 lib/dns_one/util.rb