|
...
|
...
|
@@ -227,3 +227,51 @@ These scripts are executed serially by ``exercise.sh`` in testing situations.
|
|
227
|
227
|
or graciously handle possible artifacts left over from previous runs if executed
|
|
228
|
228
|
again. It is acceptable to require a reboot or even a re-install of DevStack
|
|
229
|
229
|
to restore a clean test environment.
|
|
|
230
|
+
|
|
|
231
|
+
|
|
|
232
|
+Bash Style Guidelines
|
|
|
233
|
+~~~~~~~~~~~~~~~~~~~~~
|
|
|
234
|
+Devstack defines a bash set of best practices for maintaining large
|
|
|
235
|
+collections of bash scripts. These should be considered as part of the
|
|
|
236
|
+review process.
|
|
|
237
|
+
|
|
|
238
|
+We have a preliminary enforcing script for this called bash8 (only a
|
|
|
239
|
+small number of these rules are enforced).
|
|
|
240
|
+
|
|
|
241
|
+Whitespace Rules
|
|
|
242
|
+----------------
|
|
|
243
|
+
|
|
|
244
|
+- lines should not include trailing whitespace
|
|
|
245
|
+- there should be no hard tabs in the file
|
|
|
246
|
+- indents are 4 spaces, and all indentation should be some multiple of
|
|
|
247
|
+ them
|
|
|
248
|
+
|
|
|
249
|
+Control Structure Rules
|
|
|
250
|
+-----------------------
|
|
|
251
|
+- then should be on the same line as the if
|
|
|
252
|
+- do should be on the same line as the for
|
|
|
253
|
+
|
|
|
254
|
+Example::
|
|
|
255
|
+
|
|
|
256
|
+ if [[ -r $TOP_DIR/local.conf ]]; then
|
|
|
257
|
+ LRC=$(get_meta_section_files $TOP_DIR/local.conf local)
|
|
|
258
|
+ for lfile in $LRC; do
|
|
|
259
|
+ if [[ "$lfile" == "localrc" ]]; then
|
|
|
260
|
+ if [[ -r $TOP_DIR/localrc ]]; then
|
|
|
261
|
+ warn $LINENO "localrc and local.conf:[[local]] both exist, using localrc"
|
|
|
262
|
+ else
|
|
|
263
|
+ echo "# Generated file, do not edit" >$TOP_DIR/.localrc.auto
|
|
|
264
|
+ get_meta_section $TOP_DIR/local.conf local $lfile >>$TOP_DIR/.localrc.auto
|
|
|
265
|
+ fi
|
|
|
266
|
+ fi
|
|
|
267
|
+ done
|
|
|
268
|
+ fi
|
|
|
269
|
+
|
|
|
270
|
+Variables and Functions
|
|
|
271
|
+-----------------------
|
|
|
272
|
+- functions should be used whenever possible for clarity
|
|
|
273
|
+- functions should use ``local`` variables as much as possible to
|
|
|
274
|
+ ensure they are isolated from the rest of the environment
|
|
|
275
|
+- local variables should be lower case, global variables should be
|
|
|
276
|
+ upper case
|
|
|
277
|
+- function names should_have_underscores, NotCamelCase.
|