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/beta_builder/deployment_strategies/web.rb b/lib/beta_builder/deployment_strategies/web.rb index 7510d2b..26a8744 100644 --- a/lib/beta_builder/deployment_strategies/web.rb +++ b/lib/beta_builder/deployment_strategies/web.rb @@ -16,9 +16,9 @@ def remote_installation_path end end 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 << %{ @@ -82,9 +82,23 @@ 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}" + + cmd = cmd.join(" ") + + puts "* Running `#{cmd}`" + system(cmd) end end end 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'