forked from ungleich-public/cdist
		
	
		
			
	
	
		
			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"
							 |