kurtisnelson/menu-cli

View on GitHub
lib/menu/runner.rb

Summary

Maintainability
A
1 hr
Test Coverage
module Menu
  class Runner
    def initialize options
      @options = options
    end

    def release
      releases = Menu::Releases.do @options.component
      version = next_version(releases)

      if @options.release && @options.release < version
        puts "Version number already exists, are you sure you want to overwrite? [y/N]"
        exit 1 unless gets.chomp == 'y'
      end
      version = @options.release if @options.release
      releases.delete_if {|r| r.version == version }

      log "Release ##{version} for #{@options.component}..."
      log "Beta release" if @options.beta

      r = Release.new
      r.options = @options
      r.version = version
      r.payload_file = @options.payload
      r.beta = @options.beta
      r.upload_payload

      releases << r

      s3 = Aws::S3::Client.new(region: 'us-east-1')
      log "Uploading JSON..."
      log releases.to_json
      s3.put_object(
        acl: "public-read",
        body: releases.to_json,
        bucket: @options.bucket,
        key: "#{@options.component}.json",
        content_type: "application/json",
        cache_control: "public, s-maxage=7200, max-age=120"
      )
      log "JSON uploaded"
    end

    def next_version releases
      version = 0
      releases.each do |r|
        version = r.version if r.version > version
      end
      version += 1
      version
    end

    def log str
      puts str if @options.verbose
    end
  
  end
end