#!/usr/bin/env python
"""
This skript creates a help skeleton for a certain application
(C) Michael 'Mickey' Lauer who did this even if he had a lot of other stuff to do... THANKS
"""

import os
import sys

COUNTRYCODES = "da de en fr nl pl hu no pt it pt_BR ja sl zh_CN es ko zh_TW".split()
OPIEDIR = os.environ["OPIEDIR"]

#Package: opie-appskey-help-en
#Files: help/en/html/opie-appskey.html
#Priority: optional
#Section: opie/onlinedoc
#Maintainer: ljp <llornkcor@handhelds.org>
#Architecture: arm
#Version: $QPE_VERSION-$SUB_VERSION
#Depends: opie-appskey
#License: GPL
#Description: Application Key help files (english)

def doit( name, cc ):
    """Create a help skeleton corresponding to a package described by a desktop file."""

    desktop = {}
    for line in file( name ):
        try:
            key, value = line.split( '=' )
        except ValueError:
            pass
        else:
            desktop[key.strip()] = value.strip()

    try:
        application = desktop["Exec"]
    except:
        fail( "No Exec given in .desktop file" )

    print "Generating help skeleton for application '%s'..." % application
    helpdirname = "%s/help/%s/html" % ( OPIEDIR, cc )
    helpappdirname = "%s/%s" % ( helpdirname, application )
    makecontrol( helpdirname, application, cc, desktop )
    makedir( helpappdirname )
    makehtml( helpdirname, application, cc, desktop )

#------------------------------------------------------#
def makehtml( directory, application, cc, desktop ):
    """Creates the help template file."""

    helpfilename = "%s/%s.html" % ( directory, application )
    print "Creating help file '%s'" % helpfilename
    h = file( helpfilename, "w" )
    print >> h, """<html> <head> <title>%s</title> </head>
<body>
  <center><h1>%s</h1></center>
  <hr>
</body>
</html>
""" % ( application, application )

#------------------------------------------------------#
def makecontrol( directory, application, cc, desktop ):
    """Creates the .control file."""

    controlfilename = "%s/opie-%s-help-%s.control" % ( directory, application, cc )
    print "Creating control file '%s'" % controlfilename
    c = file( controlfilename, "w" )
    print >> c, "Package: opie-%s-help-%s" % ( application, cc )
    print >> c, "Files: help/%s/html/%s.html help/%s/html/%s" % ( cc, application, cc, application )
    print >> c, "Priority: optional"
    print >> c, "Section: opie/onlinedoc"
    print >> c, "Maintainer: %s" % desktop.get( "Maintainer", "Team Opie <opie@handhelds.org>" )
    print >> c, "Version: $QPE_VERSION-$SUB_VERSION"
    print >> c, "Depends: opie-%s" % application
    print >> c, "License: GPL"
    print >> c, "Description: %s help files (%s)" % ( application, cc )

#------------------------------------------------------#
def makedir( name ):
    """Creates a directory."""

    print "Creating directory '%s'" % name
    if not os.path.exists( name ): os.mkdir( name )

#------------------------------------------------------#
def fail( reason ):
    """Fails with a reason."""
    print reason
    sys.exit( -1 )

#------------------------------------------------------#
def checkUsage( args ):
    """Checks calling syntax."""

    if len( args ) < 2:
        fail( """
Usage: %s <application>.desktop [countrycode]

If no countrycode is given, defaults to 'en'
If countrycode 'all' is given, generates skeletons
for all known countrycodes: %s""" % ( args[0], ", ".join( COUNTRYCODES ) ) )

#------------------------------------------------------#

if __name__ == "__main__":
    checkUsage( sys.argv )

    if len ( sys.argv ) == 2:
        doit( sys.argv[1], "en" )
    elif len( sys.argv ) == 3:
        if sys.argv[2] == "all":
            [ doit( sys.argv[1], x ) for x in split() ]
        else:
            doit( sys.argv[1], sys.argv[2] )