#/usr/bin/python
# -*- coding: utf-8 -*-
#
# Çevrimdışı (offline) bilgisayarlarda kurulu olan Pardus'u kaçak yoldan·
# güncellemek için bir yardımcı araçtır. Tek başına bir işe yaramaz..
#
# Bununla ne yapacağınızı bilmiyorsanız aşağıdaki adreste yazanları okuyun:
#
#   http://cekirdek.pardus.org.tr/~meren/blog/?file=Offline-Update.txt
#

import pisi.api as api
import pisi.db as db
import os
import sys

if os.getuid():
    print "Bu betiği root kullanıcısı ile çalıştırmalısınız.."
    sys.exit(1)

if len(sys.argv) != 2:
    print "Depo adını argüman olarak vermelisiniz.."
    sys.exit(1)
else:
    r = sys.argv[1]

if r not in api.list_repos():
    print "Sistemde '%s' adında bir depo yok.." % (r)
    sys.exit(1)
else:
    api.rebuild_repo(r)


packages = []
repodb = db.repodb.RepoDB()
packagedb = db.packagedb.PackageDB()
print "* Güncellenecek paketler araştırılıyor"
for p in api.generate_pending_order(api.list_upgradable()):
    packages.append(os.path.join(os.path.dirname(repodb.get_repo(packagedb.which_repo(p)).indexuri.get_uri()),
                                       packagedb.get_package(p).packageURI))
    sys.stdout.write(".")

if not len(packages):
    print "\nSistemde güncellenmeyi bekleyen paket görünmüyor..\n"
else:
    print """\n
    Sistemi güncellemek için aşağıdaki paketleri Internet'ten temin edip,
    "/var/cache/pisi/packages/" dizini içerisine kopyalamalı, sonrasında,
    "pisi up -r" komutunu vermelisiniz. Paket listesini şu adreste de
    bulabilirsiniz: /tmp/guncellenecek_paket_listesi.txt
    """
    f = open("/tmp/guncellenecek_paket_listesi.txt", "w")
    for p in packages:
        print p
        f.write(p + '\n')

    f.close()


