#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import sys, os
import hashlib
import 

class publisher:
    def __init__(self, process_dir):
        self.host1 = 'http://ftp.twaren.net/local-distfiles/pigfoot/firefox/localizedbuilds/'
        #self.host2 = 'https://pigfoot-dl.appspot.com/mozfiles/'
        self.langs = ['en_US', 'zh_TW', 'zh_CN', 'ja', 'de', 'fr', 'it', 'ru', 'sl', 'tr']
        self.archs = ['P3', 'P2', 'P1']
        self.proc_dir = process_dir

    def run(self, version):
        import glob, stat
        try:
            # For the case: M.m.b
            majver, minver, build = version.split('.', 2)
        except ValueError:
            # For the case: M.m
            majver, minver = version.split('.', 1)
        ver = majver + '.' + minver
        builds = {}

        for lang in self.langs:
            for arch in self.archs:
                dir = '%s%s/%s/Firefox-*-CE-%s-*-%s-%s.7z.exe' % (self.proc_dir, lang, ver, version, arch, lang)
                aListFiles = [ szFile for szFile in glob.glob(dir) if (os.path.isfile(szFile)) ]
                file = aListFiles[0]
                size = os.stat(file)[stat.ST_SIZE]
                file = file[file.rfind('/') + 1:]
                builds.setdefault(lang, {}).setdefault(arch, {}).setdefault('t', file[8:16])
                dir = '%s/%s/%s' % (lang, ver, file)
                builds.setdefault(lang, {}).setdefault(arch, {}).setdefault('f', dir)
                builds.setdefault(lang, {}).setdefault(arch, {}).setdefault('p', dir[:-7] + '-Portable.7z.exe')
                builds.setdefault(lang, {}).setdefault(arch, {}).setdefault('s', str(float(size)/1024/1024)[:4])

        for lang in self.langs:
            build = builds[lang]
            print('Firefox %s community edition <strong>%s</strong> (%s)' % (version, lang, build[self.archs[0]]['t']))
            print('<ul>')
            for arch in self.archs:
                #dir = '<li>[FX] <a href="%s">%s build</a> (<a href="%s">mirror1</a>), <a href="%s">Portable edition</a> (<a href="%s">mirror1</a>) (%s MB)</li>'
                #dir = dir % (self.host1 + build[arch]['f'], arch, self.host2 + build[arch]['f'], self.host1 + build[arch]['p'], self.host2 + build[arch]['p'],  build[arch]['s'])
                dir = '<li>[FX] <a href="%s">%s build</a>, <a href="%s">Portable edition</a> (%s MB)</li>'
                dir = dir % (self.host1 + build[arch]['f'], arch, self.host1 + build[arch]['p'], build[arch]['s'])
                print('\t%s' % dir)
            print('</ul>')

if __name__ == '__main__':
    import optparse
    parser = optparse.OptionParser()
    parser.add_option('-d', '--directory', help='read DIRECTORY',
                  dest='directory')

    (options, args) = parser.parse_args()

    if options.directory:
        proc_dir = options.directory
        if proc_dir[-1:] != '/':
            proc_dir += '/'
    else:
        proc_dir = './'

    p = publisher(proc_dir)
    p.run('3.6.13')

# vim:ts=4:sw=4:sta:et:sts=4:ai:nowrap
