Sha256: 9aeb30a8bc0ad3ed800e690aa21515bb7a831e367f298b929df1526fdd815706

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

module Fasten
  module Yaml
    def transform_params(params)
      params.keys.each do |k|
        val = params[k]

        if val.is_a?(String) && (match = %r{^/(.+)/$}.match(val))
          val = Regexp.new(match[1])
        end

        params[k.to_sym] = val
        params.delete(k)
      end
    end

    def load_yaml(path)
      items = YAML.safe_load(File.read(path)).each do |name, params|
        if params.is_a? String
          params = { after: params }
        elsif params.is_a? Hash
          transform_params(params)
        else
          params = {}
        end

        add Fasten::Task.new({ name: name }.merge(params))
      end

      log_info "Loaded #{items.count} tasks from #{path}"
    end

    def save_yaml(path)
      keys = %i[after shell]

      items = task_list.map do |task|
        data = task.to_h.select do |key, _val|
          keys.include? key
        end

        [task.name, data]
      end.to_h

      File.write path, items.to_yaml

      log_info "Loaded #{items.count} tasks into #{path}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fasten-0.5.4 lib/fasten/yaml.rb