diff --git a/README.md b/README.md index 57cf426..6529d58 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ cookiecutter https://github.com/at-gmbh/at-python-template ``` After running this command, you will be asked questions like the video below is showing. In the section [Choices explained](#-choices-explained) you can find more information on each item. -![image](docs/terminalizer_template_setup.gif "Setup a professional python project in seconds") +[![asciicast](https://asciinema.org/a/625875.svg)](https://asciinema.org/a/625876?autoplay=1&speed=2.5&i=10) ### Step 3: Navigate to Your Project diff --git a/docs/terminalizer_template_setup.cast b/docs/terminalizer_template_setup.cast new file mode 100644 index 0000000..f30b047 --- /dev/null +++ b/docs/terminalizer_template_setup.cast @@ -0,0 +1,169 @@ +{"version": 2, "width": 271, "height": 71, "timestamp": 1702044678, "env": {"SHELL": "/bin/zsh", "TERM": "screen-256color"}} +[0.038452, "o", "\u001b[5 q"] +[0.166404, "o", "\u001b[1m\u001b[3m%\u001b[23m\u001b[1m\u001b[0m \r \r"] +[0.236359, "o", "\r\u001b[0m\u001b[23m\u001b[24m\u001b[J\r\n\u001b[1;36m~/Projects\u001b[0m via \u001b[1;33m🐍 \u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33mv3.11.4\u001b[0m\u001b[1;33m \u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33mvenv\u001b[0m\u001b[1;33m) \u001b[0m\r\n\u001b[1;32m➜\u001b[0m \u001b[K"] +[0.236537, "o", "\u001b[5 q"] +[0.300043, "o", "\u001b[5 q"] +[0.300419, "o", "\r\r\u001bM\u001bM\u001b[?2004h\u001b[0m\u001b[23m\u001b[24m\u001b[J\r\n\u001b[1;36m~/Projects\u001b[0m via \u001b[1;33m🐍 \u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33mv3.11.4\u001b[0m\u001b[1;33m \u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33mvenv\u001b[0m\u001b[1;33m) \u001b[0m\r\n\u001b[1;32m➜\u001b[0m \u001b[K"] +[1.293258, "o", "\u001b[1m\u001b[31mc\u001b[0m\u001b[39m"] +[1.406318, "o", "\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"] +[1.562923, "o", "\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31mo\u001b[1m\u001b[31mo\u001b[0m\u001b[39m"] +[1.991032, "o", "\b\u001b[1m\u001b[31mo\u001b[1m\u001b[31mk\u001b[0m\u001b[39m"] +[2.091713, "o", "\b\u001b[1m\u001b[31mk\u001b[1m\u001b[31mi\u001b[0m\u001b[39m"] +[2.192642, "o", "\b\b\b\b\b\u001b[0m\u001b[32mc\u001b[0m\u001b[32mo\u001b[0m\u001b[32mo\u001b[0m\u001b[32mk\u001b[0m\u001b[32mi\u001b[32me\u001b[39m"] +[2.522393, "o", "\b\b\b\b\b\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31mo\u001b[1m\u001b[31mo\u001b[1m\u001b[31mk\u001b[1m\u001b[31mi\u001b[1m\u001b[31me\u001b[1m\u001b[31mc\u001b[0m\u001b[39m"] +[2.606607, "o", "\b\u001b[1m\u001b[31mc\u001b[1m\u001b[31mu\u001b[0m\u001b[39m"] +[2.752827, "o", "\b\u001b[1m\u001b[31mu\u001b[1m\u001b[31mt\u001b[0m\u001b[39m"] +[2.905092, "o", "\b\u001b[1m\u001b[31mt\u001b[1m\u001b[31mt\u001b[0m\u001b[39m"] +[2.987089, "o", "\b\u001b[1m\u001b[31mt\u001b[1m\u001b[31me\u001b[0m\u001b[39m"] +[3.079732, "o", "\u001b[11D\u001b[0m\u001b[32mc\u001b[0m\u001b[32mo\u001b[0m\u001b[32mo\u001b[0m\u001b[32mk\u001b[0m\u001b[32mi\u001b[0m\u001b[32me\u001b[0m\u001b[32mc\u001b[0m\u001b[32mu\u001b[0m\u001b[32mt\u001b[0m\u001b[32mt\u001b[0m\u001b[32me\u001b[32mr\u001b[39m"] +[3.173694, "o", " "] +[3.799032, "o", "\u001b[3mhttps://github.com/at-gmbh/at-python-template\u001b[23m"] +[4.118897, "o", "\u001b[45D\u001b[23mh\u001b[23mt\u001b[23mt\u001b[23mp\u001b[23ms\u001b[23m:\u001b[23m/\u001b[23m/\u001b[23mg\u001b[23mi\u001b[23mt\u001b[23mh\u001b[23mu\u001b[23mb\u001b[23m.\u001b[23mc\u001b[23mo\u001b[23mm\u001b[23m/\u001b[23ma\u001b[23mt\u001b[23m-\u001b[23mg\u001b[23mm\u001b[23mb\u001b[23mh\u001b[23m/\u001b[23ma\u001b[23mt\u001b[23m-\u001b[23mp\u001b[23my\u001b[23mt\u001b[23mh\u001b[23mo\u001b[23mn\u001b[23m-\u001b[23mt\u001b[23me\u001b[23mm\u001b[23mp\u001b[23ml\u001b[23ma\u001b[23mt\u001b[23me"] +[4.124044, "o", "\u001b[?2004l\r\r\n"] +[4.124288, "o", "\u001b[5 q"] +[10.762557, "o", " \u001b[2m[1/15]\u001b[0m What's your \u001b[1;33mname\u001b[0m? \u001b[1;36m(Jane Doe)\u001b[0m: "] +[14.223745, "o", "B"] +[14.436176, "o", "a"] +[14.577541, "o", "t"] +[14.773895, "o", "m"] +[14.873025, "o", "a"] +[15.00474, "o", "n"] +[15.207874, "o", "\r\n"] +[15.211463, "o", " \u001b[2m[2/15]\u001b[0m Enter your \u001b[1;33mcompany name\u001b[0m; leave empty if not applicable \u001b[1;36m()\u001b[0m: "] +[18.545525, "o", "W"] +[18.761368, "o", "a"] +[18.920087, "o", "y"] +[19.070006, "o", "n"] +[19.169705, "o", "e"] +[19.34709, "o", " "] +[19.64118, "o", "E"] +[19.819245, "o", "n"] +[20.009946, "o", "t"] +[20.129326, "o", "e"] +[20.289621, "o", "r"] +[20.610814, "o", "p"] +[20.808004, "o", "r"] +[20.900374, "o", "i"] +[21.124026, "o", "s"] +[21.243927, "o", "e"] +[21.334345, "o", "s"] +[21.531957, "o", "\r\n"] +[21.535219, "o", " \u001b[2m[3/15]\u001b[0m What's your \u001b[1;33memail address\u001b[0m? \u001b[1;36m(contact@alexanderthamm.com)\u001b[0m: "] +[24.802589, "o", "b"] +[25.001931, "o", "r"] +[25.236998, "o", "u"] +[25.419897, "o", "c"] +[25.531665, "o", "e"] +[25.736521, "o", "."] +[26.136102, "o", "w"] +[26.229378, "o", "a"] +[26.437982, "o", "y"] +[26.608068, "o", "n"] +[26.668636, "o", "e"] +[27.290377, "o", "@"] +[27.833916, "o", "w"] +[27.990074, "o", "e"] +[28.367192, "o", "."] +[28.648249, "o", "c"] +[28.684641, "o", "o"] +[28.818102, "o", "m"] +[29.055832, "o", "\r\n"] +[29.058618, "o", " \u001b[2m[4/15]\u001b[0m Please provide the \u001b[1;33mfull name of your project\u001b[0m, as it would appear in a headline \u001b[1;36m(My Project)\u001b[0m: "] +[32.211989, "o", "b"] +[32.283602, "o", "a"] +[32.500033, "o", "t"] +[32.804571, "o", "b"] +[32.896103, "o", "o"] +[33.03185, "o", "t"] +[33.161551, "o", "\r\n"] +[33.165283, "o", " \u001b[2m[5/15]\u001b[0m Please provide a \u001b[1;33mslug\u001b[0m, which is the project name as it would appear in a URL, or accept this suggestion \u001b[1;36m(batbot)\u001b[0m: "] +[36.336274, "o", "\r\n"] +[36.342145, "o", " \u001b[2m[6/15]\u001b[0m Please provide a \u001b[1;33mmodule name\u001b[0m for your project. Make it short, if possible, and use underscores instead of whitespace \u001b[1;36m(batbot)\u001b[0m: "] +[40.010289, "o", "\r\n"] +[40.01249, "o", " \u001b[2m[7/15]\u001b[0m Provide a \u001b[1;33mshort description\u001b[0m for the project in one sentence \u001b[1;36m(A short summary of the project)\u001b[0m: "] +[43.546906, "o", "a"] +[43.744087, "o", "n"] +[43.876221, "o", "s"] +[44.086253, "o", "w"] +[44.208092, "o", "e"] +[44.320521, "o", "r"] +[44.433652, "o", " "] +[44.635378, "o", "c"] +[44.766593, "o", "a"] +[44.961392, "o", "l"] +[45.127586, "o", "l"] +[45.323951, "o", "s"] +[45.451515, "o", " "] +[45.624625, "o", "a"] +[45.776195, "o", "n"] +[45.857648, "o", "d"] +[45.951309, "o", " "] +[46.155586, "o", "f"] +[46.263423, "o", "i"] +[46.437051, "o", "g"] +[46.612686, "o", "h"] +[46.696564, "o", "t"] +[46.813396, "o", " "] +[47.170354, "o", "c"] +[47.363502, "o", "r"] +[47.4679, "o", "i"] +[47.640322, "o", "m"] +[47.688021, "o", "e"] +[47.774893, "o", " "] +[48.026147, "o", "w"] +[48.139396, "o", "h"] +[48.250355, "o", "e"] +[48.385713, "o", "n"] +[48.514098, "o", " "] +[48.935081, "o", "I"] +[49.141335, "o", "'"] +[49.331606, "o", "m"] +[49.487426, "o", " "] +[49.791948, "o", "o"] +[49.908622, "o", "u"] +[50.039783, "o", "t"] +[50.130263, "o", " "] +[50.315667, "o", "o"] +[50.439301, "o", "f"] +[50.519462, "o", " "] +[50.876113, "o", "o"] +[51.086921, "o", "f"] +[51.244407, "o", "f"] +[51.36207, "o", "i"] +[51.528188, "o", "c"] +[51.62455, "o", "e"] +[51.795292, "o", "\r\n"] +[51.798965, "o", " \u001b[2m[8/15]\u001b[0m Which \u001b[1;33mpackaging tool\u001b[0m would you like to use?\r\n \u001b[1;35m1\u001b[0m - \u001b[1mconda (environment.yml)\u001b[0m\r\n \u001b[1;35m2\u001b[0m - \u001b[1mpip (setup.py)\u001b[0m\r\n \u001b[1;35m3\u001b[0m - \u001b[1mpoetry (pyproject.toml)\u001b[0m\r\n Choose from \u001b[1;35m[1/2/3]\u001b[0m \u001b[1;36m(1)\u001b[0m: "] +[55.023118, "o", "3"] +[55.886553, "o", "\r\n"] +[55.889294, "o", " \u001b[2m[9/15]\u001b[0m Do you want to include \u001b[1;33mJupyter Notebooks\u001b[0m in your project?\r\n \u001b[1;35m1\u001b[0m - \u001b[1mNo\u001b[0m\r\n \u001b[1;35m2\u001b[0m - \u001b[1mYes\u001b[0m\r\n Choose from \u001b[1;35m[1/2]\u001b[0m \u001b[1;36m(1)\u001b[0m: "] +[59.253817, "o", "1"] +[60.236562, "o", "\r\n"] +[60.239815, "o", " \u001b[2m[10/15]\u001b[0m Do you want to use \u001b[1;33mDocker\u001b[0m?\r\n \u001b[1;35m1\u001b[0m - \u001b[1mNo\u001b[0m\r\n \u001b[1;35m2\u001b[0m - \u001b[1mYes\u001b[0m\r\n Choose from \u001b[1;35m[1/2]\u001b[0m \u001b[1;36m(1)\u001b[0m: "] +[62.858961, "o", "2"] +[64.163507, "o", "\r\n"] +[64.16659, "o", " \u001b[2m[11/15]\u001b[0m What \u001b[1;33mCI pipeline\u001b[0m would you like to use?\r\n \u001b[1;35m1\u001b[0m - \u001b[1mNone\u001b[0m\r\n \u001b[1;35m2\u001b[0m - \u001b[1mGitLab CI\u001b[0m\r\n Choose from \u001b[1;35m[1/2]\u001b[0m \u001b[1;36m(1)\u001b[0m: "] +[65.959041, "o", "1"] +[67.692951, "o", "\r\n"] +[67.695504, "o", " \u001b[2m[12/15]\u001b[0m Do you want to create a \u001b[1;33mCLI\u001b[0m for your project?\r\n \u001b[1;35m1\u001b[0m - \u001b[1mNo\u001b[0m\r\n \u001b[1;35m2\u001b[0m - \u001b[1mYes\u001b[0m\r\n Choose from \u001b[1;35m[1/2]\u001b[0m \u001b[1;36m(1)\u001b[0m: "] +[70.048114, "o", "2"] +[71.41413, "o", "\r\n"] +[71.41739, "o", " \u001b[2m[13/15]\u001b[0m Which \u001b[1;33mconfig file format\u001b[0m do you prefer?\r\n \u001b[1;35m1\u001b[0m - \u001b[1mNone\u001b[0m\r\n \u001b[1;35m2\u001b[0m - \u001b[1mHOCON\u001b[0m\r\n \u001b[1;35m3\u001b[0m - \u001b[1mYAML\u001b[0m\r\n Choose from \u001b[1;35m[1/2/3]\u001b[0m \u001b[1;36m(1)\u001b[0m: "] +[73.448887, "o", "1"] +[75.183391, "o", "\r\n"] +[75.186063, "o", " \u001b[2m[14/15]\u001b[0m What \u001b[1;33mcode formatter\u001b[0m would you like to use?\r\n \u001b[1;35m1\u001b[0m - \u001b[1mNone\u001b[0m\r\n \u001b[1;35m2\u001b[0m - \u001b[1mBlack\u001b[0m\r\n Choose from \u001b[1;35m[1/2]\u001b[0m \u001b[1;36m(1)\u001b[0m: "] +[77.622814, "o", "2"] +[78.706614, "o", "\r\n"] +[78.710241, "o", " \u001b[2m[15/15]\u001b[0m Which \u001b[1;33meditor settings\u001b[0m do you want to include?\r\n \u001b[1;35m1\u001b[0m - \u001b[1mNone\u001b[0m\r\n \u001b[1;35m2\u001b[0m - \u001b[1mPyCharm\u001b[0m\r\n \u001b[1;35m3\u001b[0m - \u001b[1mVS Code\u001b[0m\r\n Choose from \u001b[1;35m[1/2/3]\u001b[0m \u001b[1;36m(1)\u001b[0m: "] +[80.598997, "o", "1"] +[82.175158, "o", "\r\n"] +[82.509787, "o", "Hey Batman! Your project was successfully created at /Users/alejandro.rodriguez/Projects/batbot. Have fun with it!\r\n"] +[82.534685, "o", "\u001b[1m\u001b[3m%\u001b[23m\u001b[1m\u001b[0m \r \r"] +[82.661965, "o", "\r\u001b[0m\u001b[23m\u001b[24m\u001b[J\r\n\u001b[1;36m~/Projects\u001b[0m via \u001b[1;33m🐍 \u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33mv3.11.4\u001b[0m\u001b[1;33m \u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33mvenv\u001b[0m\u001b[1;33m) \u001b[0mtook \u001b[1;33m1m18s\u001b[0m \r\n\u001b[1;32m➜\u001b[0m \u001b[K"] +[82.662141, "o", "\u001b[5 q"] +[82.735526, "o", "\u001b[5 q"] +[82.735878, "o", "\r\r\u001bM\u001bM\u001b[?2004h\u001b[0m\u001b[23m\u001b[24m\u001b[J\r\n\u001b[1;36m~/Projects\u001b[0m via \u001b[1;33m🐍 \u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33mv3.11.4\u001b[0m\u001b[1;33m \u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33mvenv\u001b[0m\u001b[1;33m) \u001b[0mtook \u001b[1;33m1m18s\u001b[0m \r\n\u001b[1;32m➜\u001b[0m \u001b[K"] +[84.53229, "o", "\u001b[?2004l"] +[84.532493, "o", "\r\r\n"] +[84.532713, "o", "zsh: locking failed for /Users/alejandro.rodriguez/.cache/zsh/history: no such file or directory\r\n"] diff --git a/{{cookiecutter.project_slug}}/src/{{cookiecutter.module_name}}/main__cli.py b/{{cookiecutter.project_slug}}/src/{{cookiecutter.module_name}}/main__cli.py index 3df7895..dc3473f 100644 --- a/{{cookiecutter.project_slug}}/src/{{cookiecutter.module_name}}/main__cli.py +++ b/{{cookiecutter.project_slug}}/src/{{cookiecutter.module_name}}/main__cli.py @@ -6,7 +6,10 @@ logger = logging.getLogger('{{ cookiecutter.module_name }}') -app = typer.Typer(name='{{ cookiecutter.module_name }}') +app = typer.Typer( + name='{{ cookiecutter.module_name }}', + help="{{ cookiecutter.project_short_description }}" +) def version_callback(version: bool): @@ -22,6 +25,8 @@ def version_callback(version: bool): metavar='PATH', help="path to the program configuration" ) + + VersionOption = typer.Option( None, '-v',