summaryrefslogtreecommitdiff
path: root/src/backend/syncdb.py
blob: b942a1214e71f44cfdcc398c970db4c921b97eeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/python3

import csv
import shutil
import urllib3
import sqlite3
import subprocess
import sisyphus.getenv
import sisyphus.getfs


def rmt_csv():
    pcsv_addr, dcsv_addr = sisyphus.getenv.csv_addr()
    http = urllib3.PoolManager()

    with http.request('GET', pcsv_addr, preload_content=False) as tmp_buffer, open(sisyphus.getfs.rmt_pcsv, 'wb') as output_file:
        shutil.copyfileobj(tmp_buffer, output_file)

    with http.request('GET', dcsv_addr, preload_content=False) as tmp_buffer, open(sisyphus.getfs.rmt_dcsv, 'wb') as output_file:
        shutil.copyfileobj(tmp_buffer, output_file)


def lcl_csv():
    subprocess.call(['/usr/share/sisyphus/helpers/make_local_csv'])


def rmt_tbl():
    rmt_csv()

    sisyphusdb = sqlite3.connect(sisyphus.getfs.lcl_db)
    sisyphusdb.cursor().execute('''drop table if exists remote_packages''')
    sisyphusdb.cursor().execute('''drop table if exists remote_descriptions''')
    sisyphusdb.cursor().execute(
        '''create table remote_packages (category TEXT,name TEXT,version TEXT,slot TEXT)''')
    sisyphusdb.cursor().execute(
        '''create table remote_descriptions (category TEXT,name TEXT,description TEXT)''')

    with open(sisyphus.getfs.rmt_pcsv) as input_file:
        for row in csv.reader(input_file):
            sisyphusdb.cursor().execute(
                "insert into remote_packages (category, name, version, slot) values (?, ?, ?, ?);", row)

    with open(sisyphus.getfs.rmt_dcsv) as input_file:
        for row in csv.reader(input_file):
            sisyphusdb.cursor().execute(
                "insert into remote_descriptions (category, name, description) values (?, ?, ?);", row)

    sisyphusdb.commit()
    sisyphusdb.close()


def lcl_tbl():
    lcl_csv()

    sisyphusdb = sqlite3.connect(sisyphus.getfs.lcl_db)
    sisyphusdb.cursor().execute('''drop table if exists local_packages''')
    sisyphusdb.cursor().execute(
        '''create table local_packages (category TEXT,name TEXT,version TEXT,slot TEXT)''')

    with open(sisyphus.getfs.lcl_pcsv) as input_file:
        for row in csv.reader(input_file):
            sisyphusdb.cursor().execute(
                "insert into local_packages (category, name, version, slot) values (?, ?, ?, ?);", row)

    sisyphusdb.commit()
    sisyphusdb.close()