Bash style: Explain some rules for entry and libs 42/17642/5
authorVratko Polak <vrpolak@cisco.com>
Mon, 18 Feb 2019 13:29:06 +0000 (14:29 +0100)
committerPeter Mikus <pmikus@cisco.com>
Mon, 18 Feb 2019 16:25:40 +0000 (16:25 +0000)
Change-Id: I694ef0c45dfa342651f078d13cc0f7eaaeff82e9
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
docs/bash_code_style.rst

index 9db968f..3af2bb7 100644 (file)
@@ -235,7 +235,39 @@ here are some pros and cons:
 
     + This allows code blocks to support optional arguments.
 
-TODO: Translate the "function way" into list of rules.
++ Rules:
+
+  + Library files MUST be only "source"d. For example if "tox" calls a script,
+    it is an entry script.
+
+  + Library files (upon sourcing) MUST minimize size effect.
+
+    + The only permitted side effects MUST by directly related to:
+
+      + Defining functions (without executing them).
+
+      + Sourcing sub-library files.
+
+  + If a bash script indirectly call another bash script,
+    it is not a "source" operation, variables are not shared,
+    so the called script MUST be considered an entry script,
+    even if it implements logic fitting into a single function.
+
+  + Entry scripts SHOULD avoid duplicating any logic.
+
+    + Clear duplicated blocks MUST be moved into libraries as functions.
+
+    + Blocks with low amount of duplication MAY remain in entry scripts.
+
+    + Usual motives for not creating functions are:
+
+      + The extracted function would have too much logic for processing
+        arguments (instead of hardcoding values as in entry script).
+
+      + The arguments needed would be too verbose.
+
+        + And using "set +x" would take too much vertical space
+          (when compared to entry script implementation).
 
 Variables
 ~~~~~~~~~