From 5d77fc757fbeafcedb896464dd3f47ce0b959672 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Mon, 6 Feb 2012 12:19:14 -0500 Subject: [PATCH 1/3] Add support for custom scp port. Closes #35 --- lib/beta_builder/deployment_strategies/web.rb | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/beta_builder/deployment_strategies/web.rb b/lib/beta_builder/deployment_strategies/web.rb index 7510d2b..1524c69 100644 --- a/lib/beta_builder/deployment_strategies/web.rb +++ b/lib/beta_builder/deployment_strategies/web.rb @@ -16,7 +16,7 @@ def remote_installation_path end end end - + def prepare plist = CFPropertyList::List.new(:file => "pkg/Payload/#{@configuration.app_name}/Info.plist") plist_data = CFPropertyList.native_types(plist.value) @@ -82,9 +82,20 @@ def prepare } end end - + def deploy - system("scp pkg/dist/* #{@configuration.remote_host}:#{@configuration.remote_installation_path}") + cmd = [] + + cmd.push "scp" + + if @configuration.remote_port + cmd.push "-P #{@configuration.remote_port}" + end + + cmd.push "pkg/dist/*" + cmd.push "#{@configuration.remote_host}:#{@configuration.remote_installation_path}" + + system(cmd.join(" ")) end end end From 1890622d4d68050278e363e6df3f1f0b740bd437 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Mon, 6 Feb 2012 12:26:05 -0500 Subject: [PATCH 2/3] Use relative paths instead of rubygems paths --- lib/beta_builder.rb | 42 +++++++++++------------ lib/beta_builder/deployment_strategies.rb | 4 +-- lib/betabuilder.rb | 2 +- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/lib/beta_builder.rb b/lib/beta_builder.rb index 878a6a7..b0987a0 100644 --- a/lib/beta_builder.rb +++ b/lib/beta_builder.rb @@ -2,9 +2,9 @@ require 'ostruct' require 'fileutils' require 'cfpropertylist' -require 'beta_builder/archived_build' -require 'beta_builder/deployment_strategies' -require 'beta_builder/build_output_parser' +require File.dirname(__FILE__) + '/beta_builder/archived_build' +require File.dirname(__FILE__) + '/beta_builder/deployment_strategies' +require File.dirname(__FILE__) + '/beta_builder/build_output_parser' module BetaBuilder class Tasks < ::Rake::TaskLib @@ -58,7 +58,7 @@ def build_arguments def archive_name app_name || target end - + def app_file_name raise ArgumentError, "app_name or target must be set in the BetaBuilder configuration block" if app_name.nil? && target.nil? if app_name @@ -67,7 +67,7 @@ def app_file_name "#{target}.app" end end - + def ipa_name if app_name "#{app_name}.ipa" @@ -75,7 +75,7 @@ def ipa_name "#{target}.ipa" end end - + def built_app_path if build_dir == :derived "#{derived_build_dir_from_build_output}/#{configuration}-iphoneos/#{app_file_name}" @@ -83,24 +83,24 @@ def built_app_path "#{build_dir}/#{configuration}-iphoneos/#{app_file_name}" end end - + def derived_build_dir_from_build_output output = BuildOutputParser.new(File.read("build.output")) - output.build_output_dir + output.build_output_dir end - + def built_app_dsym_path "#{built_app_path}.dSYM" end - + def dist_path File.join("pkg/dist") end - + def ipa_path File.join(dist_path, ipa_name) end - + def deploy_using(strategy_name, &block) if DeploymentStrategies.valid_strategy?(strategy_name.to_sym) self.deployment_strategy = DeploymentStrategies.build(strategy_name, self) @@ -110,28 +110,28 @@ def deploy_using(strategy_name, &block) end end end - + private - + def define namespace(@namespace) do desc "Build the beta release of the app" task :build => :clean do xcodebuild @configuration.build_arguments, "build" end - + task :clean do unless @configuration.skip_clean xcodebuild @configuration.build_arguments, "clean" end end - + desc "Package the beta release as an IPA file" task :package => :build do if @configuration.auto_archive Rake::Task["#{@namespace}:archive"].invoke end - + FileUtils.rm_rf('pkg') && FileUtils.mkdir_p('pkg') FileUtils.mkdir_p("pkg/Payload") FileUtils.mv(@configuration.built_app_path, "pkg/Payload/#{@configuration.app_file_name}") @@ -141,25 +141,25 @@ def define FileUtils.mkdir('pkg/dist') FileUtils.mv("pkg/#{@configuration.ipa_name}", "pkg/dist") end - + if @configuration.deployment_strategy desc "Prepare your app for deployment" task :prepare => :package do @configuration.deployment_strategy.prepare end - + desc "Deploy the beta using your chosen deployment strategy" task :deploy => :prepare do @configuration.deployment_strategy.deploy end - + desc "Deploy the last build" task :redeploy do @configuration.deployment_strategy.prepare @configuration.deployment_strategy.deploy end end - + desc "Build and archive the app" task :archive => :build do puts "Archiving build..." diff --git a/lib/beta_builder/deployment_strategies.rb b/lib/beta_builder/deployment_strategies.rb index 24a89f7..f2f4d98 100644 --- a/lib/beta_builder/deployment_strategies.rb +++ b/lib/beta_builder/deployment_strategies.rb @@ -34,6 +34,6 @@ def self.strategies end end -require 'beta_builder/deployment_strategies/web' -require 'beta_builder/deployment_strategies/testflight' +require File.dirname(__FILE__) + '/deployment_strategies/web' +require File.dirname(__FILE__) + '/deployment_strategies/testflight' diff --git a/lib/betabuilder.rb b/lib/betabuilder.rb index 98cdd18..0974f93 100644 --- a/lib/betabuilder.rb +++ b/lib/betabuilder.rb @@ -1 +1 @@ -require 'beta_builder' +require File.dirname(__FILE__) + '/beta_builder' From 8218a120eff1772e38b1977760d1af440bc24cc3 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Mon, 6 Feb 2012 13:45:37 -0500 Subject: [PATCH 3/3] * Use app_file_name, not app_name for Info.plist path * Add output when scp'ing --- lib/beta_builder/deployment_strategies/web.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/beta_builder/deployment_strategies/web.rb b/lib/beta_builder/deployment_strategies/web.rb index 1524c69..26a8744 100644 --- a/lib/beta_builder/deployment_strategies/web.rb +++ b/lib/beta_builder/deployment_strategies/web.rb @@ -18,7 +18,7 @@ def remote_installation_path end def prepare - plist = CFPropertyList::List.new(:file => "pkg/Payload/#{@configuration.app_name}/Info.plist") + plist = CFPropertyList::List.new(:file => "pkg/Payload/#{@configuration.app_file_name}/Info.plist") plist_data = CFPropertyList.native_types(plist.value) File.open("pkg/dist/manifest.plist", "w") do |io| io << %{ @@ -95,7 +95,10 @@ def deploy cmd.push "pkg/dist/*" cmd.push "#{@configuration.remote_host}:#{@configuration.remote_installation_path}" - system(cmd.join(" ")) + cmd = cmd.join(" ") + + puts "* Running `#{cmd}`" + system(cmd) end end end