module Xcunique::CLI

Public Class Methods

run(argv) click to toggle source
# File lib/xcunique/cli.rb, line 5
def self.run argv
  options = Options.parse(argv)
  
  puts %Q{Parsing "#{options.project_path}"} if options.verbose
  result = Sorter.new(Uniquifier.new(options.project_path).uniquify).sort
  
  case options.format
  when :json
    puts JSON.pretty_generate(result)
  when :xml, :ascii
    Dir.mktmpdir do |dir|
      json_path = dir + '/project.json'
      puts %Q{Writing uniqued JSON to "#{json_path}"} if options.verbose
      File.open(json_path, 'w') do |file|
        file.puts result.to_json
      end
      
      json2plist = File.expand_path('../json2plist/json2plist', __dir__)
      
      puts %Q{Running "#{json2plist} #{json_path} #{options.project_path}"} if options.verbose
      system File.expand_path('../json2plist/json2plist', __dir__), json_path, options.project_path
    end
  end
  
  if options.format == :ascii
    Dir.chdir File.dirname(options.project_path) do
      puts %Q{Running "xcproj touch" in "#{File.dirname(options.project_path)}"} if options.verbose
      system 'xcproj', 'touch'
    end
  end
  
rescue Options::NoProjectProvidedError, Options::UnknownFormatError, Options::MissingDependencyError => error
  puts error.message
end