module KrakenMobile
	class CommandHelper
		def user_is_using_windows
			RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/
		end

		def terminal_command_separator
			user_is_using_windows ? ' & ' : ';'
		end

		def build_command commands
			commands.compact*' '
		end

    # Exports a list of environment variables to the users computer.
		def build_export_env_command env_variables
			commands = env_variables.map { |key, value|
				user_is_using_windows ? "(SET \"#{key}=#{value}\")" : "#{key}=#{value};export #{key}"
			}
			commands.join(terminal_command_separator)
		end

		def execute_command process_number, command
			output = open("|#{command}", 'r') { |output| show_output(output, process_number)  }
			exitstatus = $?.exitstatus
		end

		def show_output(output, process_number)
			loop do
				begin
					line = output.readline()
					$stdout.print "#{process_number}> #{line}"
					$stdout.flush
				end
			end rescue EOFError
		end
	end
end