#!/usr/bin/env ruby
# encoding: UTF-8

require 'fileutils'
require_relative '.utils'

raise 'Don\'t run this script as root!' if `id -u`.chomp == '0'

WINE_PKG_PREFIX = '/usr/local/wine-proton'

def exec_with_wine_env(args)

  raise "wine-proton doesn't appear to be installed" if not File.exist?(File.join(WINE_PKG_PREFIX, 'bin/wine'))

  if ENV['PROTON_USE_WOW64'] == '1'
    ENV['PATH'] = [File.join(WINE_PKG_PREFIX, 'bin-wow64'), ENV['PATH'].split(':')].join(':')
  else
    ENV['PATH'] = [File.join(WINE_PKG_PREFIX, 'bin'), ENV['PATH'].split(':')].join(':')

    # for some reason Wine 6.3 doesn't want to load these libraries from LD_LIBRARY_PATH
    #if ENV['PROTON_LIB32']
    #  for lib in ['libgcc_s.so.1', 'libstdc++.so.6']
    #    path = File.join(ENV['PROTON_LIB32'], lib)
    #    if File.exist?(path)
    #      ENV['LD_32_LIBMAP'] = "#{lib} #{path}\n#{ENV['LD_32_LIBMAP']}"
    #    end
    #  end
    #end
    ENV['LD_32_LIBMAP'] = "libgcc_s.so.1 /usr/lib32/libgcc_s.so.1\n#{ENV['LD_32_LIBMAP']}"

    ENV['WINE_i386_ROOT'] = ENV['LSU_i386_PKG_ROOT'] if ENV['LSU_i386_PKG_ROOT']
  end

  exec([args[0]] * 2, *args[1..-1])
end

if ARGV.length == 0
  perr "#{File.basename($PROGRAM_NAME)} <application> [application args]"
  exit(1)
end

exec_with_wine_env(ARGV)
