/
main.py
84 lines (66 loc) · 2.12 KB
/
main.py
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
Whotracks.me website development tool.
Usage:
whotracksme website [serve]
whotracksme data [list]
whotracksme db (create|dump|check_urls|json)
whotracksme -h | --help
Options:
serve Watch for changes and reload.
-h, --help Show help message.
"""
from pathlib import Path
import os
import sqlite3
import json
import docopt
from whotracksme.website.builder import Builder
from whotracksme.website.serve import serve
from whotracksme.data.db import load_tracker_db, create_tracker_map
from whotracksme.qa.todo import upgrade_to_https, create_task_files
class objectview:
"""Allows to access keys of a dictionary as attributes.
Example:
>>> view = objectview({ 'foo': True, 'bar': False })
>>> view.foo
True
>>> view.bar
False
"""
def __init__(self, d):
self.__dict__ = d
def website(args):
builder = Builder()
builder.build()
if args.serve:
serve(builder)
def main():
args = objectview(docopt.docopt(__doc__))
if args.website:
website(args)
elif args.data:
# TODO - allow basic exploration of the data
pass
elif args.db:
if args.create:
load_tracker_db(loc='tracker.db')
elif args.dump:
# TODO: Replace this with `pathlib`
tracker_db_path = os.path.join(os.path.dirname(__file__), 'data', 'assets', 'trackerdb.sql')
conn = sqlite3.connect('tracker.db')
with open(tracker_db_path, 'w') as fp:
for line in conn.iterdump():
fp.write('%s\n' % line)
elif args.check_urls:
needqa = Path('needqa')
if not needqa.exists():
needqa.mkdir()
https_upgrade = upgrade_to_https(tracker_db='tracker.db')
create_task_files(needqa_folder=needqa, **https_upgrade)
elif args.json:
db_map = create_tracker_map(load_tracker_db(), with_iab_vendors=True)
print(json.dumps(db_map, indent=2, sort_keys=True))
if __name__ == '__main__':
main()