bin/nixenvironment in nixenvironment-0.0.21 vs bin/nixenvironment in nixenvironment-0.0.22
- old
+ new
@@ -3,10 +3,11 @@
require 'rubygems'
require 'nixenvironment'
require 'commander/import'
require 'yaml'
require 'fileutils'
+require 'shellwords'
include Nixenvironment
# :name is optional, otherwise uses the basename of this executable
program :name, 'nixenvironment'
@@ -73,16 +74,16 @@
unity = options.unity
if unity and unity.length > 0
case unity
when 'ios'
- ios_project_path = File.join(Dir.pwd, 'Builds/iOS')
+ ios_project_path = File.join(Dir.pwd, 'Builds/iOS').shellescape
unity_success = system("unity -executeMethod NIXBuilder.MakeiOSBuild -batchmode -quit -customArgs:path='#{ios_project_path}'")
abort('Build unity error!') unless unity_success
- root_working_directory = Dir.pwd
+ root_working_directory = Dir.pwd.shellescape
need_chdir_to_root_working_directory = true
Dir.chdir(ios_project_path)
$project_to_build = 'Unity-iPhone.xcodeproj'
@@ -179,11 +180,11 @@
clean_working_copy
end
end
def update(ninbas)
- root_working_directory = Dir.pwd
+ root_working_directory = Dir.pwd.shellescape
target_directory = File.join(Dir.home, NIXENV_ROOT)
begin
Dir.mkdir(target_directory) unless Dir.exist?(target_directory)
Dir.chdir(target_directory)
@@ -302,11 +303,11 @@
end
def setup(config)
# Parse information about project
cmd_output = %x[ xcodebuild -list ]
- cmd_output = cmd_output.lines.to_a[1..-1].join
+ cmd_output = cmd_output.lines.to_a[1..-1].join # TODO: handle if to_a returns 0 or count less than expected
info = {}
cmd_output.split(/\n\n/).each do |pair|
key,value = pair.split(/:/)
next unless key and value
lines = value.lines.map { |line| line.strip }
@@ -348,43 +349,43 @@
build_settings_to_strip = Hash[env_vars_list.map { |it| it.split('=', 2) }]
build_settings_to_strip.each do |key, value|
if key and value
stripped_key = key.strip
stripped_value = value.strip
- build_settings[stripped_key] = stripped_value
+ build_settings[stripped_key] = stripped_value.shellescape
end
end
end
- build_directory = File.join(Dir.pwd, 'build')
+ build_directory = File.join(Dir.pwd, 'build').shellescape
build_settings['CONFIGURATION_BUILD_DIR'] = build_directory
build_settings['BUILT_PRODUCTS_DIR'] = build_directory
build_settings['DWARF_DSYM_FOLDER_PATH'] = build_directory
return build_settings
end
def save_build_env_vars(build_settings)
- app_product = "#{build_settings['BUILT_PRODUCTS_DIR']}/#{build_settings['EXECUTABLE_NAME']}.app"
+ app_product = File.join(build_settings['BUILT_PRODUCTS_DIR'], build_settings['EXECUTABLE_NAME']) + '.app'
system("
echo \"#!/bin/sh\
### AUTOGENERATED BY Nixenvironment; DO NOT EDIT ###
- PROJECT=\"#{build_settings['PROJECT']}\"
-BUILT_PRODUCTS_DIR=\"#{build_settings['BUILT_PRODUCTS_DIR']}\"
-OBJECTS_NORMAL_DIR=\"#{build_settings['OBJECT_FILE_DIR_normal']}\"
- EXECUTABLE_NAME=\"#{build_settings['EXECUTABLE_NAME']}\"
- APP_PRODUCT=\"#{app_product}\"
- APP_DSYM=\"#{app_product}.dSYM\"
-APP_INFOPLIST_FILE=\"#{@config['INFOPLIST_PATH']}\"
- EMBEDDED_PROFILE=\"##{app_product}/#{build_settings['EMBEDDED_PROFILE_NAME']}\"
- TARGET_NAME=\"#{build_settings['TARGET_NAME']}\"
- CONFIGURATION=\"#{build_settings['CONFIGURATION']}\"
- SDK_NAME=\"#{build_settings['SDK_NAME']}\"
-RESIGNED_BUNDLE_ID=\"#{build_settings['RESIGNED_BUNDLE_ID']}\"
-RESIGNED_BUNDLE_NAME=\"#{build_settings['RESIGNED_BUNDLE_NAME']}\"
-RESIGNED_ENTITLEMENTS_PATH=\"#{build_settings['RESIGNED_ENTITLEMENTS_PATH']}\"\" > _last_build_vars.sh
+ PROJECT=#{build_settings['PROJECT']}
+BUILT_PRODUCTS_DIR=#{build_settings['BUILT_PRODUCTS_DIR']}
+OBJECTS_NORMAL_DIR=#{build_settings['OBJECT_FILE_DIR_normal']}
+ EXECUTABLE_NAME=#{build_settings['EXECUTABLE_NAME']}
+ APP_PRODUCT=#{app_product}
+ APP_DSYM=#{app_product}.dSYM
+APP_INFOPLIST_FILE=#{@config['INFOPLIST_PATH']}
+ EMBEDDED_PROFILE=#{app_product}/#{build_settings['EMBEDDED_PROFILE_NAME']}
+ TARGET_NAME=#{build_settings['TARGET_NAME']}
+ CONFIGURATION=#{build_settings['CONFIGURATION']}
+ SDK_NAME=#{build_settings['SDK_NAME']}
+RESIGNED_BUNDLE_ID=#{build_settings['RESIGNED_BUNDLE_ID']}
+RESIGNED_BUNDLE_NAME=#{build_settings['RESIGNED_BUNDLE_NAME']}
+RESIGNED_ENTITLEMENTS_PATH=#{build_settings['RESIGNED_ENTITLEMENTS_PATH']}\" > _last_build_vars.sh
")
end
def prebuild(build_settings, config)
save_revision = File.join(BUILD_SCRIPTS_PATH, 'SaveRevision.sh')
@@ -574,10 +575,10 @@
duplication_success = system("#{generate_code_duplication_report} \"#{@config['EXCLUDE_PATTERN_FOR_CODE_DUPLICATION']}\" duplication.xml")
abort('Generate code duplication error!') unless duplication_success
end
def tag
- make_tag = File.join(BUILD_SCRIPTS_PATH, 'MakeTag.sh ')
+ make_tag = File.join(BUILD_SCRIPTS_PATH, 'MakeTag.sh')
tag_success = system("#{make_tag} \"#{ENV['SCM_USERNAME']}\" \"#{ENV['SCM_PASSWORD']}\"")
abort('Make tag error!') unless tag_success
end
# Jenkins stores SVN credentials locally in XML, so this command gets and uses them on making tag by finding the first credential in local credential storage