class Permutation::Release

Public Class Methods

create(options) click to toggle source
# File lib/tools/release.rb, line 4
def create(options)
  account_config = Permutation::Config.account

  remote_branch = `git rev-parse --abbrev-ref --symbolic-full-name @{u}`
  sha = `git rev-parse #{remote_branch}`

  regex = /(git@github\.com|git@bitbucket\.org):(.*)\.git/
  repo_url = `git remote show origin | grep Fetch | cut -d: -f2-`.strip
  repo_url.match(regex)
  repo_name = $2

  response = Permutation::API.post(
    '/api/releases.json',
    options.merge({
      sha: sha,
      repo_url:  repo_url,
      repo_name: repo_name
    }),
    { 'Access-Token' => account_config['access_token'] }
  )

  if response.status == 201
    release = response.body
    if options[:force]
      puts "Updated release #{release['version']} for #{release['repository']['name']}"
    else
      puts "Created release #{release['version']} for #{release['repository']['name']}"
    end
  elsif response.status == 401
    puts "Unauthorized, please re-run permutation init"
    exit
  elsif response.status == 404
    puts "Repository #{repo_name} not found"
    exit
  else
    if error = response.body
      puts "Error: #{error['message']}"
    else
      puts "Error"
    end
  end
end
error(message) click to toggle source
# File lib/tools/release.rb, line 47
def error(message)
  puts message
  exit
end
parse_args(args) click to toggle source
# File lib/tools/release.rb, line 52
def parse_args(args)
  options = {}
  OptionParser.new do |opts|
    opts.banner = "Usage: permutation release [options]"
    opts.separator ""
    opts.separator "Options:"
    # opts.on("-p", "--parent PARENT") do |v|
    #   options[:parent] = v
    # end

    opts.on("-f", "--force [VERSION]", "Iterate using the new release") do |v|
      options[:force] = v
    end

    opts.on("-i", "--iterate [ITERATE]", "Iterate using the new release") do |v|
      options[:iterate] = v
    end

    opts.on("-b", "--bump [BUMP]", [:major, :minor, :patch]) do |v|
      options[:bump] = v
    end
  end.parse!

  options
end

Private Class Methods

config() click to toggle source
# File lib/tools/release.rb, line 80
def config
  @config ||= Permutation::Config.read
end