Sha256: 84c5fa4ec640bd1879d5049128ef764e52f51028432e2436ab4048a7a4993424

Contents?: true

Size: 1.46 KB

Versions: 20

Compression:

Stored size: 1.46 KB

Contents

module Berkshelf
  class Lockfile
    class << self
      def remove!
        FileUtils.rm_f DEFAULT_FILENAME
      end

      # @param [Array<CookbookSource>] sources
      def update!(sources)
        contents = File.readlines(DEFAULT_FILENAME)
        contents.delete_if do |line|
          line =~ /cookbook '(#{sources.map(&:name).join('|')})'/
        end

        contents += sources.map { |source| definition(source) }
        File.open(DEFAULT_FILENAME, 'wb') { |f| f.write(contents.join("\n").squeeze("\n")) }
      end

      # @param [CookbookSource] source
      #
      # @return [String]
      def definition(source)
        definition = "cookbook '#{source.name}'"

        if source.location.is_a?(GitLocation)
          definition += ", :git => '#{source.location.uri}', :ref => '#{source.location.branch || 'HEAD'}'"
        elsif source.location.is_a?(PathLocation)
          definition += ", :path => '#{source.location.path}'"
        else
          definition += ", :locked_version => '#{source.locked_version}'"
        end

        definition
      end
    end

    DEFAULT_FILENAME = "#{Berkshelf::DEFAULT_FILENAME}.lock".freeze

    attr_reader :sources

    def initialize(sources)
      @sources = Array(sources)
    end

    def write(filename = DEFAULT_FILENAME)
      content = sources.map { |source| self.class.definition(source) }.join("\n")
      File.open(filename, "wb") { |f| f.write content }
    end

    def remove!
      self.class.remove!
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
berkshelf-1.4.6 lib/berkshelf/lockfile.rb
berkshelf-1.4.5 lib/berkshelf/lockfile.rb
berkshelf-1.4.4 lib/berkshelf/lockfile.rb
berkshelf-1.4.3 lib/berkshelf/lockfile.rb
berkshelf-1.4.2 lib/berkshelf/lockfile.rb
berkshelf-1.4.1 lib/berkshelf/lockfile.rb
berkshelf-1.4.0 lib/berkshelf/lockfile.rb
berkshelf-1.4.0.rc1 lib/berkshelf/lockfile.rb
berkshelf-1.3.1 lib/berkshelf/lockfile.rb
berkshelf-1.3.0.rc1 lib/berkshelf/lockfile.rb
berkshelf-1.2.1 lib/berkshelf/lockfile.rb
berkshelf-1.2.0.rc1 lib/berkshelf/lockfile.rb
berkshelf-1.1.6 lib/berkshelf/lockfile.rb
berkshelf-1.1.5 lib/berkshelf/lockfile.rb
berkshelf-1.1.4 lib/berkshelf/lockfile.rb
berkshelf-1.1.3 lib/berkshelf/lockfile.rb
berkshelf-1.1.2 lib/berkshelf/lockfile.rb
berkshelf-1.1.1 lib/berkshelf/lockfile.rb
berkshelf-1.1.0 lib/berkshelf/lockfile.rb
berkshelf-1.1.0.rc1 lib/berkshelf/lockfile.rb