Update wiki links to the new short URL
[aur.git] / aurweb / scripts / aurblup.py
blobe32937ce0007b965cdcc446b6195000d383359b1
1 #!/usr/bin/env python3
3 import re
5 import pyalpm
7 import aurweb.config
8 import aurweb.db
10 db_path = aurweb.config.get('aurblup', 'db-path')
11 sync_dbs = aurweb.config.get('aurblup', 'sync-dbs').split(' ')
12 server = aurweb.config.get('aurblup', 'server')
15 def main():
16 blacklist = set()
17 providers = set()
18 repomap = dict()
20 h = pyalpm.Handle("/", db_path)
21 for sync_db in sync_dbs:
22 repo = h.register_syncdb(sync_db, pyalpm.SIG_DATABASE_OPTIONAL)
23 repo.servers = [server.replace("%s", sync_db)]
24 t = h.init_transaction()
25 repo.update(False)
26 t.release()
28 for pkg in repo.pkgcache:
29 blacklist.add(pkg.name)
30 [blacklist.add(x) for x in pkg.replaces]
31 providers.add((pkg.name, pkg.name))
32 repomap[(pkg.name, pkg.name)] = repo.name
33 for provision in pkg.provides:
34 provisionname = re.sub(r'(<|=|>).*', '', provision)
35 providers.add((pkg.name, provisionname))
36 repomap[(pkg.name, provisionname)] = repo.name
38 conn = aurweb.db.Connection()
40 cur = conn.execute("SELECT Name, Provides FROM OfficialProviders")
41 oldproviders = set(cur.fetchall())
43 for pkg, provides in oldproviders.difference(providers):
44 conn.execute("DELETE FROM OfficialProviders "
45 "WHERE Name = ? AND Provides = ?", [pkg, provides])
46 for pkg, provides in providers.difference(oldproviders):
47 repo = repomap[(pkg, provides)]
48 conn.execute("INSERT INTO OfficialProviders (Name, Repo, Provides) "
49 "VALUES (?, ?, ?)", [pkg, repo, provides])
51 conn.commit()
52 conn.close()
55 if __name__ == '__main__':
56 main()