public inbox for [email protected]  
help / color / mirror / Atom feed
From: Akshay Joshi <[email protected]>
To: Khushboo Vashi <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: Re: #2483 - Add pgAdmin users via a CLI or script call
Date: Tue, 5 Sep 2023 12:35:51 +0530
Message-ID: <CANxoLDf0W3U5AMJQqPgwfkwi67dEV1eHBwbYja=L8g2UbMWuFw@mail.gmail.com> (raw)
In-Reply-To: <CAFOhELegGrRJH=wOOcCaH0fOeE3jDnvQk7Ca8hnLU_iGS_G-Hw@mail.gmail.com>
References: <CAFOhELegGrRJH=wOOcCaH0fOeE3jDnvQk7Ca8hnLU_iGS_G-Hw@mail.gmail.com>

Seems good to me.

On Mon, Sep 4, 2023 at 5:20 PM Khushboo Vashi <
[email protected]> 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 '[email protected]' --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
>
>
>


view thread (2+ messages)

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: #2483 - Add pgAdmin users via a CLI or script call
  In-Reply-To: <CANxoLDf0W3U5AMJQqPgwfkwi67dEV1eHBwbYja=L8g2UbMWuFw@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox