public inbox for [email protected]
help / color / mirror / Atom feedFrom: 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