示例#1
0
文件: package.py 项目: simon-r/aurpy
 def compile_install_depends_rec(self):
     
     query = qe.query()
     
     if self._depends == None :
         return 
     
     for pkg in self._depends.keys() :
         self._depends[pkg].compile_install_depends_rec()
         if not query.test_installed_package( pkg ) :
             f = compile_sequence( self._depends[pkg] )
             if f :
                 install_sequence( self._depends[pkg] , confirm=False , asdep=True )
示例#2
0
文件: main.py 项目: simon-r/aurpy
def main():
 
    #test()
 
    options = args.parse_args()

    q = que.query()

    if options.version :
        print( "                       aurpy v%s" % glob.get_version() )
        print( "------------------------------------")
        print( q.pacman_version() )
        exit(0)

    if len( sys.argv ) <= 1 :
        exit(1)

    if options.aur :
        if len( options.packages ) > 0 :
            pkgs_list = sorted( list( OrderedDict.fromkeys( options.packages ).keys() ) )
            isntall_aur_pkgs( pkgs_list )
            exit(0)
    
    if options.aur and options.upgrades :
        full_aur_update()
        exit(1)
    
    argv = list( sys.argv )
    argv.pop(0) 

    ## call pacman ....
    if sum( [ options.database , options.query , options.remove , options.sync , options.deptest , options.upgrade ] ) > 1 :
        print( "error: only one operation may be used at a time" )
        exit(1) 

    if options.query or options.deptest or ( options.sync and options.info ):
        pacman.user_pacman( argv )
        return 0
    
    
    if options.database or options.upgrade or options.remove or options.sync :
        pacman.root_pacman( argv )
        return 0 

    pacman.try_pacman( argv )
    
    #tools.sync_pacman()


    
    
示例#3
0
文件: package.py 项目: simon-r/aurpy
 def _list_dependecies( self , dep ):
     query = qe.query()
     
     for d in self._pkg_data[dep] :
         if query.test_installed_package( d ) :
             self._pkg_data["%s_installed"%dep].append( d )
         elif query.test_repo_package( d ) :
             self._pkg_data["%s_repo"%dep].append( d )
         elif query.test_aur_package( d ) :
             self._pkg_data["%s_aur"%dep].append( d )
         elif query.test_group_package( d ) :
             self._pkg_data["%s_group"%dep].append( d )
         else :
             self._pkg_data["%s_nd"%dep].append( d )        
示例#4
0
文件: package.py 项目: simon-r/aurpy
 def read_repo_data(self):
     
     config = cfg.aurpy_config()
     query = qe.query()
     
     if self.origin == glob.AUR :
     
         opener = urllib.request.FancyURLopener({})
         f = opener.open( config.get_pkg_url( self.origin , self.name ) )
         
         try :
             aur_html = f.read()
             self._aur_html = aur_html.decode()
         except :
             return False
         
         #print( self._aur_html )
         
         r = '<h2>Package\s+Details\:\s+([\w\-]+)\s+([\w+\-\.\:]+)\s*<\/h2>'
         m = re.search( r , self._aur_html )
         
         if m == None :
             raise NameError("Invalid AUR HTML format")
              
             
         self.name = m.group(1)
         self.repo_version = m.group(2) 
         self.test_vcs()
         
         inst = query.test_installed_package( self.name )
         if inst :
             self.installed_version = inst[1]
         
         return True
     
     else :
         
         inf = query.test_repo_package( self.name )
         inst = query.test_installed_package( self.name )
         
         if inf == None and inst == None :
             return False
         
         self.repo_version = inf[2]
         
         if inst :
             self.installed_version = inst[1]
             
         return True
示例#5
0
文件: package.py 项目: simon-r/aurpy
def foreign():
    
    query = qe.query()
    
    out = query.foreign()
    
    pkgs = dict()
    
    for p in out :
        pl = p.split()
        pkgs[pl[0]] = package()
        pkgs[pl[0]].name = pl[0]
        pkgs[pl[0]].installed_version = pl[1]
        
    return pkgs
示例#6
0
文件: package.py 项目: simon-r/aurpy
def build_pkgs_dict( pkg_list , version=True , explicit=False ):
    
    query = qe.query()
    
    pkgs = dict()
    
    for p in pkg_list :
        pl = p.split()
        
        pkgs[pl[0]] = package()
        pkgs[pl[0]].name = pl[0]
        if version : 
            pkgs[pl[0]].installed_version = pl[1]
            
        if explicit :
            pkgs[pl[0]].reason = glob.EXPLICIT
            
    return pkgs
示例#7
0
文件: main.py 项目: simon-r/aurpy
def test():
    
    q = que.query()
    print( q.test_aur_package( "yaourt" ) )
        
#     cf = cfg.aurpy_config()
#     
#     cf.set_subpackages( "mainp" , [ "sub1" , "sub2" , "sub3" , "sub4" , "mainp" ] )
#     cf.set_subpackages( "mainp2" , [ "sub12" , "sub22" , "sub32" , "sub42" , "mainp2" ] )
#     
#     print( cf.is_subpackage( "sub12" ) )
#     print( cf.has_subpackages( "mainp2" ) )
#     
#     cf.insert_db_package( "ciao" , "/tmp" , "aur" , "aur_url" , "src_url" )
#     cf.insert_db_package( "ciao2" , "/tmp" , "aur" , "aur_url" , "src_url" )
    
#     for i in range(100) :
#         cf.insert_db_package( "ciao%d"%i , "/tmp" , "aur" , "aur_url" , "src_url" )
#         
#     for i in range( 20 , 50 ) :
#         cf.set_subpackages( "ciao%d"%i , [ "ciao%d"%(i-30) ] ) 
    
    exit(0)