Skip to content
Browse files

[UI] Drop UserInterface::Mixin.

  • Loading branch information...
1 parent 9616bc2 commit 5e592de7b4f53c1e4481e9e0968202d20e34268b @fabiopelosin fabiopelosin committed Sep 18, 2012
View
2 lib/cocoapods.rb
@@ -41,7 +41,7 @@ def message
autoload :Source, 'cocoapods/source'
autoload :Spec, 'cocoapods/specification'
autoload :Specification, 'cocoapods/specification'
- autoload :UserInterface, 'cocoapods/user_interface'
+ autoload :UI, 'cocoapods/user_interface'
autoload :Version, 'cocoapods/version'
autoload :Pathname, 'pathname'
View
11 lib/cocoapods/downloader/git.rb
@@ -7,15 +7,14 @@ module Pod
class Downloader
class Git < Downloader
include Config::Mixin
- include UserInterface::Mixin
executable :git
MAX_CACHE_SIZE = 500
def download
create_cache unless cache_exist?
- ui_title(' > Cloning git repo', '', 3) do
+ UI.title(' > Cloning git repo', '', 3) do
if options[:tag]
download_tag
elsif options[:branch]
@@ -31,7 +30,7 @@ def download
end
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.mkpath
git! %Q|clone --mirror "#{url}" "#{cache_path}"|
@@ -43,7 +42,7 @@ def prune_cache
repos = Pathname.new(caches_dir).children.select { |c| c.directory? }.sort_by(&:ctime)
while caches_size >= MAX_CACHE_SIZE && !repos.empty?
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
end
end
@@ -75,7 +74,7 @@ def caches_size
end
def update_cache
- ui_title " > Updating cache git repo (#{cache_path})"
+ UI.title " > Updating cache git repo (#{cache_path})"
Dir.chdir(cache_path) do
if git("config core.bare").chomp == "true"
git! "remote update"
@@ -148,7 +147,7 @@ def download_branch
git! "remote add upstream '#{@url}'" # we need to add the original url, not the cache url
git! "fetch -q upstream" # refresh the branches
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
View
2 lib/cocoapods/downloader/http.rb
@@ -16,7 +16,7 @@ class UnsupportedFileTypeError < StandardError; end
def download
@filename = filename_with_type type
@download_path = target_path + @filename
- ui_title(' > Downloading from HTTP', '', 3) do
+ UI.title(' > Downloading from HTTP', '', 3) do
download_file @download_path
extract_with_type @download_path, type
end
View
2 lib/cocoapods/downloader/mercurial.rb
@@ -4,7 +4,7 @@ class Mercurial < Downloader
executable :hg
def download
- ui_title(' > Cloning mercurial repo', '', 3) do
+ UI.title(' > Cloning mercurial repo', '', 3) do
if options[:revision]
download_revision
else
View
4 lib/cocoapods/downloader/subversion.rb
@@ -8,13 +8,13 @@ def initialize(target_path, url, options)
end
def download
- ui_title(' > Exporting subversion repo', '', 3) do
+ UI.title(' > Exporting subversion repo', '', 3) do
svn! %|export "#{reference_url}" "#{target_path}"|
end
end
def download_head
- ui_title(' > Exporting subversion repo', '', 3) do
+ UI.title(' > Exporting subversion repo', '', 3) do
svn! %|export "#{trunk_url}" "#{target_path}"|
end
end
View
10 lib/cocoapods/executable.rb
@@ -2,17 +2,15 @@
module Pod
module Executable
-
class Indenter < ::Array
- include UserInterface::Mixin
include Config::Mixin
attr_accessor :indent
attr_accessor :io
def initialize(io = nil)
@io = io
- @indent = ' ' * UserInterface.instance.indentation_level
+ @indent = ' ' * UI.indentation_level
end
def <<(value)
@@ -23,7 +21,6 @@ def <<(value)
end
def executable(name)
- include UserInterface::Mixin
bin = `which #{name}`.strip
base_method = "base_" << name.to_s
define_method(base_method) do |command, should_raise|
@@ -32,7 +29,7 @@ def executable(name)
end
full_command = "#{bin} #{command}"
if Config.instance.verbose?
- ui_message("$ #{full_command}")
+ UI.message("$ #{full_command}")
stdout, stderr = Indenter.new(STDOUT), Indenter.new(STDERR)
else
stdout, stderr = Indenter.new, Indenter.new
@@ -44,7 +41,7 @@ def executable(name)
if should_raise
raise Informative, "#{name} #{command}\n\n#{output}"
else
- ui_message("[!] Failed: #{full_command}".red)
+ UI.message("[!] Failed: #{full_command}".red)
end
end
output
@@ -58,7 +55,6 @@ def executable(name)
send(base_method, command, true)
end
-
private name
end
end
View
29 lib/cocoapods/installer.rb
@@ -6,7 +6,6 @@ class Installer
autoload :UserProjectIntegrator, 'cocoapods/installer/user_project_integrator'
include Config::Mixin
- include UserInterface::Mixin
attr_reader :resolver, :sandbox, :lockfile
@@ -51,7 +50,7 @@ def install_dependencies!
pods.sort_by { |pod| pod.top_specification.name.downcase }.each do |pod|
should_install = @resolver.should_install?(pod.top_specification.name) || !pod.exists?
if should_install
- ui_title("Installing #{pod}".green, "-> ".green) do
+ UI.title("Installing #{pod}".green, "-> ".green) do
unless pod.downloaded?
pod.implode
download_pod(pod)
@@ -64,7 +63,7 @@ def install_dependencies!
pod.clean! if config.clean?
end
else
- ui_title("Using #{pod}", "-> ".green)
+ UI.title("Using #{pod}", "-> ".green)
end
end
end
@@ -88,18 +87,18 @@ def download_pod(pod)
def generate_docs(pod)
doc_generator = Generator::Documentation.new(pod)
if ( config.generate_docs? && !doc_generator.already_installed? )
- ui_title " > Installing documentation"
+ UI.title " > Installing documentation"
doc_generator.generate(config.doc_install?)
else
- ui_title " > Using existing documentation"
+ UI.title " > Using existing documentation"
end
end
# @TODO: use the local pod implode
#
def remove_deleted_dependencies!
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.rmtree if path.exist?
end
@@ -108,37 +107,37 @@ def remove_deleted_dependencies!
def 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
end
- ui_title "Removing deleted dependencies" do
+ UI.title "Removing deleted dependencies" do
remove_deleted_dependencies!
end unless resolver.removed_pods.empty?
- ui_title "Downloading dependencies" do
+ UI.title "Downloading dependencies" do
install_dependencies!
end
- ui_title("Generating support files", '', 2) do
- ui_message "- Running pre install hooks" do
+ UI.title("Generating support files", '', 2) do
+ UI.message "- Running pre install hooks" do
run_pre_install_hooks
end
- ui_message("- Installing targets", '', 2) do
+ UI.message("- Installing targets", '', 2) do
generate_target_support_files
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.
run_post_install_hooks
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)
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.write_to_disk(config.project_lockfile)
end
View
9 lib/cocoapods/installer/target_installer.rb
@@ -2,7 +2,6 @@ module Pod
class Installer
class TargetInstaller
include Config::Mixin
- include UserInterface::Mixin
attr_reader :podfile, :project, :target_definition, :target
attr_accessor :requires_arc
@@ -99,21 +98,21 @@ def configure_build_configurations(xcconfig_file, sandbox)
def create_files(pods, sandbox)
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)
copy_resources_script_for(pods).resources << @target_definition.bridge_support_name
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)
@target_definition.xcconfig = xcconfig
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)
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)
end
end
View
9 lib/cocoapods/resolver.rb
@@ -3,7 +3,6 @@
module Pod
class Resolver
include Config::Mixin
- include UserInterface::Mixin
# @return [Bool] Whether the resolver should find the pods to install or
# the pods to update.
@@ -70,19 +69,19 @@ def resolve
if @lockfile
@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 => "-" }
@pods_by_state.each do |symbol, pod_names|
pod_names.each do |pod_name|
- ui_message("#{marks[symbol]} #{pod_name}", '',2)
+ UI.message("#{marks[symbol]} #{pod_name}", '',2)
end
end
end if config.verbose?
@pods_to_lock = (lockfile.pods_names - @pods_by_state[:added] - @pods_by_state[:changed] - @pods_by_state[:removed]).uniq
end
@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 = []
find_dependency_specs(@podfile, target_definition.dependencies, target_definition)
@specs_by_target[target_definition] = @cached_specs.values_at(*@loaded_specs).sort_by(&:name)
@@ -183,7 +182,7 @@ def find_dependency_specs(dependent_specification, dependencies, target_definiti
if !update_mode && @pods_to_lock.include?(dependency.name)
dependency = lockfile.dependency_for_installed_pod_named(dependency.name)
end
- ui_message("- #{dependency}", '', 2) do
+ UI.message("- #{dependency}", '', 2) do
set = find_cached_set(dependency, target_definition.platform)
set.required_by(dependency, dependent_specification.to_s)
View
124 lib/cocoapods/user_interface.rb
@@ -1,97 +1,65 @@
module Pod
class UserInterface
- include Config::Mixin
-
- def self.instance
- @instance ||= new
- end
-
- def initialize
- @indentation_level = 0
- @title_level = 0
- @title_colors = %w|yellow green|
- end
-
- attr_accessor :indentation_level, :title_level
-
- def title(title, verbose_prefix = '')
- if config.verbose?
- title = "\n#{title}" if @title_level < 2
- title = verbose_prefix + title if config.verbose?
- if (color = @title_colors[@title_level])
- title = title.send(color)
+ @indentation_level = 0
+ @title_level = 0
+ @title_colors = %w|yellow green|
+
+ class << self
+ include Config::Mixin
+
+ attr_accessor :indentation_level, :title_level
+
+ def title(title, verbose_prefix = '', relative_indentation = 0)
+ if config.verbose?
+ title = verbose_prefix + title if config.verbose?
+ title = "\n#{title}" if @title_level < 2
+ if (color = @title_colors[@title_level])
+ title = title.send(color)
+ end
+ puts "#{title}"
+ elsif title_level < 2
+ puts title
end
- puts "#{title}"
- elsif title_level < 2
- puts title
- end
- end
-
- def message(message, verbose_prefix = '')
- message = verbose_prefix + message if config.verbose?
- puts_indented message if config.verbose?
- end
-
- def puts(message)
- super(message) unless config.silent?
- end
- def puts_indented(message)
- indented = wrap_string(message, " " * indentation_level)
- puts(indented)
- end
-
- def ui_path(pathname)
- if pathname
- "`./#{pathname.relative_path_from(config.project_podfile.dirname || Pathname.pwd)}'"
- else
- ''
+ self.indentation_level += relative_indentation
+ self.title_level += 1
+ yield if block_given?
+ self.indentation_level -= relative_indentation
+ self.title_level -= 1
end
- end
- # adapted from http://blog.macromates.com/2006/wrapping-text-with-regular-expressions/
- def wrap_string(txt, indent)
- width = `stty size`.split(' ')[1].to_i - indent.length
- txt.strip.gsub(/(.{1,#{width}})( +|$)\n?|(.{#{width}})/, indent + "\\1\\3\n")
- end
+ def message(message, verbose_prefix = '', relative_indentation = 0)
+ message = verbose_prefix + message if config.verbose?
+ puts_indented message if config.verbose?
- 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
+ self.indentation_level += relative_indentation
yield if block_given?
- UserInterface.instance.indentation_level -= relative_indentation
- UserInterface.instance.title_level -= 1
+ self.indentation_level -= relative_indentation
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
+ def puts(message)
+ super(message) unless config.silent?
end
- def ui_verbose(message)
- UserInterface.instance.puts(message)
+ def puts_indented(message)
+ indented = wrap_string(message, " " * indentation_level)
+ puts(indented)
end
- def ui_path(pathname)
- UserInterface.instance.ui_path(pathname)
+ def path(pathname)
+ if pathname
+ "`./#{pathname.relative_path_from(config.project_podfile.dirname || Pathname.pwd)}'"
+ else
+ ''
+ end
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
-
+ # adapted from http://blog.macromates.com/2006/wrapping-text-with-regular-expressions/
+ def wrap_string(txt, indent)
+ width = `stty size`.split(' ')[1].to_i - indent.length
+ txt.strip.gsub(/(.{1,#{width}})( +|$)\n?|(.{#{width}})/, indent + "\\1\\3\n")
+ end
end
end
+ UI = UserInterface
end

0 comments on commit 5e592de

Please sign in to comment.
Something went wrong with that request. Please try again.