#!/usr/bin/env perl

# Copyright (c) 2022-2024 Thomas Frohwein
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

use v5.36;
use version 0.77; our $VERSION = version->declare('v0.2');
use English;

use FindBin; use lib "$FindBin::Bin/../lib";

use IndieRunner;
use IndieRunner::Cmdline qw( init_cli );
use IndieRunner::Platform qw( check_platform get_platforms );

my %cli_config = %{ init_cli() };
if ( not check_platform( $OSNAME ) ) {
	warn "Unrecognized platform: $OSNAME... indierunner may not work!";
}
chdir $cli_config{ dir } or die "Failed to enter $cli_config{ dir }: $!";

my $indierunner = IndieRunner->new( %cli_config );
$indierunner->setup();
$indierunner->run();
$indierunner->finish();

__END__

=head1 NAME

indierunner - command-line interface to IndieRunner

=head1 SYNOPSIS

indierunner [-hnmsvV] [-d I<dir>] [-D I<dllmap>] [-f I<file>] [-g I<game>] [-e I<engine>] [--norigg|--permissive|--strict] [-- I<game arguments>]

=head1 DESCRIPTION

indierunner is the standard CLI interface to the B<IndieRunner> module. It processes CLI flags, creates a new B<IndieRunner> object, and performs the sequence of setup, game execution, and clean-up. It serves as a CLI launcher for various game engines (see L<IndieRunner::Engine>). For supported operating systems, refer to L<IndieRunner::Platform>.

=head1 OPTIONS

See L<IndieRunner::Cmdline> for a list of options.

=head1 DESCRIPTION

B<indierunner> is the reference CLI frontend for the IndieRunner module. 

=head1 SEE ALSO

L<IndieRunner>

=head1 AUTHOR

Thomas Frohwein
