159 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			159 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
|  | #!/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" |