#To define a particular parameter, replace the 'parameterName' inside itsm.getParameter('parameterName') with that parameter's name
import os
import sys

programdata = os.environ['PROGRAMDATA']
folder = os.path.join(programdata, "C1_Temp")
list_tasks = os.popen("schtasks.exe /Query /FO List").read()


def load_excluded_tasks(folder):
    """
    Load a list of known recurring tasks to exclude.
    """
    excluded_file = os.path.join(folder, "ExcludedTasks.txt")
    if os.path.isfile(excluded_file):
        with open(excluded_file, "r") as f:
            return set([line.strip() for line in f if line.strip()])
    return set()


def createlist(folder, list_tasks, excluded_tasks):
    """
    Create or update the task list files and exclude known tasks.
    """
    os.chdir(folder)
    tasks_to_check = []
    for i in list_tasks.split('\n'):
        if 'TaskName' in i and i.strip()[15:] not in excluded_tasks:
            tasks_to_check.append(i.strip()[15:])

    # Create initial file if it doesn't exist
    if not os.path.isfile("SchdeuledTaskListadd.txt"):
        with open("SchdeuledTaskListadd.txt", "w+") as f:
            f.write("\n".join(tasks_to_check) + "\n")

    # Write the latest task list
    with open("SchdeuledTaskListadd_latest.txt", "w+") as f:
        f.write("\n".join(tasks_to_check) + "\n")


def filecmpadd():
    """
    Compare task files and append new tasks if found.
    """
    with open("SchdeuledTaskListadd.txt", "r") as f1:
        existing_tasks = set([line for line in f1])

    with open("SchdeuledTaskListadd_latest.txt", "r") as f2:
        new_tasks = set([line for line in f2]) - existing_tasks

    if new_tasks:
        with open("SchdeuledTaskList03.txt", "w+") as f3:
            f3.writelines(new_tasks)

        print "New scheduled task(s) have been added:\n"
        for task in new_tasks:
            print "TaskName:", task.strip()

        with open("SchdeuledTaskListadd.txt", "a") as f:
            f.writelines(new_tasks)

        alert(1)
    else:
        print "No new scheduled tasks have been added."
        alert(0)

    # Clean up temporary files if they exist
    if os.path.isfile("SchdeuledTaskList03.txt"):
        os.remove("SchdeuledTaskList03.txt")
    if os.path.isfile("SchdeuledTaskListadd_latest.txt"):
        os.remove("SchdeuledTaskListadd_latest.txt")


def alert(arg):
    """
    Print alert for new tasks.
    """
    sys.stderr.write("%d%d%d" % (arg, arg, arg))


def main():
    """
    Main function: check and process tasks.
    """
    if not os.path.exists(folder):
        os.makedirs(folder)

    excluded_tasks = load_excluded_tasks(folder)

    createlist(folder, list_tasks, excluded_tasks)
    filecmpadd()


if __name__ == "__main__":
    main()
