# homecloud
W.I.P/ more detailed readme to come<br>
A command line tool for generating the template files needed to integrate fastapi, uvicorn, and a requests based client into a Python project
over a local network. <br>
Devices on the local network running a client can automatically find the server for their app name at startup.<br>

## Installation

Install with
<pre>
pip install homecloud
</pre>

## Usage

Navigate to your project directory in the terminal
and run 
<pre>
>homecloud
</pre>

Several files should have been generated.
Assuming the project directory is called myapp,
you should see the following files:
<pre>
homecloud_config.toml
myapp_client.py
myapp_get_routes.py
myapp_post_routes.py
myapp_request_models.py
myapp_server.py
</pre>

The server for myapp can be started by running the `myapp_server.py` script.<br>
Any device on the local network that runs code that creates a `myapp.MyappClient` object 
should be able to automatically find the ip address and port of the myapp server.<br>
<br>
Other `myapp_*_routes.py` files can be generated by passing their names with the `-r/--routes` 
switch to the `homecloud` tool.<br>
If, earlier, we ran
<pre>
>homecloud -r trace put
</pre>
then we would have generated the previous files as well as
<pre>
myapp_trace_routes.py
myapp_put_routes.py
</pre>

The help display for `homecloud`:
<pre>
>homecloud -h
usage: homecloud [-h] [-r [ROUTES ...]] [-d DESTINATION] [app_name]

positional arguments:
  app_name              The name of the app to generate files for. If a value isn't provided, the folder name of the current working directory will be used.

options:
  -h, --help            show this help message and exit
  -r [ROUTES ...], --routes [ROUTES ...]
                        The routes to generate files for in addition to 'get' and 'post' routes.
  -d DESTINATION, --destination DESTINATION
                        The directory to save the generated files to. By default, uses the current working directory.
</pre>
