xref: /openbmc/openbmc-test-automation/templates/bash_simple_template (revision 7d68d00be16c25a925711c8f75f12f1415bc1708)
1*7d68d00bSMichael Walsh#!/bin/bash
2*7d68d00bSMichael Walsh
3*7d68d00bSMichael Walsh# Template to start a simple bash program.  This is designed only for the
4*7d68d00bSMichael Walsh# simplest of programs where all program paramters are positional, there is no
5*7d68d00bSMichael Walsh# help text, etc.
6*7d68d00bSMichael Walsh
7*7d68d00bSMichael Walsh# Description of argument(s):
8*7d68d00bSMichael Walsh# parm1            Bla, bla, bla (e.g. "example data").
9*7d68d00bSMichael Walsh
10*7d68d00bSMichael Walsh
11*7d68d00bSMichael Walsh###############################################################################
12*7d68d00bSMichael Walshfunction get_parms {
13*7d68d00bSMichael Walsh
14*7d68d00bSMichael Walsh  # Get program parms.
15*7d68d00bSMichael Walsh
16*7d68d00bSMichael Walsh  parm1="${1}" ; shift
17*7d68d00bSMichael Walsh
18*7d68d00bSMichael Walsh  return 0
19*7d68d00bSMichael Walsh
20*7d68d00bSMichael Walsh}
21*7d68d00bSMichael Walsh###############################################################################
22*7d68d00bSMichael Walsh
23*7d68d00bSMichael Walsh
24*7d68d00bSMichael Walsh###############################################################################
25*7d68d00bSMichael Walshfunction validate_parms {
26*7d68d00bSMichael Walsh
27*7d68d00bSMichael Walsh  # Validate program parameters.
28*7d68d00bSMichael Walsh
29*7d68d00bSMichael Walsh  # Your validation code here.
30*7d68d00bSMichael Walsh
31*7d68d00bSMichael Walsh  if [ -z "${parm1}" ] ; then
32*7d68d00bSMichael Walsh    echo "**ERROR** You must provide..." >&2
33*7d68d00bSMichael Walsh    return 1
34*7d68d00bSMichael Walsh  fi
35*7d68d00bSMichael Walsh
36*7d68d00bSMichael Walsh  return 0
37*7d68d00bSMichael Walsh
38*7d68d00bSMichael Walsh}
39*7d68d00bSMichael Walsh###############################################################################
40*7d68d00bSMichael Walsh
41*7d68d00bSMichael Walsh
42*7d68d00bSMichael Walsh###############################################################################
43*7d68d00bSMichael Walshfunction mainf {
44*7d68d00bSMichael Walsh
45*7d68d00bSMichael Walsh  # We create a mainf for a couple of reasons:
46*7d68d00bSMichael Walsh  # The coding rules in a template are slightly different than for the true
47*7d68d00bSMichael Walsh  # mainline.  We wish to eliminate those inconsistencies.  Examples:
48*7d68d00bSMichael Walsh  # - The "local" builtin is allowed in functions but not in the mainline.
49*7d68d00bSMichael Walsh  # - It is good practice to have functions return 1 rather than exit 1.
50*7d68d00bSMichael Walsh  #   return is not valid in the mainline.  Again, we don't want to have to
51*7d68d00bSMichael Walsh  #   care when we code things about whether we are in the mainline or a
52*7d68d00bSMichael Walsh  #   function.
53*7d68d00bSMichael Walsh
54*7d68d00bSMichael Walsh  get_parms "$@" || return 1
55*7d68d00bSMichael Walsh
56*7d68d00bSMichael Walsh  validate_parms || return 1
57*7d68d00bSMichael Walsh
58*7d68d00bSMichael Walsh  # Your code here...
59*7d68d00bSMichael Walsh
60*7d68d00bSMichael Walsh  return 0
61*7d68d00bSMichael Walsh
62*7d68d00bSMichael Walsh}
63*7d68d00bSMichael Walsh###############################################################################
64*7d68d00bSMichael Walsh
65*7d68d00bSMichael Walsh
66*7d68d00bSMichael Walsh###############################################################################
67*7d68d00bSMichael Walsh# Main
68*7d68d00bSMichael Walsh
69*7d68d00bSMichael Walsh  mainf "${@}"
70*7d68d00bSMichael Walsh  rc="${?}"
71*7d68d00bSMichael Walsh  exit "${rc}"
72*7d68d00bSMichael Walsh
73*7d68d00bSMichael Walsh###############################################################################
74