Re: #2483 - Add pgAdmin users via a CLI or script call

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
>
>
>

In response to

Browse pgadmin-hackers by date

  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