diff --git a/docs/src/app_dir/tutorial001.py b/docs/src/app_dir/tutorial001.py new file mode 100644 index 0000000..f876f58 --- /dev/null +++ b/docs/src/app_dir/tutorial001.py @@ -0,0 +1,16 @@ +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(app_dir) / "config.json" + if not config_path.is_file(): + typer.echo("Config file doesn't exist yet") + + +if __name__ == "__main__": + typer.run(main) diff --git a/docs/tutorial/app-dir.md b/docs/tutorial/app-dir.md new file mode 100644 index 0000000..2c10151 --- /dev/null +++ b/docs/tutorial/app-dir.md @@ -0,0 +1,35 @@ +You can get the application directory where you can, for example, save configuration files with `typer.get_app_dir()`: + +```Python hl_lines="9" +{!./src/app_dir/tutorial001.py!} +``` + +It will give you a directory for storing configurations appropriate for your CLI program for the current user in each operating system. + +Check it: + +
+ +```console +$ python main.py + +Config file doesn't exist yet +``` + +
+ +## About `Path` + +If you hadn't seen something like that: + +```Python +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. diff --git a/mkdocs.yml b/mkdocs.yml index b790c69..c462744 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -49,6 +49,7 @@ nav: - File: 'tutorial/parameter-types/file.md' - Ask with Prompt: 'tutorial/prompt.md' - Progress Bar: 'tutorial/progressbar.md' + - CLI Application Directory: 'tutorial/app-dir.md' - Alternatives, Inspiration and Comparisons: 'alternatives.md' - Help Typer - Get Help: 'help-typer.md' - Development - Contributing: 'contributing.md'