parent
21a16f5584
commit
34eec3c214
@ -0,0 +1,74 @@ |
||||
cdist-new-type(1) |
||||
================= |
||||
|
||||
NAME |
||||
---- |
||||
cdist-new-type - Create new type skeleton |
||||
|
||||
|
||||
SYNOPSIS |
||||
-------- |
||||
|
||||
:: |
||||
|
||||
cdist-new-type TYPE-NAME AUTHOR-NAME AUTHOR-EMAIL [TYPE-BASE-PATH] |
||||
|
||||
|
||||
|
||||
DESCRIPTION |
||||
----------- |
||||
cdist-new-type is a helper script that creates new type skeleton. |
||||
It is then up to the type author to finish the type. |
||||
|
||||
It creates skeletons for the following files: |
||||
|
||||
* man.rst |
||||
* manifest |
||||
* gencode-remote. |
||||
|
||||
Upon creation it prints the path to the newly created type directory. |
||||
|
||||
|
||||
ARGUMENTS |
||||
--------- |
||||
**TYPE-NAME** |
||||
Name of the new type. |
||||
|
||||
**AUTHOR-NAME** |
||||
Type author's full name. |
||||
|
||||
**AUTHOR-NAME** |
||||
Type author's email. |
||||
|
||||
**TYPE-BASE-PATH** |
||||
Path to the base directory of the type. If not set it defaults |
||||
to '$PWD/type'. |
||||
|
||||
|
||||
EXAMPLES |
||||
-------- |
||||
|
||||
.. code-block:: sh |
||||
|
||||
# Create new type __foo in ~/.cdist directory. |
||||
$ cd ~/.cdist |
||||
$ cdist-new-type '__foo' 'Foo Bar' 'foo.bar at foobar.org' |
||||
/home/foo/.cdist/type/__foo |
||||
|
||||
|
||||
SEE ALSO |
||||
-------- |
||||
:strong:`cdist`\ (1) |
||||
|
||||
|
||||
AUTHORS |
||||
------- |
||||
|
||||
| Steven Armstrong <steven-cdist--@--armstrong.cc> |
||||
| Darko Poljak <darko.poljak--@--ungleich.ch> |
||||
|
||||
|
||||
COPYING |
||||
------- |
||||
Copyright \(C) 2019 Steven Armstrong, Darko Poljak. Free use of this software is |
||||
granted under the terms of the GNU General Public License v3 or later (GPLv3+). |
@ -0,0 +1,159 @@ |
||||
#!/bin/sh |
||||
|
||||
basename="${0##*/}" |
||||
|
||||
if [ $# -lt 3 ] |
||||
then |
||||
printf "usage: %s TYPE-NAME AUTHOR-NAME AUTHOR-EMAIL [TYPE-BASE-PATH] |
||||
TYPE-NAME Name of the type. |
||||
AUTHOR-NAME Type author's full name. |
||||
AUTHOR-EMAIL Type author's email. |
||||
TYPE-BASE-PATH Path to the base directory of the type. If not set it defaults |
||||
to '\$PWD/type'.\n" "${basename}" |
||||
exit 1 |
||||
fi |
||||
|
||||
type_name="$1" |
||||
shift |
||||
author_name="$1" |
||||
shift |
||||
author_email="$1" |
||||
shift |
||||
|
||||
if [ $# -ge 1 ] |
||||
then |
||||
type_base_path="$1" |
||||
shift |
||||
else |
||||
#type_base_path=~/.cdist/type |
||||
type_base_path="$PWD/type" |
||||
fi |
||||
|
||||
error() { |
||||
printf "%s\n" "$*" >&2 |
||||
} |
||||
|
||||
die() { |
||||
error "$@" |
||||
exit 1 |
||||
} |
||||
|
||||
cd "$type_base_path" || die "Could not change to type directory: $type_base_path. |
||||
You have to specify type base path or run me from within a cdist conf directory, |
||||
e.g. ~/.cdist." |
||||
|
||||
year=$(date +%Y) |
||||
copyright="# $year $author_name ($author_email)" |
||||
|
||||
license="# This file is part of cdist. |
||||
# |
||||
# cdist is free software: you can redistribute it and/or modify |
||||
# it under the terms of the GNU General Public License as published by |
||||
# the Free Software Foundation, either version 3 of the License, or |
||||
# (at your option) any later version. |
||||
# |
||||
# cdist is distributed in the hope that it will be useful, |
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
# GNU General Public License for more details. |
||||
# |
||||
# You should have received a copy of the GNU General Public License |
||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>. |
||||
# |
||||
" |
||||
|
||||
set -e |
||||
|
||||
mkdir "$type_name" |
||||
cd "$type_name" |
||||
|
||||
### man page |
||||
header="cdist-type${type_name}(7)" |
||||
header_length="${#header}" |
||||
cat >> man.rst << DONE |
||||
$header |
||||
$(while [ "${header_length}" -gt 0 ]; do printf "="; header_length=$((header_length - 1)); done; printf "\n";) |
||||
|
||||
NAME |
||||
---- |
||||
cdist-type${type_name} - TODO |
||||
|
||||
|
||||
DESCRIPTION |
||||
----------- |
||||
This space intentionally left blank. |
||||
|
||||
|
||||
REQUIRED PARAMETERS |
||||
------------------- |
||||
None. |
||||
|
||||
|
||||
OPTIONAL PARAMETERS |
||||
------------------- |
||||
None. |
||||
|
||||
|
||||
BOOLEAN PARAMETERS |
||||
------------------ |
||||
None. |
||||
|
||||
|
||||
EXAMPLES |
||||
-------- |
||||
|
||||
.. code-block:: sh |
||||
|
||||
# TODO |
||||
${type_name} |
||||
|
||||
|
||||
SEE ALSO |
||||
-------- |
||||
:strong:\`TODO\`\\ (7) |
||||
|
||||
|
||||
AUTHORS |
||||
------- |
||||
$author_name <$author_email> |
||||
|
||||
|
||||
COPYING |
||||
------- |
||||
Copyright \(C) $year $author_name. You can redistribute it |
||||
and/or modify it under the terms of the GNU General Public License as |
||||
published by the Free Software Foundation, either version 3 of the |
||||
License, or (at your option) any later version. |
||||
DONE |
||||
|
||||
### manifest |
||||
cat >> manifest << DONE |
||||
#!/bin/sh -e |
||||
# |
||||
${copyright} |
||||
# |
||||
${license} |
||||
|
||||
os=\$(cat "\$__global/explorer/os") |
||||
|
||||
case "\$os" in |
||||
*) |
||||
printf "Your operating system (%s) is currently not supported by this type (%s)\n" "\$os" "\${__type##*/}" >&2 |
||||
printf "Please contribute an implementation for it if you can.\n" >&2 |
||||
exit 1 |
||||
;; |
||||
esac |
||||
DONE |
||||
chmod +x manifest |
||||
|
||||
# gencode-remote |
||||
cat >> gencode-remote << DONE |
||||
#!/bin/sh -e |
||||
# |
||||
${copyright} |
||||
# |
||||
${license} |
||||
DONE |
||||
chmod +x gencode-remote |
||||
|
||||
printf "%s/%s\n" "$type_base_path" "$type_name" |
Loading…
Reference in new issue