#/usr/bin/python
# -*- coding: utf-8 -*-
#
# Çevrimdışı (offline) bilgisayarlarda kurulu olan Pardus'a uygulama
# kurmak için yardımcı bir araçtır. Tek başına bir işe yaramaz..
#
# Bu uygulama ile ne yapacağınızı bilmiyorsanız aşağıdaki adreste yazanları okuyun:
#
#   http://cekirdek.pardus.org.tr/~meren/blog/?file=Offline-Install.txt
#
# Yine olmazsa bana bir e-posta atın: meren at pardus.org.tr
#

import pisi.api as api
import pisi.util as util
import pisi.context as ctx
from os.path import join
from os.path import dirname
import sys

if len(sys.argv) != 2:
    print "Argüman olarak paket adı girmelisiniz.."
    sys.exit(1)
else:
    package = sys.argv[1]

try:
    api.init(write=False)
except:
    print "Bir sebeple PiSi ile iletişim kurulamadı.."
    sys.exit(2)

packages, totalSize = [], 0
print "* Paketin bağımlılıkları ve bağımlılıklarının Internet adresleri araştırılıyor.."
try:
    order = api.generate_install_order([package])
except:
    print "\n- '%s' sistemde tanımlı olan depo(lar)da bulunamadı. Adını doğru yazdığınızdan ve sistemde tanımlı bir depo olduğundan emin olun..\n" % package
    sys.exit(3)
for p in order:
    package, repo = api.packagedb.pkgdb.get_package_repo(p)
    packages.append(join(dirname(ctx.repodb.get_repo(repo).indexuri.get_uri()), package.packageURI))
    totalSize += package.packageSize

    sys.stdout.write(".")

if not len(packages):
    print "\nBilinmeyen sorun..\n"
else:
    print """\n
    %s paketini bağımlılıkları ile beraber bu sisteme kurmak için size aşağıda
    verilen adreslerdeki paketlerin tümünü Internet'ten temin etmeli, ardından
    temin ettiğiniz bu paketleri "/var/cache/pisi/packages/" dizini içerisine
    kopyalamalı, sonrasında ise, konsoldan 'pisi it %s' komutunu vermelisiniz.
    İndirmeniz gereken paketlerin listesini şu adresteki dosyada da bulabilirsiniz:
    /tmp/indirilecek_paket_listesi.txt
    """ % (p, p)
    f = open("/tmp/indirilecek_paket_listesi.txt", "w")
    for p in packages:
        print p
        f.write(p + '\n')
    print
    s, n = util.human_readable_size(totalSize)
    print "İndirilecek paketlerin toplam boyutu: %.2f %s" % (s, n)
    f.close()


