Sha256: 28f63103821b95f60c9c086f847616f56ef6ce05bc0e1e795a3d492e7882f885

Contents?: true

Size: 1.61 KB

Versions: 194

Compression:

Stored size: 1.61 KB

Contents

module Origen
  class Application
    # Keeps track of production released versions
    class VersionTracker
      STORAGE_FILE = "#{Origen.root}/.version_tracker"

      # Returns an array containing all Production release
      # tags since they started being tracked
      def versions
        storage[:versions] ||= []
      end

      # Adds a new version to the tracker
      def add_version(version)
        restore_to_latest
        versions << version
        save
        check_in
      end

      # Returns the persisted storage container (a Hash)
      def storage
        return @storage if @storage
        if File.exist?(STORAGE_FILE)
          File.open(STORAGE_FILE) do |f|
            begin
              @storage = Marshal.load(f)
            rescue
              @storage = {}
            end
          end
        else
          @storage = {}
        end
      end

      # Save the persisted storage container to disk
      def save
        File.open(STORAGE_FILE, 'w') do |f|
          Marshal.dump(storage, f)
        end
      end

      # Check in the persisted storage container
      def check_in
        Origen.app.rc.checkin(STORAGE_FILE, force: true, unmanaged: true, comment: 'Recorded new version in the version tracker')
      end

      # Force the storage container to the latest checked in version
      def restore_to_latest
        @storage = nil
        # Check out the latest version of the storage, forcing to Trunk
        system "dssc co -get -force '#{STORAGE_FILE};Trunk:Latest'"
        system "dssc setselector 'Trunk' #{STORAGE_FILE}"
        `chmod 666 #{STORAGE_FILE}`
      end
    end
  end
end

Version data entries

194 entries across 194 versions & 1 rubygems

Version Path
origen-0.60.7 lib/origen/application/version_tracker.rb
origen-0.60.6 lib/origen/application/version_tracker.rb
origen-0.60.5 lib/origen/application/version_tracker.rb
origen-0.60.4 lib/origen/application/version_tracker.rb
origen-0.60.3 lib/origen/application/version_tracker.rb
origen-0.60.2 lib/origen/application/version_tracker.rb
origen-0.60.1 lib/origen/application/version_tracker.rb
origen-0.60.0 lib/origen/application/version_tracker.rb
origen-0.59.8 lib/origen/application/version_tracker.rb
origen-0.59.7 lib/origen/application/version_tracker.rb
origen-0.59.6 lib/origen/application/version_tracker.rb
origen-0.59.5 lib/origen/application/version_tracker.rb
origen-0.59.4 lib/origen/application/version_tracker.rb
origen-0.59.3 lib/origen/application/version_tracker.rb
origen-0.59.2 lib/origen/application/version_tracker.rb
origen-0.59.1 lib/origen/application/version_tracker.rb
origen-0.59.0 lib/origen/application/version_tracker.rb
origen-0.58.0 lib/origen/application/version_tracker.rb
origen-0.57.2 lib/origen/application/version_tracker.rb
origen-0.57.1 lib/origen/application/version_tracker.rb