CLI Application Directory
You can get the application directory where you can, for example, save configuration files with typer.get_app_dir()
:
from pathlib import Path
import typer
APP_NAME = "my-super-cli-app"
def main():
app_dir = typer.get_app_dir(APP_NAME)
config_path: Path = Path(app_dir) / "config.json"
if not config_path.is_file():
print("Config file doesn't exist yet")
if __name__ == "__main__":
typer.run(main)
It will give you a directory for storing configurations appropriate for your CLI program for the current user in each operating system.
Check it:
$ python main.py
Config file doesn't exist yet
About Path
¶
If you hadn't seen something like that:
Path(app_dir) / "config.json"
A Path
object can be used with /
and it will convert it to the separator for the current system (/
for Unix systems and \
for Windows).
If the first element is a Path
object the next ones (after the /
) can be str
.
And it will create a new Path
object from that.
If you want a quick guide on using Path()
you can check this post on Real Python or this post by Trey Hunner.
In the code above, we are also explicitly declaring config_path
as having type Path
to help the editor provide completion and type checks:
config_path: Path = Path(app_dir) / "config.json"
Otherwise it could think it's a sub-type (a PurePath
) and stop providing completion for some methods.