class Xcode::Tasks

Attributes

project[R]

Public Class Methods

new(project_name = nil, &block) click to toggle source
# File lib/xcode/tasks.rb, line 9
def initialize(project_name = nil, &block)
  project_path = Pathname("#{project_name || File.basename(Dir.pwd)}.xcodeproj")
  abort "project #{project_path} not found" unless project_path.directory?
  @project = Project.new(project_path)
  block.call(project)
  define_tasks
end

Public Instance Methods

define_tasks() click to toggle source
# File lib/xcode/tasks.rb, line 17
def define_tasks
  return if @defined_tasks
  @defined_tasks = true

  desc 'build'
  task :build do
    packer = project.packer
    if packer.build
      $stderr.puts "Built #{packer.product_names.join(', ')}"
    end
  end

  desc 'pack'
  task :pack do
    packer = project.packer
    if packer.pack
      $stderr.puts "Packed #{packer.product_names.join(', ')} to #{packer.pack_path}"
    end
  end

  desc 'release'
  task :release do
    packer = project.packer
    if url = packer.release
      $stderr.puts "Released #{packer.product_names.join(', ')} as #{packer.pack_path} to #{url}"
    end
  end

  desc 'tag'
  task :tag do
    tagger = project.tagger
    if tagger.tag
      $stderr.puts "Tagged with #{tagger.version}"
    end
  end

  desc 'current version'
  task :version do
    puts project.version
  end

  namespace :version do
    desc 'write version specified using VERSION variable'
    task :write do
      version = project.version
      if version.set(ENV['VERSION']).write
        $stderr.puts "Wrote version #{version}"
      end
    end

    namespace :bump do
      %w[major minor patch].each do |level|
        desc "bump #{level}"
        task level do
          version = project.version
          if version.send("bump_#{level}").write
            $stderr.puts "Bumped version to #{version}"
          end
        end
      end
    end
  end

  desc 'current build number'
  task :build_number do
    puts project.build_number
  end

  namespace :build_number do
    desc 'increment build number'
    task :increment do
      build_number = project.build_number
      if build_number.increment.write
        $stderr.puts "Incremented build number to #{build_number}"
      end
    end
  end
end