diff --git a/non-ros-files/Programming_Rules.md b/non-ros-files/Programming_Rules.md index 1b36bbd..98c2ea7 100644 --- a/non-ros-files/Programming_Rules.md +++ b/non-ros-files/Programming_Rules.md @@ -29,10 +29,17 @@ The next chapters will describe the content of the files inside a package direct ## setup.py -The file `//setup.py` defines how you can call your scripts using a self defined in the command line. This results in commands such as -`ros2 run pubsub talker` -`ros2 run pubsub listener`. -This is done by linking the correct Python scripts to the names _talker_ and _listener_ using the file _setup.py_, eg. +The file setup.py is used to create entry points, meaning you link your python scripts to names which you can be called through `ros2 run ...`. In order for this to work your python scripts must be written using the following mechanism +```python +def main(): + # main code + +if __name__ == "__main__": + main() +``` +in which you put all of your code inside `main()`. This prevents any code from being run, if this script is not run as main. + +Linking your scripts to names is done inside the file _setup.py_ by defining entry points: ```python entry_points={ 'console_scripts': [ @@ -40,5 +47,7 @@ entry_points={ 'listener = pubsub.listener:main' ], }, -``` -From this you can see that you need to follow the Python programming style of creating a _main_ procedure, in order for the entry points to work. +``` +The _setup.py_-excerp above links the the function `main()` from the scripts _talker.py_ and _listener.py_ from inside `/pubsub` to the names _talker_ and _listener_. This way they can be called using `ros2 run pubsub talker` or `ros2 run pubsub listener`. + +From this you can see that you need to follow the Python programming style of creating a _main()_ procedure, in order for the entry points to work.