OSSP CVS Repository

ossp - Check-in [1618]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 1618
Date: 2002-Jan-23 17:39:53 (local)
2002-Jan-23 16:39:53 (UTC)
User:ms
Branch:
Comment: add first cut of sample manual page
Tickets:
Inspections:
Files:
ossp-pkg/rc/rc-sample.pod      added-> 1.1

ossp-pkg/rc/rc-sample.pod -> 1.1

*** /dev/null    Sat Nov 23 01:33:41 2024
--- -    Sat Nov 23 01:33:43 2024
***************
*** 0 ****
--- 1,169 ----
+ 
+ =pod
+ 
+ =head1 NAME
+ 
+ rc-sample -- B<OSSP rc> Example Use Cases
+ 
+ =head1 DESCRIPTION
+ 
+ This documents typical use cases for B<OSSP rc>.
+ 
+ =head1 USE CASE: OpenPKG Run-Command Facility
+ 
+ This describes how B<OSSP rc> is used as the B<OpenPKG>
+ (http://www.openpkg.org/) run-command facility. First, the involved files:
+ 
+ =over 4
+ 
+ =item F</cw/etc/rc>
+ 
+ This is just the location of the B<OSSP rc> program.
+ 
+ =item F</cw/etc/rc.cf> 
+ 
+ This is the B<OSSP rc> configuration file, hard-coded into
+ F</cw/etc/rc> at configure/build time with the Autoconf option
+ C<--with-config=/cw/etc/rc.cf>. It is installed at B<OpenPKG>
+ bootstrap time and used read-only.
+ 
+  Dirs          /cw/etc/rc.d:/cw/local/etc/rc.d
+  Name          rc.%s/rc.*
+  ConfigDef     (?<=^\s*)([a-zA-Z_][a-zA-Z_0-9]*)=("[^"]*"|'[^']*'|\S+)
+  SectionDef    (?<=^|\n)%([a-zA-Z][a-zA-Z0-9]*)(\s+-[a-zA-Z]\s*\S+)\s*\n(.+?)(?=\n%%\S+|$)
+  ParamDef      (?<=^|\s)-([a-zA-Z])\s*(\S+)
+  SectionRef    (?<=^\s*|;\s*)%([a-zA-Z][a-zA-Z0-9]*)(\s+[^\n]+)?
+  ParamRef      \$([0-9])
+  NameConfig    config
+  NameCommon    common
+  Execute       root  %s
+  Execute       !root sudo %s
+  LineControl   yes
+ 
+ =item F</cw/etc/rc.func> (C<%common> extensions)
+ 
+ This is the B<OpenPKG> Bourne-Shell script providing a set of reusable
+ functions. It is installed at B<OpenPKG> bootstrap time and used
+ read-only.
+ 
+  opVarIsYes () {
+      _var="${1}"
+      eval "_val=\"\$${_var}\""
+      case "${_val}" in
+          [Yy][Ee][Ss] | [Tt][Rr][Uu][Ee] | [Oo][Nn] | 1 )
+              unset _var _val
+              return 0
+              ;;
+          [Nn][Oo] | [Ff][Aa][Ll][Ss][Ee] | [Oo][Ff][Ff] | 0 )
+              unset _var _val
+              return 1
+              ;;
+          *)
+              opWarn "variable \$${_var} is not set properly."
+              unset _var _val
+              return 1
+          ;;
+      esac
+  }
+  opServiceEnabled () {
+      opVarIsYes ${1}_enable
+  }
+ 
+ =item F</cw/etc/rc.conf> 
+ 
+ This is the B<OpenPKG> configuration script where the administrator
+ overrides the variables from the script's C<%config> sections. It it
+ generated (as an empty file) on B<OpenPKG> bootstrap time and manually
+ edited later to influence the behaviours of the package's run-command
+ scripts (here F</cw/etc/rc.d/rc.foo>).
+ 
+  foo_enable=yes
+  foo_flags="--sample"
+ 
+ =item F</cw/etc/rc.d/rc.foo> 
+ 
+ This is the example run-command script of an B<OpenPKG> package C<foo>.
+ It is installed by package C<foo> and used read-only.
+ 
+  #!/cw/etc/rc
+  %config
+      foo_enable=yes
+      foo_flags=""
+  %common
+      foo_pidfile=/cw/var/foo/foo.pid
+  %start -u root -p 100
+      if opServiceEnabled foo; then
+          /cw/sbin/foo -p $foo_pidfile -S $foo_flags
+      fi
+  %stop -u root -p 100
+      if opServiceEnabled foo; then
+          /cw/sbin/foo -p $foo_pidfile -K
+      fi
+  %restart -u root -p 100
+      if opServiceEnabled foo; then
+          %stop
+          sleep 1
+          %start 
+      fi
+  %env
+      if opServiceEnabled foo; then
+          FOO=/cw/sbin/foo
+          export FOO
+      fi
+ 
+ =back
+ 
+ With this setup, the following use cases are possible:
+ 
+  $ /cw/etc/rc --query "foo enabled: %{foo_enable}"
+  foo enabled: yes
+  $ _
+ 
+  $ /cw/etc/rc --config
+  Configuration Variable   Effective Value              Default Value
+  ------------------------ ------------------------- -- -------------------------
+  foo_enable               "yes"                     == "yes"                    
+  foo_flags                "--sample"                != ""                    
+  $ _ 
+ 
+  $ /cw/etc/rc -v foo start
+  start: foo
+  $ _ 
+ 
+  $ /cw/etc/rc --print foo env
+  # /cw/etc/rc.d/rc.foo 3
+      foo_enable=yes
+      foo_flags=""
+  # /cw/etc/rc.conf 1
+  foo_enable=yes
+  foo_flags="--sample"
+  # internal 0
+      . /cw/etc/rc.func
+  # /cw/etc/rc.d/rc.foo 6
+      foo_pidfile=/cw/var/foo/foo.pid
+  # /cw/etc/rc.d/rc.foo 22
+      if opServiceEnabled foo; then
+          FOO="The Foo"
+          export FOO
+      fi
+  $ _
+ 
+  $ eval `/cw/etc/rc --eval foo env`
+  $ print $FOO
+  The Foo
+  $ _
+ 
+ =head1 USE CASE: Dynamic User Environment (DUE)
+ 
+  ....
+ 
+ #   rc configuration for Dynamic User Environment (DUE)
+ Dirs          .:..//
+ Name          .duerc
+ RequireUmask  022      
+ RequireOwner  $USER           
+ RequireGroup  %{GROUP}
+ 
+  ....
+ 
+ =cut

CVSTrac 2.0.1