Sha256: 4dcfee65c1f3b3b7e10c8b39a66b31df0fe7c3316f765b5c234cb8e9af19ba51

Contents?: true

Size: 729 Bytes

Versions: 1

Compression:

Stored size: 729 Bytes

Contents

require "yaml"

class TerraspaceBundler::Lockfile
  class Yamler
    def initialize(mods)
      @mods = mods.sort_by(&:name)
    end

    def dump
      YAML.dump(data.deep_stringify_keys)
    end

    def data
      @mods.inject({}) do |acc, mod|
        acc.merge(item(mod))
      end
    end

    def item(mod)
      props = mod.props.dup # passthrough: name, url, version, ref, tag, branch etc
      props.delete(:name) # different structure in Terrafile.lock YAML
      props[:sha] = mod.sha
      props.delete_if { |k,v| v.nil? }
      { mod.name => props }
    end

    def write
      IO.write(TB.config.lockfile, dump)
    end

    class << self
      def write(mods)
        new(mods).write
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
terraspace-bundler-0.2.0 lib/terraspace_bundler/lockfile/yamler.rb