#!/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'))

  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']

  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)
