#! /usr/bin/env python

#
# Autogenerated installer for gDesklets sensors.
#
# Usage: Install_Xyz_Sensor.bin [--nomsg] [--list] [<destination>]
#
# The default destination is user specific sensor path. <destination> overrides
# the destination path.
# The option --nomsg can be used to suppress message dialogs.
# The option --list only shows the contents of the archive without installing.
#


import sys, os, commands, base64, tempfile


ERROR_B64 = "Could not extract the archive.\n" \
            "The installer seems to be corrupted."
ERROR_TAR = "Could not extract the archive.\n" \
            "tar reported an error:\n"
SUCCESS = "The sensor has been installed successfully.\n" \
          "gDesklets is now able to use it."


# default settings
no_message = 0
list_only = 0
destination = "~/.gdesklets/Sensors"

# parse arguments
args = sys.argv[1:]
for p in args:
    if (p == "--nomsg"): no_message = 1
    elif (p == "--list"): list_only = 1
    else: destination = p
#end for


try:
    import pygtk; pygtk.require("2.0")
    import gtk
except:
    no_message = 1
    


def message(msg, mtype):

    d = gtk.MessageDialog(None, 0,
                          (mtype == "error") and gtk.MESSAGE_ERROR or
                          gtk.MESSAGE_INFO, gtk.BUTTONS_OK,
                          unicode(msg, "iso-8859-1"))
    d.run()
    d.destroy()



def install(data, destination, no_message, list_only):

    try:
        archive = base64.decodestring(data)
    except:
        if (no_message): print ERROR_B64
        else: message(ERROR_B64, "error")
        sys.exit(1)
        
    tmp = tempfile.mktemp()
    fd = open(tmp, "w")
    fd.write(archive)
    fd.close()
    if (list_only):
        cmd = "mkdir -p %(destination)s; cd %(destination)s; " \
              "LANG=C tar -tzf %(tmp)s 2>&1"
    else:
        cmd = "mkdir -p %(destination)s; cd %(destination)s; " \
              "LANG=C tar -xzvf %(tmp)s 2>&1"
    fail, out = commands.getstatusoutput(cmd % vars())
    os.unlink(tmp)
    
    if (fail):
        if (no_message): print ERROR_TAR + out
        else: message(ERROR_TAR + out, "error")
        sys.exit(1)

    print out
    if (not list_only):
        if (no_message): print SUCCESS
        else: message(SUCCESS, "info")

    

# the tarball in base64 encoding
BASE64DATA = """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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
"""

install(BASE64DATA, destination, no_message, list_only)
