Ignore:
Timestamp:
Apr 6, 2018, 2:53:26 PM (3 years ago)
Author:
Juanma
Message:

WIP on bundles/releases

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/appImageManager.py

    r7118 r7120  
    410410                        package=package.replace("-.",".")
    411411
    412                 filename=outdir+package.lower().replace('appimage',"appdata")+".xml"
    413                 self._debug("checking if we need to download "+filename)
    414                 if not os.path.isfile(filename):
    415                         repo_info={'info_url':info_url,'repo':repo,repo_name:'repo_name'}
    416                         self._write_xml_file(filename,appinfo,repo_info,lock)
     412#               filename=outdir+package.lower().replace('appimage',"appdata")+".xml"
     413#               self._debug("checking if we need to download "+filename)
     414#               if not os.path.isfile(filename):
     415                repo_info={'info_url':info_url,'repo':repo,repo_name:'repo_name'}
     416                self._write_xml_file(appinfo,repo_info,lock)
    417417                semaphore.release()
    418418        #def _th_write_xml
    419419
    420         def _write_xml_file(self,filename,appinfo,repo_info,lock):
    421                         name=appinfo['name'].lower().replace(".appimage","")
    422                         self._debug("Generating %s xml"%appinfo['package'])
    423                         f=open(filename,'w')
    424                         f.write('<?xml version="1.0" encoding="UTF-8"?>'+"\n")
    425                         f.write("<components version=\"0.10\">\n")
    426                         f.write("<component  type=\"desktop-application\">\n")
    427                         f.write("  <id>%s</id>\n"%appinfo['package'].lower())
    428                         f.write("  <pkgname>%s</pkgname>\n"%appinfo['package'])
    429                         f.write("  <name>%s</name>\n"%name)
    430                         f.write("  <metadata_license>CC0-1.0</metadata_license>\n")
    431                         f.write("  <provides><binary>%s</binary></provides>\n"%appinfo['package'])
    432                         if 'releases' in appinfo.keys():
    433                                 f.write("  <releases>\n")
    434                                 for release in appinfo['releases']:
    435                                         tmp_release=release.split('/')
    436                                         rel_number='/'.join(tmp_release[-2:])
    437                                         f.write("    <release version=\"%s\" urgency=\"medium\">"%rel_number)
    438                                         f.write("</release>\n")
    439                                 f.write("  </releases>\n")
    440                         f.write("  <launchable type=\"desktop-id\">%s.desktop</launchable>\n"%name)
    441                         if appinfo['description']=='':
    442                                 with lock:
    443                                         try:
    444                                                 if appinfo['name'] in self.descriptions_dict.keys():
    445                                                         (description,icon)=self.descriptions_dict[appinfo['name']]
    446                                                 else:
    447                                                         (description,icon)=self._get_description_icon(appinfo['name'],repo_info)
    448                                                         self.descriptions_dict.update({appinfo['name']:[description,icon]})
    449                                         except:
    450                                                 description=''
    451                                                 icon=''
    452                         else:
    453                                 description=appinfo['description']
     420        def _write_xml_file(self,appinfo,repo_info,lock):
     421                #Search in local store for the app
     422                app=self.store.get_app_by_pkgname(appinfo['package'].lower())
     423                sw_new=False
     424                if not app:
     425                        app=appstream.App()
     426                        sw_new=True
     427                bundle=appstream.Bundle()
     428                icon=appstream.Icon()
     429                screenshot=appstream.Screenshot()
     430                #F*****g appstream have kinds undefined but kind_from_string works... wtf?
     431#               bundle.set_kind(appstream.BundleKind.SNAP)
     432                bundle.set_kind(bundle.kind_from_string('APPIMAGE'))
     433                bundle.set_id(appinfo['package']+'.appimage')
     434                app.add_bundle(bundle)
     435                app.add_category("AppImage")
     436                if sw_new:
     437                        app.set_name("C",appinfo['name'])
     438#               app.add_pkgname(pkg.get_name()+'.snap')
     439                        app.add_pkgname(appinfo['package'])
     440#               release=appstream.Release()
     441#               release.set_version(pkg.get_version())
     442#               app.add_release(release)
     443                        app.set_id("appimagehub.%s"%appinfo['name']+'.appimage')
     444#               app.set_id(pkg.get_name()+'.snap')
     445                        app.set_id_kind=appstream.IdKind.DESKTOP
     446                        description="This is an AppImage bundle of app %s. It hasn't been tested by our developers and comes from a 3rd party dev team. Please use it carefully.\n%s"%(appinfo['name'],appinfo['description'])
    454447                        summary=' '.join(list(description.split(' ')[:8]))
    455448                        if len(description.split(' '))>8:
    456449                                summary+="... "
    457                         description="This is an AppImage bundle of app %s. It hasn't been tested by our developers and comes from a 3rd party dev team. Please use it carefully.\n%s"%(name,description)
    458                         if summary=='':
    459                                 summary=' '.join(list(description.split(' ')[:8]))
    460                         f.write("  <description><p></p><p>%s</p></description>\n"%description)
    461                         f.write("  <summary>%s</summary>\n"%summary)
    462 #                       f.write("  <icon type=\"local\">%s</icon>\n"%appinfo['icon'])
    463                         f.write("<icon type=\"cached\">"+name+"_"+name+".png</icon>\n")
    464                         f.write("  <url type=\"homepage\">%s</url>\n"%appinfo['homepage'])
    465                         f.write("  <bundle type=\"appimage\">%s</bundle>\n"%appinfo['name'])
    466                         f.write("  <keywords>\n")
    467                         keywords=name.split("-")
    468                         banned_keywords=["linux","x86_64","i386","ia32","amd64"]
    469                         for keyword in keywords:
    470                                 #Better than isalpha method for this purpose
    471                                 if keyword.isidentifier() and keyword not in banned_keywords:
    472                                         f.write("       <keyword>%s</keyword>\n"%keyword)
    473                         f.write("       <keyword>appimage</keyword>\n")
    474                         f.write("  </keywords>\n")
    475                         f.write("  <categories>\n")
    476                         f.write("       <category>AppImage</category>\n")
    477                         if 'categories' in appinfo.keys():
    478                                 for category in appinfo['categories']:
    479                                         f.write("       <category>%s</category>\n"%category)
    480                         f.write("  </categories>\n")
    481                         f.write("</component>\n")
    482                         f.write("</components>\n")
    483                         f.close()
     450                        app.set_description("C",description)
     451                        app.set_comment("C",summary)
     452                        self.store.add_app(app)
     453
     454#               app.add_keyword("C",pkg.get_name())
     455#               for word in pkg.get_summary().split(' '):
     456#                       app.add_keyword("C",word)
     457
     458#               if pkg.get_icon():
     459#                       if self.icon_cache_enabled:
     460#                               icon.set_kind(appstream.IconKind.LOCAL)
     461#                               icon.set_name(self._download_file(pkg.get_icon(),pkg.get_name(),self.icons_folder))
     462#                       else:
     463#                               icon.set_kind(appstream.IconKind.REMOTE)
     464#                               icon.set_name(pkg.get_icon())
     465#                       app.add_icon(icon)
     466
     467#               if pkg.get_license():
     468#                       app.set_project_license(pkg.get_license())
     469
     470#               if pkg.get_screenshots():
     471#                       for snap_screen in pkg.get_screenshots():
     472#                               img=appstream.Image()
     473##                              img.load_filename(self._download_file(snap_screen.get_url(),pkg.get_name(),self.images_folder))
     474#                               img.set_kind(appstream.ImageKind.SOURCE)
     475#                               img.set_url(snap_screen.get_url())
     476#                               break
     477#                       screenshot.add_image(img)
     478#                       app.add_screenshot(screenshot)
     479                return(app)
     480#                       name=appinfo['name'].lower().replace(".appimage","")
     481#                       self._debug("Generating %s xml"%appinfo['package'])
     482#                       f=open(filename,'w')
     483#                       f.write('<?xml version="1.0" encoding="UTF-8"?>'+"\n")
     484#                       f.write("<components version=\"0.10\">\n")
     485#                       f.write("<component  type=\"desktop-application\">\n")
     486#                       f.write("  <id>%s</id>\n"%appinfo['package'].lower())
     487#                       f.write("  <pkgname>%s</pkgname>\n"%appinfo['package'])
     488#                       f.write("  <name>%s</name>\n"%name)
     489#                       f.write("  <metadata_license>CC0-1.0</metadata_license>\n")
     490#                       f.write("  <provides><binary>%s</binary></provides>\n"%appinfo['package'])
     491#                       if 'releases' in appinfo.keys():
     492#                               f.write("  <releases>\n")
     493#                               for release in appinfo['releases']:
     494#                                       tmp_release=release.split('/')
     495#                                       rel_number='/'.join(tmp_release[-2:])
     496#                                       f.write("    <release version=\"%s\" urgency=\"medium\">"%rel_number)
     497#                                       f.write("</release>\n")
     498#                               f.write("  </releases>\n")
     499#                       f.write("  <launchable type=\"desktop-id\">%s.desktop</launchable>\n"%name)
     500#                       if appinfo['description']=='':
     501#                               with lock:
     502#                                       try:
     503#                                               if appinfo['name'] in self.descriptions_dict.keys():
     504#                                                       (description,icon)=self.descriptions_dict[appinfo['name']]
     505#                                               else:
     506#                                                       (description,icon)=self._get_description_icon(appinfo['name'],repo_info)
     507#                                                       self.descriptions_dict.update({appinfo['name']:[description,icon]})
     508#                                       except:
     509#                                               description=''
     510#                                               icon=''
     511#                       else:
     512#                               description=appinfo['description']
     513#                       summary=' '.join(list(description.split(' ')[:8]))
     514#                       if len(description.split(' '))>8:
     515#                               summary+="... "
     516#                       description="This is an AppImage bundle of app %s. It hasn't been tested by our developers and comes from a 3rd party dev team. Please use it carefully.\n%s"%(name,description)
     517#                       if summary=='':
     518#                               summary=' '.join(list(description.split(' ')[:8]))
     519#                       f.write("  <description><p></p><p>%s</p></description>\n"%description)
     520#                       f.write("  <summary>%s</summary>\n"%summary)
     521##                      f.write("  <icon type=\"local\">%s</icon>\n"%appinfo['icon'])
     522#                       f.write("<icon type=\"cached\">"+name+"_"+name+".png</icon>\n")
     523#                       f.write("  <url type=\"homepage\">%s</url>\n"%appinfo['homepage'])
     524#                       f.write("  <bundle type=\"appimage\">%s</bundle>\n"%appinfo['name'])
     525#                       f.write("  <keywords>\n")
     526#                       keywords=name.split("-")
     527#                       banned_keywords=["linux","x86_64","i386","ia32","amd64"]
     528#                       for keyword in keywords:
     529#                               #Better than isalpha method for this purpose
     530#                               if keyword.isidentifier() and keyword not in banned_keywords:
     531#                                       f.write("       <keyword>%s</keyword>\n"%keyword)
     532#                       f.write("       <keyword>appimage</keyword>\n")
     533#                       f.write("  </keywords>\n")
     534#                       f.write("  <categories>\n")
     535#                       f.write("       <category>AppImage</category>\n")
     536#                       if 'categories' in appinfo.keys():
     537#                               for category in appinfo['categories']:
     538#                                       f.write("       <category>%s</category>\n"%category)
     539#                       f.write("  </categories>\n")
     540#                       f.write("</component>\n")
     541#                       f.write("</components>\n")
     542#                       f.close()
    484543        #def _write_xml_file
    485544
Note: See TracChangeset for help on using the changeset viewer.