xref: /openbmc/openbmc-test-automation/templates/bash_simple_template (revision 28e403b8c632ff68954aa1e3b7fd9ca10ee1b332)
17d68d00bSMichael Walsh#!/bin/bash
27d68d00bSMichael Walsh
37d68d00bSMichael Walsh# Template to start a simple bash program.  This is designed only for the
4*28e403b8SGunnar Mills# simplest of programs where all program parameters are positional, there is no
57d68d00bSMichael Walsh# help text, etc.
67d68d00bSMichael Walsh
77d68d00bSMichael Walsh# Description of argument(s):
87d68d00bSMichael Walsh# parm1            Bla, bla, bla (e.g. "example data").
97d68d00bSMichael Walsh
107d68d00bSMichael Walsh
117d68d00bSMichael Walsh###############################################################################
127d68d00bSMichael Walshfunction get_parms {
137d68d00bSMichael Walsh
147d68d00bSMichael Walsh  # Get program parms.
157d68d00bSMichael Walsh
167d68d00bSMichael Walsh  parm1="${1}" ; shift
177d68d00bSMichael Walsh
187d68d00bSMichael Walsh  return 0
197d68d00bSMichael Walsh
207d68d00bSMichael Walsh}
217d68d00bSMichael Walsh###############################################################################
227d68d00bSMichael Walsh
237d68d00bSMichael Walsh
247d68d00bSMichael Walsh###############################################################################
257d68d00bSMichael Walshfunction validate_parms {
267d68d00bSMichael Walsh
277d68d00bSMichael Walsh  # Validate program parameters.
287d68d00bSMichael Walsh
297d68d00bSMichael Walsh  # Your validation code here.
307d68d00bSMichael Walsh
317d68d00bSMichael Walsh  if [ -z "${parm1}" ] ; then
327d68d00bSMichael Walsh    echo "**ERROR** You must provide..." >&2
337d68d00bSMichael Walsh    return 1
347d68d00bSMichael Walsh  fi
357d68d00bSMichael Walsh
367d68d00bSMichael Walsh  return 0
377d68d00bSMichael Walsh
387d68d00bSMichael Walsh}
397d68d00bSMichael Walsh###############################################################################
407d68d00bSMichael Walsh
417d68d00bSMichael Walsh
427d68d00bSMichael Walsh###############################################################################
437d68d00bSMichael Walshfunction mainf {
447d68d00bSMichael Walsh
457d68d00bSMichael Walsh  # We create a mainf for a couple of reasons:
467d68d00bSMichael Walsh  # The coding rules in a template are slightly different than for the true
477d68d00bSMichael Walsh  # mainline.  We wish to eliminate those inconsistencies.  Examples:
487d68d00bSMichael Walsh  # - The "local" builtin is allowed in functions but not in the mainline.
497d68d00bSMichael Walsh  # - It is good practice to have functions return 1 rather than exit 1.
507d68d00bSMichael Walsh  #   return is not valid in the mainline.  Again, we don't want to have to
517d68d00bSMichael Walsh  #   care when we code things about whether we are in the mainline or a
527d68d00bSMichael Walsh  #   function.
537d68d00bSMichael Walsh
547d68d00bSMichael Walsh  get_parms "$@" || return 1
557d68d00bSMichael Walsh
567d68d00bSMichael Walsh  validate_parms || return 1
577d68d00bSMichael Walsh
587d68d00bSMichael Walsh  # Your code here...
597d68d00bSMichael Walsh
607d68d00bSMichael Walsh  return 0
617d68d00bSMichael Walsh
627d68d00bSMichael Walsh}
637d68d00bSMichael Walsh###############################################################################
647d68d00bSMichael Walsh
657d68d00bSMichael Walsh
667d68d00bSMichael Walsh###############################################################################
677d68d00bSMichael Walsh# Main
687d68d00bSMichael Walsh
697d68d00bSMichael Walsh  mainf "${@}"
707d68d00bSMichael Walsh  rc="${?}"
717d68d00bSMichael Walsh  exit "${rc}"
727d68d00bSMichael Walsh
737d68d00bSMichael Walsh###############################################################################
74