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