From: | Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com> |
---|---|
To: | Khushboo Vashi <khushboo(dot)vashi(at)enterprisedb(dot)com> |
Cc: | pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org> |
Subject: | Re: #2483 - Add pgAdmin users via a CLI or script call |
Date: | 2023-09-05 07:05:51 |
Message-ID: | CANxoLDf0W3U5AMJQqPgwfkwi67dEV1eHBwbYja=L8g2UbMWuFw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgadmin-hackers |
Seems good to me.
On Mon, Sep 4, 2023 at 5:20 PM Khushboo Vashi <
khushboo(dot)vashi(at)enterprisedb(dot)com> wrote:
> Hello hackers,
>
> I am working on #2483 - Add pgAdmin users via a CLI or script call.
> As we want a consistent and centralised CLI, I suggest replacing Argparse
> with the Typer <https://pypi.org/project/typer/> package.
> The main advantage of the Typer is that it decreases the complexity and is
> built upon CLICK, the most used library for Python CLI.
>
> We will use the setup.py file for all the CLI modules; we can introduce
> one function per CLI feature (per command) as described below.
> So, the below line will cover all the combinations of Load server
> functionality.
>
> @app.command()
> def load_servers(loadservers: str, user: Optional[str] = None, sqlite_path: Optional[str] = None, replace: Optional[bool] = False):
>
>
> The command will be like this:
>
> python setup.py load-servers test.json
> python setup.py load-servers test.json --replace
> python setup.py load-servers a.json --user 'test(at)gmail(dot)com' --replace
>
>
> ======================================================================
>
> An example of reducing complexity:
>
> *ArgParse code:*
>
> if __name__ == '__main__':
>> # Configuration settings
>> parser = argparse.ArgumentParser(description='Setup the pgAdmin config DB')
>
>
> imp_group = parser.add_argument_group('Load server config')
>> imp_group.add_argument('--load-servers', metavar="INPUT_FILE",
>> help='Load servers into the DB', required=False)
>> imp_group.add_argument('--replace', dest='replace', action='store_true',
>> help='replace server configurations',
>> required=False)
>
>
> imp_group.set_defaults(replace=False)
>>
>
> args, extra = parser.parse_known_args()
>
>
> # What to do?
>> if args.dump_servers is not None:
>> try:
>> dump_servers(args)
>> except Exception as e:
>> print(str(e))
>
> ======================================================================
>
> *Equivalent Typer code:*
>
> @app.command()
>>
>> def load_servers(loadservers: str, user: Optional[str] = None, sqlite_path: Optional[str] = None, replace: Optional[bool] = False):
>>
>> .......
>> app = typer.Typer()
>> if __name__ == "__main__":
>> app()
>
>
>
> If anyone has any suggestions/questions, do let me know.
>
> Thanks,
> Khushboo
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Aditya Toshniwal | 2023-09-05 07:23:39 | Replace jasmine+karma with jest |
Previous Message | dependabot[bot] | 2023-09-05 06:25:58 | [pgadmin-org/pgadmin4] 9d09ee: Python dependency: Bump werkzeug from 2.2.3 to 2.3.7 |