#!/usr/bin/env perl
# verbose -- set as many "debug" or "trace" environment variables as possible

sub trace {
	my %what = @_;
	for my $section (keys %what) {
		my $v = $what{$section};
		if (ref $v eq 'HASH') {
			@ENV{keys %$v} = values %$v;
		}
	}
}

trace _main_ => {DEBUG => 1};

trace adb => {ADB_TRACE => "all"};

trace curl => {
	GIT_CURL_VERBOSE => 1,
	#GIT_TRACE_CURL => 1,
	#GIT_TRACE_CURL_NO_DATA => 1,
};

trace distcc => {DISTCC_VERBOSE => 1};

trace dvdcss => {DVDCSS_VERBOSE => 1}; # int 0..2

trace dxvk => {DXVK_HUD => "full"};

trace eog => {EOG_DEBUG => 1};

trace freetds => {TDSDUMP => "stderr"};

trace git => {GIT_TRACE => 1};

trace glib => {G_MESSAGES_DEBUG => "all"};

trace gnutls => {GNUTLS_DEBUG_LEVEL => 4};

trace gpgme => {GPGME_DEBUG => 9};

trace gsseap => {GSSEAP_TRACE => "/dev/stderr"};

trace gstreamer => {GST_DEBUG => 2};

trace kerberos => {KRB5_TRACE => "/dev/stderr"};

trace libgl => {LIBGL_DEBUG => "verbose"};

trace libutil_linux => {
	LIBBLKID_DEBUG => "all",
	LIBFDISK_DEBUG => "all",
	LIBMOUNT_DEBUG => "all",
	#LIBSMARTCOLS_DEBUG => "all",
	LOOPDEV_DEBUG => "all",
	TERMINAL_COLORS_DEBUG => "all",
};

trace libval => {VAL_LOG_TARGET => "5:stdout"};

trace mesa => {MESA_DEBUG => 1};

trace mozilla => {
	MOZ_LOG => "certverifier:5",
};

trace mpv => {MPV_VERBOSE => 1}; # integer 0..?

trace opensc => {OPENSC_DEBUG => 9};

trace p11_kit => {
	P11_KIT_DEBUG => "all",
	#P11_KIT_DEBUG => "trust",
};

trace rdesktop => {RDESKTOP_DEBUG => "All"};

trace sdl => {SDL_DEBUG => 1};

trace systemd => {SYSTEMD_LOG_LEVEL => "debug"};

trace sspi_rs => {
	SSPI_LOG_PATH => "/dev/stderr",
	#SSPI_LOG_LEVEL => "debug",
};

trace sssd => {SSSD_KRB5_LOCATOR_DEBUG => 1};
# SSSD_KRB5_LOCATOR_DISABLE

trace tracker => {TRACKER_VERBOSITY => 3};

trace util_linux => {
	CFDISK_DEBUG => "all",
	FDISK_DEBUG => "all",
	LSBLK_DEBUG => "all",
	SFDISK_DEBUG => "all",
	WHEREIS_DEBUG => "all",
};

exec {$ARGV[0]} @ARGV;

if ($!) { die "exec: $!\n"; }
