Commit 5e592de7 authored by Fabio Pelosin's avatar Fabio Pelosin

[UI] Drop UserInterface::Mixin.

parent 9616bc24
...@@ -41,7 +41,7 @@ module Pod ...@@ -41,7 +41,7 @@ module Pod
autoload :Source, 'cocoapods/source' autoload :Source, 'cocoapods/source'
autoload :Spec, 'cocoapods/specification' autoload :Spec, 'cocoapods/specification'
autoload :Specification, 'cocoapods/specification' autoload :Specification, 'cocoapods/specification'
autoload :UserInterface, 'cocoapods/user_interface' autoload :UI, 'cocoapods/user_interface'
autoload :Version, 'cocoapods/version' autoload :Version, 'cocoapods/version'
autoload :Pathname, 'pathname' autoload :Pathname, 'pathname'
......
...@@ -7,7 +7,6 @@ module Pod ...@@ -7,7 +7,6 @@ module Pod
class Downloader class Downloader
class Git < Downloader class Git < Downloader
include Config::Mixin include Config::Mixin
include UserInterface::Mixin
executable :git executable :git
...@@ -15,7 +14,7 @@ module Pod ...@@ -15,7 +14,7 @@ module Pod
def download def download
create_cache unless cache_exist? create_cache unless cache_exist?
ui_title(' > Cloning git repo', '', 3) do UI.title(' > Cloning git repo', '', 3) do
if options[:tag] if options[:tag]
download_tag download_tag
elsif options[:branch] elsif options[:branch]
...@@ -31,7 +30,7 @@ module Pod ...@@ -31,7 +30,7 @@ module Pod
end end
def create_cache def create_cache
ui_title " > Creating cache git repo (#{cache_path})" UI.title " > Creating cache git repo (#{cache_path})"
cache_path.rmtree if cache_path.exist? cache_path.rmtree if cache_path.exist?
cache_path.mkpath cache_path.mkpath
git! %Q|clone --mirror "#{url}" "#{cache_path}"| git! %Q|clone --mirror "#{url}" "#{cache_path}"|
...@@ -43,7 +42,7 @@ module Pod ...@@ -43,7 +42,7 @@ module Pod
repos = Pathname.new(caches_dir).children.select { |c| c.directory? }.sort_by(&:ctime) repos = Pathname.new(caches_dir).children.select { |c| c.directory? }.sort_by(&:ctime)
while caches_size >= MAX_CACHE_SIZE && !repos.empty? while caches_size >= MAX_CACHE_SIZE && !repos.empty?
dir = repos.shift dir = repos.shift
ui_message "#{'->'.yellow} Removing git cache for `#{origin_url(dir)}'" UI.message "#{'->'.yellow} Removing git cache for `#{origin_url(dir)}'"
dir.rmtree dir.rmtree
end end
end end
...@@ -75,7 +74,7 @@ module Pod ...@@ -75,7 +74,7 @@ module Pod
end end
def update_cache def update_cache
ui_title " > Updating cache git repo (#{cache_path})" UI.title " > Updating cache git repo (#{cache_path})"
Dir.chdir(cache_path) do Dir.chdir(cache_path) do
if git("config core.bare").chomp == "true" if git("config core.bare").chomp == "true"
git! "remote update" git! "remote update"
...@@ -148,7 +147,7 @@ module Pod ...@@ -148,7 +147,7 @@ module Pod
git! "remote add upstream '#{@url}'" # we need to add the original url, not the cache url git! "remote add upstream '#{@url}'" # we need to add the original url, not the cache url
git! "fetch -q upstream" # refresh the branches git! "fetch -q upstream" # refresh the branches
git! "checkout --track -b activated-pod-commit upstream/#{options[:branch]}" # create a new tracking branch git! "checkout --track -b activated-pod-commit upstream/#{options[:branch]}" # create a new tracking branch
ui_message("Just downloaded and checked out branch: #{options[:branch]} from upstream #{clone_url}") UI.message("Just downloaded and checked out branch: #{options[:branch]} from upstream #{clone_url}")
end end
end end
......
...@@ -16,7 +16,7 @@ module Pod ...@@ -16,7 +16,7 @@ module Pod
def download def download
@filename = filename_with_type type @filename = filename_with_type type
@download_path = target_path + @filename @download_path = target_path + @filename
ui_title(' > Downloading from HTTP', '', 3) do UI.title(' > Downloading from HTTP', '', 3) do
download_file @download_path download_file @download_path
extract_with_type @download_path, type extract_with_type @download_path, type
end end
......
...@@ -4,7 +4,7 @@ module Pod ...@@ -4,7 +4,7 @@ module Pod
executable :hg executable :hg
def download def download
ui_title(' > Cloning mercurial repo', '', 3) do UI.title(' > Cloning mercurial repo', '', 3) do
if options[:revision] if options[:revision]
download_revision download_revision
else else
......
...@@ -8,13 +8,13 @@ module Pod ...@@ -8,13 +8,13 @@ module Pod
end end
def download def download
ui_title(' > Exporting subversion repo', '', 3) do UI.title(' > Exporting subversion repo', '', 3) do
svn! %|export "#{reference_url}" "#{target_path}"| svn! %|export "#{reference_url}" "#{target_path}"|
end end
end end
def download_head def download_head
ui_title(' > Exporting subversion repo', '', 3) do UI.title(' > Exporting subversion repo', '', 3) do
svn! %|export "#{trunk_url}" "#{target_path}"| svn! %|export "#{trunk_url}" "#{target_path}"|
end end
end end
......
...@@ -2,9 +2,7 @@ require 'open4' ...@@ -2,9 +2,7 @@ require 'open4'
module Pod module Pod
module Executable module Executable
class Indenter < ::Array class Indenter < ::Array
include UserInterface::Mixin
include Config::Mixin include Config::Mixin
attr_accessor :indent attr_accessor :indent
...@@ -12,7 +10,7 @@ module Pod ...@@ -12,7 +10,7 @@ module Pod
def initialize(io = nil) def initialize(io = nil)
@io = io @io = io
@indent = ' ' * UserInterface.instance.indentation_level @indent = ' ' * UI.indentation_level
end end
def <<(value) def <<(value)
...@@ -23,7 +21,6 @@ module Pod ...@@ -23,7 +21,6 @@ module Pod
end end
def executable(name) def executable(name)
include UserInterface::Mixin
bin = `which #{name}`.strip bin = `which #{name}`.strip
base_method = "base_" << name.to_s base_method = "base_" << name.to_s
define_method(base_method) do |command, should_raise| define_method(base_method) do |command, should_raise|
...@@ -32,7 +29,7 @@ module Pod ...@@ -32,7 +29,7 @@ module Pod
end end
full_command = "#{bin} #{command}" full_command = "#{bin} #{command}"
if Config.instance.verbose? if Config.instance.verbose?
ui_message("$ #{full_command}") UI.message("$ #{full_command}")
stdout, stderr = Indenter.new(STDOUT), Indenter.new(STDERR) stdout, stderr = Indenter.new(STDOUT), Indenter.new(STDERR)
else else
stdout, stderr = Indenter.new, Indenter.new stdout, stderr = Indenter.new, Indenter.new
...@@ -44,7 +41,7 @@ module Pod ...@@ -44,7 +41,7 @@ module Pod
if should_raise if should_raise
raise Informative, "#{name} #{command}\n\n#{output}" raise Informative, "#{name} #{command}\n\n#{output}"
else else
ui_message("[!] Failed: #{full_command}".red) UI.message("[!] Failed: #{full_command}".red)
end end
end end
output output
...@@ -58,7 +55,6 @@ module Pod ...@@ -58,7 +55,6 @@ module Pod
send(base_method, command, true) send(base_method, command, true)
end end
private name private name
end end
end end
......
...@@ -6,7 +6,6 @@ module Pod ...@@ -6,7 +6,6 @@ module Pod
autoload :UserProjectIntegrator, 'cocoapods/installer/user_project_integrator' autoload :UserProjectIntegrator, 'cocoapods/installer/user_project_integrator'
include Config::Mixin include Config::Mixin
include UserInterface::Mixin
attr_reader :resolver, :sandbox, :lockfile attr_reader :resolver, :sandbox, :lockfile
...@@ -51,7 +50,7 @@ module Pod ...@@ -51,7 +50,7 @@ module Pod
pods.sort_by { |pod| pod.top_specification.name.downcase }.each do |pod| pods.sort_by { |pod| pod.top_specification.name.downcase }.each do |pod|
should_install = @resolver.should_install?(pod.top_specification.name) || !pod.exists? should_install = @resolver.should_install?(pod.top_specification.name) || !pod.exists?
if should_install if should_install
ui_title("Installing #{pod}".green, "-> ".green) do UI.title("Installing #{pod}".green, "-> ".green) do
unless pod.downloaded? unless pod.downloaded?
pod.implode pod.implode
download_pod(pod) download_pod(pod)
...@@ -64,7 +63,7 @@ module Pod ...@@ -64,7 +63,7 @@ module Pod
pod.clean! if config.clean? pod.clean! if config.clean?
end end
else else
ui_title("Using #{pod}", "-> ".green) UI.title("Using #{pod}", "-> ".green)
end end
end end
end end
...@@ -88,10 +87,10 @@ module Pod ...@@ -88,10 +87,10 @@ module Pod
def generate_docs(pod) def generate_docs(pod)
doc_generator = Generator::Documentation.new(pod) doc_generator = Generator::Documentation.new(pod)
if ( config.generate_docs? && !doc_generator.already_installed? ) if ( config.generate_docs? && !doc_generator.already_installed? )
ui_title " > Installing documentation" UI.title " > Installing documentation"
doc_generator.generate(config.doc_install?) doc_generator.generate(config.doc_install?)
else else
ui_title " > Using existing documentation" UI.title " > Using existing documentation"
end end
end end
...@@ -99,7 +98,7 @@ module Pod ...@@ -99,7 +98,7 @@ module Pod
# #
def remove_deleted_dependencies! def remove_deleted_dependencies!
resolver.removed_pods.each do |pod_name| resolver.removed_pods.each do |pod_name|
ui_title("Removing #{pod_name}", "-> ".red) do UI.title("Removing #{pod_name}", "-> ".red) do
path = sandbox.root + pod_name path = sandbox.root + pod_name
path.rmtree if path.exist? path.rmtree if path.exist?
end end
...@@ -108,37 +107,37 @@ module Pod ...@@ -108,37 +107,37 @@ module Pod
def install! def install!
@sandbox.prepare_for_install @sandbox.prepare_for_install
ui_title "Resolving dependencies of #{ui_path @podfile.defined_in_file}" do UI.title "Resolving dependencies of #{UI.path @podfile.defined_in_file}" do
specs_by_target specs_by_target
end end
ui_title "Removing deleted dependencies" do UI.title "Removing deleted dependencies" do
remove_deleted_dependencies! remove_deleted_dependencies!
end unless resolver.removed_pods.empty? end unless resolver.removed_pods.empty?
ui_title "Downloading dependencies" do UI.title "Downloading dependencies" do
install_dependencies! install_dependencies!
end end
ui_title("Generating support files", '', 2) do UI.title("Generating support files", '', 2) do
ui_message "- Running pre install hooks" do UI.message "- Running pre install hooks" do
run_pre_install_hooks run_pre_install_hooks
end end
ui_message("- Installing targets", '', 2) do UI.message("- Installing targets", '', 2) do
generate_target_support_files generate_target_support_files
end end
ui_message "- Running post install hooks" do UI.message "- Running post install hooks" do
# Post install hooks run _before_ saving of project, so that they can alter it before saving. # Post install hooks run _before_ saving of project, so that they can alter it before saving.
run_post_install_hooks run_post_install_hooks
end end
ui_message "- Writing Xcode project file to #{ui_path @sandbox.project_path}" do UI.message "- Writing Xcode project file to #{UI.path @sandbox.project_path}" do
project.save_as(@sandbox.project_path) project.save_as(@sandbox.project_path)
end end
ui_message "- Writing lockfile in #{ui_path config.project_lockfile}" do UI.message "- Writing lockfile in #{UI.path config.project_lockfile}" do
@lockfile = Lockfile.generate(@podfile, specs_by_target.values.flatten) @lockfile = Lockfile.generate(@podfile, specs_by_target.values.flatten)
@lockfile.write_to_disk(config.project_lockfile) @lockfile.write_to_disk(config.project_lockfile)
end end
......
...@@ -2,7 +2,6 @@ module Pod ...@@ -2,7 +2,6 @@ module Pod
class Installer class Installer
class TargetInstaller class TargetInstaller
include Config::Mixin include Config::Mixin
include UserInterface::Mixin
attr_reader :podfile, :project, :target_definition, :target attr_reader :podfile, :project, :target_definition, :target
attr_accessor :requires_arc attr_accessor :requires_arc
...@@ -99,21 +98,21 @@ module Pod ...@@ -99,21 +98,21 @@ module Pod
def create_files(pods, sandbox) def create_files(pods, sandbox)
bridge_support_metadata_path = sandbox.root + @target_definition.bridge_support_name bridge_support_metadata_path = sandbox.root + @target_definition.bridge_support_name
ui_message "- Generating BridgeSupport metadata file at #{ui_path bridge_support_metadata_path}" do UI.message "- Generating BridgeSupport metadata file at #{UI.path bridge_support_metadata_path}" do
bridge_support_generator_for(pods, sandbox).save_as(bridge_support_metadata_path) bridge_support_generator_for(pods, sandbox).save_as(bridge_support_metadata_path)
copy_resources_script_for(pods).resources << @target_definition.bridge_support_name copy_resources_script_for(pods).resources << @target_definition.bridge_support_name
end if @podfile.generate_bridge_support? end if @podfile.generate_bridge_support?
ui_message "- Generating xcconfig file at #{ui_path(sandbox.root + @target_definition.xcconfig_name)}" do UI.message "- Generating xcconfig file at #{UI.path(sandbox.root + @target_definition.xcconfig_name)}" do
xcconfig.save_as(sandbox.root + @target_definition.xcconfig_name) xcconfig.save_as(sandbox.root + @target_definition.xcconfig_name)
@target_definition.xcconfig = xcconfig @target_definition.xcconfig = xcconfig
end end
ui_message "- Generating prefix header at #{ui_path(sandbox.root + @target_definition.prefix_header_name)}" do UI.message "- Generating prefix header at #{UI.path(sandbox.root + @target_definition.prefix_header_name)}" do
save_prefix_header_as(sandbox.root + @target_definition.prefix_header_name, pods) save_prefix_header_as(sandbox.root + @target_definition.prefix_header_name, pods)
end end
ui_message "- Generating copy resources script at #{ui_path(sandbox.root + @target_definition.copy_resources_script_name)}" do UI.message "- Generating copy resources script at #{UI.path(sandbox.root + @target_definition.copy_resources_script_name)}" do
copy_resources_script_for(pods).save_as(sandbox.root + @target_definition.copy_resources_script_name) copy_resources_script_for(pods).save_as(sandbox.root + @target_definition.copy_resources_script_name)
end end
end end
......
...@@ -3,7 +3,6 @@ require 'colored' ...@@ -3,7 +3,6 @@ require 'colored'
module Pod module Pod
class Resolver class Resolver
include Config::Mixin include Config::Mixin
include UserInterface::Mixin
# @return [Bool] Whether the resolver should find the pods to install or # @return [Bool] Whether the resolver should find the pods to install or
# the pods to update. # the pods to update.
...@@ -70,11 +69,11 @@ module Pod ...@@ -70,11 +69,11 @@ module Pod
if @lockfile if @lockfile
@pods_by_state = @lockfile.detect_changes_with_podfile(podfile) @pods_by_state = @lockfile.detect_changes_with_podfile(podfile)
ui_title("Finding added, modified or removed dependencies:", '', 2) do UI.title("Finding added, modified or removed dependencies:", '', 2) do
marks = {:added => "A".green, :changed => "M".yellow, :removed => "R".red, :unchanged => "-" } marks = {:added => "A".green, :changed => "M".yellow, :removed => "R".red, :unchanged => "-" }
@pods_by_state.each do |symbol, pod_names| @pods_by_state.each do |symbol, pod_names|
pod_names.each do |pod_name| pod_names.each do |pod_name|
ui_message("#{marks[symbol]} #{pod_name}", '',2) UI.message("#{marks[symbol]} #{pod_name}", '',2)
end end
end end
end if config.verbose? end if config.verbose?
...@@ -82,7 +81,7 @@ module Pod ...@@ -82,7 +81,7 @@ module Pod
end end
@podfile.target_definitions.values.each do |target_definition| @podfile.target_definitions.values.each do |target_definition|
ui_title("Resolving dependencies for target `#{target_definition.name}' (#{target_definition.platform}):", '', 2) do UI.title("Resolving dependencies for target `#{target_definition.name}' (#{target_definition.platform}):", '', 2) do
@loaded_specs = [] @loaded_specs = []
find_dependency_specs(@podfile, target_definition.dependencies, target_definition) find_dependency_specs(@podfile, target_definition.dependencies, target_definition)
@specs_by_target[target_definition] = @cached_specs.values_at(*@loaded_specs).sort_by(&:name) @specs_by_target[target_definition] = @cached_specs.values_at(*@loaded_specs).sort_by(&:name)
...@@ -183,7 +182,7 @@ module Pod ...@@ -183,7 +182,7 @@ module Pod
if !update_mode && @pods_to_lock.include?(dependency.name) if !update_mode && @pods_to_lock.include?(dependency.name)
dependency = lockfile.dependency_for_installed_pod_named(dependency.name) dependency = lockfile.dependency_for_installed_pod_named(dependency.name)
end end
ui_message("- #{dependency}", '', 2) do UI.message("- #{dependency}", '', 2) do
set = find_cached_set(dependency, target_definition.platform) set = find_cached_set(dependency, target_definition.platform)
set.required_by(dependency, dependent_specification.to_s) set.required_by(dependency, dependent_specification.to_s)
......
module Pod module Pod
class UserInterface class UserInterface
include Config::Mixin
def self.instance
@instance ||= new
end
def initialize
@indentation_level = 0 @indentation_level = 0
@title_level = 0 @title_level = 0
@title_colors = %w|yellow green| @title_colors = %w|yellow green|
end
class << self
include Config::Mixin
attr_accessor :indentation_level, :title_level attr_accessor :indentation_level, :title_level
def title(title, verbose_prefix = '') def title(title, verbose_prefix = '', relative_indentation = 0)
if config.verbose? if config.verbose?
title = "\n#{title}" if @title_level < 2
title = verbose_prefix + title if config.verbose? title = verbose_prefix + title if config.verbose?
title = "\n#{title}" if @title_level < 2
if (color = @title_colors[@title_level]) if (color = @title_colors[@title_level])
title = title.send(color) title = title.send(color)
end end
...@@ -25,11 +20,21 @@ module Pod ...@@ -25,11 +20,21 @@ module Pod
elsif title_level < 2 elsif title_level < 2
puts title puts title
end end
self.indentation_level += relative_indentation
self.title_level += 1
yield if block_given?
self.indentation_level -= relative_indentation
self.title_level -= 1
end end
def message(message, verbose_prefix = '') def message(message, verbose_prefix = '', relative_indentation = 0)
message = verbose_prefix + message if config.verbose? message = verbose_prefix + message if config.verbose?
puts_indented message if config.verbose? puts_indented message if config.verbose?
self.indentation_level += relative_indentation
yield if block_given?
self.indentation_level -= relative_indentation
end end
def puts(message) def puts(message)
...@@ -41,7 +46,7 @@ module Pod ...@@ -41,7 +46,7 @@ module Pod
puts(indented) puts(indented)
end end
def ui_path(pathname) def path(pathname)
if pathname if pathname
"`./#{pathname.relative_path_from(config.project_podfile.dirname || Pathname.pwd)}'" "`./#{pathname.relative_path_from(config.project_podfile.dirname || Pathname.pwd)}'"
else else
...@@ -54,44 +59,7 @@ module Pod ...@@ -54,44 +59,7 @@ module Pod
width = `stty size`.split(' ')[1].to_i - indent.length width = `stty size`.split(' ')[1].to_i - indent.length
txt.strip.gsub(/(.{1,#{width}})( +|$)\n?|(.{#{width}})/, indent + "\\1\\3\n") txt.strip.gsub(/(.{1,#{width}})( +|$)\n?|(.{#{width}})/, indent + "\\1\\3\n")
end end
module Mixin
def ui_title(title, verbose_prefix = '', relative_indentation = 0)
UserInterface.instance.title(title)
UserInterface.instance.indentation_level += relative_indentation
UserInterface.instance.title_level += 1
yield if block_given?
UserInterface.instance.indentation_level -= relative_indentation
UserInterface.instance.title_level -= 1
end
def ui_message(message, verbose_prefix = '', relative_indentation = 0)
UserInterface.instance.message(message)
UserInterface.instance.indentation_level += relative_indentation
yield if block_given?
UserInterface.instance.indentation_level -= relative_indentation
end
def ui_verbose(message)
UserInterface.instance.puts(message)
end
def ui_path(pathname)
UserInterface.instance.ui_path(pathname)
end
# def ui_spec(spec)
# end
# def ui_progress_start(count)
# end
# def ui_progress_increase(message = nil, ammount = 1)
# end
# def ui_progress_complete()
# end
end end
end end
UI = UserInterface
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment