From 3552f3c049b3df4501a58bf5dd094c52729f5124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=88=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=82=D0=BE=D0=BA=D0=B8?= =?UTF-8?q?=D1=9B-=D0=A8=D1=83=D0=BC=D0=B0=D1=80=D0=B0=D1=86?= Date: Sun, 4 Feb 2024 02:44:48 +0100 Subject: [PATCH] add database handling using shelve --- app/__pycache__/database.cpython-312.pyc | Bin 0 -> 2490 bytes app/__pycache__/utils.cpython-312.pyc | Bin 0 -> 345 bytes app/app.py | 60 ++++++++++++++ app/database.py | 52 ++++++++++++ app/utils.py | 5 ++ requirements.txt | 4 +- spyglass.py | 100 ----------------------- 7 files changed, 120 insertions(+), 101 deletions(-) create mode 100644 app/__pycache__/database.cpython-312.pyc create mode 100644 app/__pycache__/utils.cpython-312.pyc create mode 100755 app/app.py create mode 100755 app/database.py create mode 100644 app/utils.py delete mode 100755 spyglass.py diff --git a/app/__pycache__/database.cpython-312.pyc b/app/__pycache__/database.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..89b25ba56bf2607374b0b95dc593bf86865cd990 GIT binary patch literal 2490 zcmbVOO=ufO6rTOluKsLeE4E_%qlP4w9Iz5faG;?<;MQ(&vPiIzk zWMq<-A!5=%N^=RlICi0sQ{U`r9Va+B^nu=+H}mH0 z%zNK^qu+u-9|9Wq`xk5~2>rzsm*nPPcMJw~WFSK@QOc1*O0;z;C4m%8Ij^J?fv-uX zC$FYd0f}f78S(-$l>4INDWz3}nCB%|k}-kF7t+==NXf|JjAP;Ora9U@33?r2loAXC z9~7`OB^u&_oRSS`0i_h~KIJhKtirqp=Cz6%)0lE`8kyW$Wx02wu z+buY^sv@1w+hicnVBR4MBH~caX@kAffVH>+%gPdxyGv)tfCp!H$fk&VRT!0}!9 zB+Bf843s@ceg#S$S$k`_{lMkhfT}3R?cX6o_)&Dz2N33gvZ;zLLNJq;pv=6pBx~Wx zbmm%2W(u`SL@t(afwX`r;Yf%HWPT~T0>6hronHv#yY$`ZgXeR5S9`O= ztwiBHzH)nYe9)c>N4t=WNp=VTca=hhDH*d!aZI-3!8Ck5VmND~MfIT~& zl-~|;*$f#V4qty8agN>tX7mKGo9MZ}_4e@6@I!xJBhYqxbZPYV_|o`t(pAncoxe4) zt)M`^9X?(m7Rh3Ia3`CFe7!G@ABq?6T%=ePuRu)arFnT?sR|#mx9vRhD%g2O&^O0m zmsZuP(u_cbW$oa683ND$K^drOZf6qE@_>x0YSX8;>aEHj^eMjAr}u52&^v`3?;-Dy zix~J~2%#&0$a&wqzv@5u4prY-*uUH;$ z(TK)>YPr|46+N>VIJP)eGdB{?yZU#K7(7{%8XcXh#+`Fb7ptGIOgsq_>p4A>uztOwVEKeX;3 zA=tkn*M!=sMsHtDuB$8Rs&L2mN`iSC{mGb@cX9rb>pJu4dcJ6sO+F6j`nTn@*<6vR zMMxNKOZqqicp{#vj73hv@E)?A+0i2WIky>qujx@>3us&PD+3!Hy9mTikEDcle6rHB z9cWYfSB-xV2*&~68}pKO5b%mY8=b*~S2k(mGinL`)R@^x!uu3c%2w8-_LJs(^Am2! x(QBXMwRYCI%ctZV%<;BM`PsK6K@grI?^D$I6tzA>;b-X3zn(z>5(3QL{~y^v1pWX3 literal 0 HcmV?d00001 diff --git a/app/__pycache__/utils.cpython-312.pyc b/app/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6b21019cbd4fbeea18b24d5cb9bc73783acb786 GIT binary patch literal 345 zcmYLDJx;?g82$W%ND&nb9T+Pype&dJpdO$D3maP$n>JEHEZadu>cCK>+yJhCxC0m9 z239vN5GhQZ_#7qbllGT8;%zvu|>Tf7U@WFI5H18lmfg}nZxujeEKx!6q z&kDQpJT0Y4>6k-h!|87Ns3YTS17CwD;KEjq4LNjch{;_{{gF1=lk;4?WG<#A+-^d^ z1~;GYuf)16l(1Eim?RZaJqxSrRi0QY60Jq$vfN(l+B2Cc6JaO>?K#pb?D(X)+%9)K zYG!ZC4to&ZWY(E}^%Kkld*&EvAKezEta7z5r&xyX+Y6+Y5kgu{$ysyX0?G&b3(_b5 E0kZl= 23.2.0 +shelve2 >= 1.0 +pyYAML >= 6.0.1 diff --git a/spyglass.py b/spyglass.py deleted file mode 100755 index 93ccabe..0000000 --- a/spyglass.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/python - -import os -import yaml -import platform -from pathlib import Path -# from rich import print - -import typer - - -app = typer.Typer() -project_subcommand = typer.Typer() -app.add_typer(project_subcommand, name='project') - -entries: list = [] - - -@project_subcommand.command('add') -def project_add(path: Path, name: str = None, runner: str = None, editor: str = 'code', multi: bool = False): - - global entries - - if multi: - if name: - print('\n[bold red]Cannot name multiple projects the same.\n') - exit(69) - - for dir in os.listdir(path): - print(dir) - entries.append(assamble_entry(path/dir, name, runner, editor)) - else: - entries.append(assamble_entry(path, name, runner, editor)) - - for project in entries: - store_project(project) - - - - - -def get_database_path(): - database: str = None - os_type: str = platform.system() - - if os_type == 'Linux': - database = os.environ.get('HOME') + '/.local/share/spyglass-db.yaml' - elif os_type == 'Windows': - database = os.environ.get('APPDATA') + 'spyglass-db.yaml' - else: - print('OS not supported') - exit(69) - - return database - - - -def store_project(project: dict): - database: str = get_database_path() - - if not os.path.exists(database): - with open(database, 'w') as f: - f.write('projects:') - data = None - with open(database, 'r') as f: - data = yaml.safe_load(f) - - project_list: list = [proj for proj in data['projects'] if os.path.isdir(proj)] - - print(project_list) - - if project not in project_list: - project_list.append(project) - else: - print('Project already exists') - - with open(database, 'w') as f: - yaml.safe_dump(data, f) - - -def assamble_entry(path: Path, name: str, runner: str, editor: str): - if not name: - name = os.path.dirname(path) - - if not runner: - runner = 'None' - - if not editor: - editor = 'code' - - return {name: {'path': str(path), 'runner': str(path/runner), 'editor': editor}} - - - -def main(): - app() - - -if __name__ == '__main__': - main()