# This is not an executable.  It provides an example of how you would implement a
# Tweaker Script.  For details on the functions provided by Tweaker::Script,
# such as execute_shell_command, get_environment_variable, connect_to_db, etc.
# see Tweaker/Script.pm
#
# See the corresponding EXAMPLE.tcf for the Tweak that would correspond to this script.

#
# BEGIN EXAMPLE
#

#!/usr/bin/perl -w

# Copyright 2009 YOUR NAME HERE
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

use Switch;
use Tweaker::Script;
package Tweaker::Script;

# List all the options that this script supports.  Make sure it matches what's in
# the corresponding .tcf entry.
set_known_options( 'option1', 'option2', 'option3' );

# Try to implement the given option.
sub implement_option {
    my($option) = @_;

    # If you need a subroutine that is specific to the task of implementing an option,
    # define it inside the above subroutine.
    sub my_subroutune {
	# ...
    }
    
    $dbconnectionstring = get_mythtv_connection_string();
	
    if (connect_to_db("DBI:mysql:$dbconnectionstring")) { # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
	switch ($option) {
	    # List all the options that this script supports.  You can have as many as you like.
	    case "option1" {
		# Perform the actions necessary to implement option1.
		# You may want to call do_query, change_or_make_setting, or change_or_make_entry to make changes to the MySQL database.
		# You may want to call execute_shell_command to make changes from the shell.
	    }
	    case "option2" {
		# Perform the actions necessary to implement option2.
		# You may want to call do_query, change_or_make_setting, or change_or_make_entry to make changes to the MySQL database.
		# You may want to call execute_shell_command to make changes from the shell.
	    }
	    case "option3" {
		# Perform the actions necessary to implement option3.
		# You may want to call do_query, change_or_make_setting, or change_or_make_entry to make changes to the MySQL database.
		# You may want to call execute_shell_command to make changes from the shell.
	    }
	}
    } else { # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
	my $logger = get_logger('tweaker.script');
	$logger->error("ERROR: Unable to connect to mythconverg database");
	$logger->error("ERROR: Unable to implement option $option.");
	exit -1; # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
    } # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
    disconnect_from_db(); # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
}

# Poll the system to see what recommendationlevel the given option has on the system.
sub poll_options {
    my($option) = @_;

    # If you need a subroutine that is specific to the task of implementing an option,
    # define it inside the above subroutine.
    sub my_subroutune {
	# ...
    }
    
    $dbconnectionstring = get_mythtv_connection_string();
	
    if (connect_to_db("DBI:mysql:$dbconnectionstring")) { # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
	switch ($option) {
	    # List all the options that this script supports.  You can have as many as you like.
	    case "option1" {
		# Perform the actions necessary to determine a recommendation level for option1.
		# You may want to call do_query to query to the MySQL database.
		# You may want to call execute_shell_command to check things in the shell.
		# When you're done, you can use the recommendation_level subroutine to return the
		#   resulting recommendation level.
	    }
	    case "option2" {
		# Perform the actions necessary to determine a recommendation level for option2.
		# You may want to call do_query to query to the MySQL database.
		# You may want to call execute_shell_command to check things in the shell.
		# When you're done, you can use the recommendation_level subroutine to return the
		#   resulting recommendation level.
	    }
	    case "option3" {
		# Perform the actions necessary to determine a recommendation level for option3.
		# You may want to call do_query to query to the MySQL database.
		# You may want to call execute_shell_command to check things in the shell.
		# When you're done, you can use the recommendation_level subroutine to return the
		#   resulting recommendation level.
	    }
	}
    } else { # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
	exit -1; # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
    } # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
    disconnect_from_db(); # You may not have to do this.  It's only when you need to change MySQL settings for MythTV.
}

# Unimplemented in 0.7
sub check_option {
    help;
}

# Unimplemented in 0.7
sub count_iterations {
    help;
}

process_parameters; # mandatory

#
# END EXAMPLE
#