install.py 4.63 KB
Newer Older
alice's avatar
alice committed
1
from .saberes import SaberesConfig, Saber, SaberesDataset, \
2
3
4
5
    SaberesDataStore, Balaio, Mucua, Mocambo, Mocambola
from .sankofa import Sankofa

from pathlib import Path
6
from configparser import ConfigParser
7

8
import argparse, os
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

parser = argparse.ArgumentParser("criar_mucua")
parser.add_argument("--path", help="Caminho absoluto da pasta para os dados do Baobáxia", type=str)
parser.add_argument("--balaio", help="Nome do Balaio", type=str)
parser.add_argument("--mucua", help="Nome da Mucua local onde instalar o Baobáxia", type=str)
parser.add_argument("--mocambo", help="Nome do Mocambo de base dessa Mucua local", type=str)
parser.add_argument("--mocambola", help="Username para criar um Mocambola", type=str)
parser.add_argument("--email", help="Email do Mocambola", type=str)
parser.add_argument("--password", help="Password para o Mocambola", type=str)
parser.add_argument("--smid_len", help="Numero de carateres para os IDs", type=int)
parser.add_argument("--slug_name_len", help="Numero de carateres para os nomes abreviados", type=int)
parser.add_argument("--slug_smid_len", help="Numero de carateres para os IDs abreviados", type=int)
parser.add_argument("--slug_sep", help="Caracter separador para o identificativo", type=str)


args = parser.parse_args()


def install(*, path: str, balaio: str, mucua: str, mocambo: str, mocambola: str,
            email: str, password: str, smid_len: int, slug_name_len: int,
            slug_smid_len: int, slug_sep: str):
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
    """Instalador do Baobáxia

    :param path: Caminho absoluto da pasta para os dados do Baobáxia
    :type path: str
    :param balaio: Nome do Balaio
    :type balaio: str
    :param mucua: Nome da Mucua local onde instalar o Baobáxia
    :type mucua: str
    :param mocambo: Nome do Mocambo de base dessa Mucua local
    :type mocambo: str
    :param mocambola: Username para criar um Mocambola
    :type mocambola: str
    :param email: Email do Mocambola
    :type email: str
    :param password: Password para o Mocambola
    :type password: str
46
47
48
49
50
51
52
53
    :param smid_len: Numero de carateres para os IDs
    :type smid_len: int
    :param slug_name_len: Numero de carateres para os nomes abreviados
    :type slug_name_len: int
    :param slug_smid_len: Numero de carateres para os IDs abreviados
    :type slug_smid_len: int
    :param slug_sep: Caracter separador para o identificativo
    :type slug_sep: str
54
55

    """
alice's avatar
alice committed
56

57
58
59
60
61
    data_path = Path(path)

    if data_path.is_absolute:
        config = SaberesConfig(
            data_path = data_path,
alice's avatar
alice committed
62
            default_balaio = balaio,
63
64
65
66
67
            smid_len = smid_len, 
            slug_name_len = slug_name_len,
            slug_smid_len = slug_smid_len,
            slug_sep = slug_sep
        )
68
        datastore = SaberesDataStore(config)
alice's avatar
alice committed
69
70
71
72
73
74
75
76
        balaio_dataset = datastore.create_balaio_dataset(
            mocambola=mocambola)
        balaio_saber = balaio_dataset.settle(
            balaio_dataset.create_obj(name=balaio, default_mucua=mucua))
        mucua_dataset = datastore.create_mucua_dataset(
            balaio=balaio_saber.slug, mocambola=mocambola)
        mucua_saber = dataset.settle(
            dataset.create_obj(name=mucua))
77
78
79
        mocambolas_path = config.data_path / balaio_saber.slug \
            / mucua_saber.slug / 'mocambolas'
        mocambolas_path.mkdir()
alice's avatar
alice committed
80
81
        mocambola_dataset = datastore.create_dataset(
            Mocambola, balaio_saber.slug, mucua_saber.slug, mocambola)
82
83
        from .util import str_to_hash
        mocambola_criado.password_hash = str_to_hash(password)
alice's avatar
alice committed
84
85
86
87
88
89
90
91
        mocambola_saber = dataset.settle(
            dataset.create_obj(
                path=Path('mocambolas'),
                name=mocambola,
                username=mocambola,
                email=email,
                password_hash=str_to_hash(password)
                ))
92
93

        Sankofa.create_balaio(balaio=balaio_saber.slug,
alice's avatar
alice committed
94
                              description=balaio_saber.slug,
95
96
97
98
                              config=config)
        
        Sankofa.add(saberes=[mucua_saber,
                             mocambola_saber],
alice's avatar
alice committed
99
                    mocambola=mocambola_saber,
100
                    config=config)
101

102
    config_file = ConfigParser()
103
    
104
    config_file['default'] = {
105
106
        "data_path": path,
        "saber_file_ext": ".baobaxia",
alice's avatar
alice committed
107
        "default_balaio": balaio_saber.slug,
108
109
110
111
        "smid_len": smid_len,
        "slug_smid_len": slug_smid_len,
        "slug_name_len": slug_name_len,
        "slug_sep": slug_sep
112
113
    }

114
115
116
117
118
    try:     
        with open(os.path.join(os.path.expanduser("~"), '.baobaxia.conf'), 'w') as writefile:
            config_file.write(writefile)
    except IOError:
        pass
119

120
121
122
def criar_mucua():
    install(**args.__dict__)

123