Automatiser la mise à jour d’un paquet logiciel

Note

Cette partie de la documentation est déconseillée aux utilisateurs qui débutent avec WAPT.

Pour quoi faire ?

Les fonctions update_package sont très pratiques, elles permettent de gagner du temps lorsque qu’il faut mettre à jour un paquet avec la version la plus récente d’un logiciel.

Fonctionnement

la fonction update_package paquet ira :

  • récupérer la dernière version du logiciel en ligne ;
  • télécharger la dernière version du binaire ;
  • supprimer les anciennes version des binaires ;
  • mettre à jour la version dans le fichier control ;

Si votre fonction install se base sur la version du fichier control pour l’installation, alors vous n’avez pas besoin de modifier votre setup.py.

Il vous reste maintenant à tester l’installation avant de lancer un build-upload.

Exemple

Voici l”update_package de firefox-esr comme exemple :

def update_package():
      """ You can do a CTRL F9 in pyscripter to update the package """
      import re,requests,urlparse,glob

      url = requests.head('https://download.mozilla.org/?product=firefox-esr-latest&os=win&lang=fr',proxies={}).headers['Location']
      filename = urlparse.unquote(url.rsplit('/',1)[1])

      if not isfile(filename):
          print('Downloading %s from %s'%(filename,url))
          wget(url,filename)

      exes = glob.glob('*.exe')
      for fn in exes:
          if fn != filename:
              remove_file(fn)

      # updates control version from filename, increment package version.
      control = PackageEntry().load_control_from_wapt ('.')
      control.version = '%s-0'%(re.findall('Firefox Setup (.*)esr\.exe',filename)[0])
      control.save_control_to_wapt('.')

  if __name__ == '__main__':
      update_package()

Vous pouvez lancer l’update_package* en appuyant sur la touche F9 dans PyScripter.

Vous trouverez de nombreux exemples d”update_package qui vous inspireront dans les paquets du store de Tranquil IT.