forked from ungleich-public/cdist
		
	Add cdist-new-type helper scrpt
This commit is contained in:
		
					parent
					
						
							
								21a16f5584
							
						
					
				
			
			
				commit
				
					
						34eec3c214
					
				
			
		
					 8 changed files with 242 additions and 3 deletions
				
			
		| 
						 | 
					@ -451,7 +451,7 @@ eof
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shellcheck-scripts)
 | 
					    shellcheck-scripts)
 | 
				
			||||||
        ${SHELLCHECKCMD} scripts/cdist-dump || exit 0
 | 
					        ${SHELLCHECKCMD} scripts/cdist-dump scripts/cdist-new-type || exit 0
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shellcheck-gencodes)
 | 
					    shellcheck-gencodes)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ next:
 | 
				
			||||||
	* Type __consul: Add alpine support (Nico Schottelius)
 | 
						* Type __consul: Add alpine support (Nico Schottelius)
 | 
				
			||||||
	* Type __consul: Add version 1.5.0 (Nico Schottelius)
 | 
						* Type __consul: Add version 1.5.0 (Nico Schottelius)
 | 
				
			||||||
	* Type __consul_agent: Add alpine support (Nico Schottelius)
 | 
						* Type __consul_agent: Add alpine support (Nico Schottelius)
 | 
				
			||||||
 | 
						* New helper script: cdist-new-type (Steven Armstrong, Darko Poljak)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
5.0.2: 2019-05-17
 | 
					5.0.2: 2019-05-17
 | 
				
			||||||
	* Type __package_apk: Fix @repo handling in explorer (Nico Schottelius)
 | 
						* Type __package_apk: Fix @repo handling in explorer (Nico Schottelius)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,7 +47,8 @@ you write to use the -e flag:
 | 
				
			||||||
Using debug dump helper script
 | 
					Using debug dump helper script
 | 
				
			||||||
------------------------------
 | 
					------------------------------
 | 
				
			||||||
Since cdist stores data to local cache that can be used for debugging there
 | 
					Since cdist stores data to local cache that can be used for debugging there
 | 
				
			||||||
is a helper script that dumps data from local cache.
 | 
					is a helper script that dumps data from local cache,
 | 
				
			||||||
 | 
					`cdist-dump <man1/cdist-dump.html>`_.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For more info see:
 | 
					For more info see:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,6 +93,9 @@ they are written in shell so they are executed using '/bin/sh -e' or 'CDIST_LOCA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For executable shell code it is suggested that shebang is '#!/bin/sh -e'.
 | 
					For executable shell code it is suggested that shebang is '#!/bin/sh -e'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For creating type skeleton you can use helper script
 | 
				
			||||||
 | 
					`cdist-new-type <man1/cdist-new-type.html>`_.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Defining parameters
 | 
					Defining parameters
 | 
				
			||||||
-------------------
 | 
					-------------------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,6 +22,7 @@ is being used in small up to enterprise grade environments.
 | 
				
			||||||
   cdist-real-world
 | 
					   cdist-real-world
 | 
				
			||||||
   man1/cdist
 | 
					   man1/cdist
 | 
				
			||||||
   man1/cdist-dump
 | 
					   man1/cdist-dump
 | 
				
			||||||
 | 
					   man1/cdist-new-type
 | 
				
			||||||
   cdist-bootstrap
 | 
					   cdist-bootstrap
 | 
				
			||||||
   cdist-configuration
 | 
					   cdist-configuration
 | 
				
			||||||
   cdist-manifest
 | 
					   cdist-manifest
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										74
									
								
								docs/src/man1/cdist-new-type.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								docs/src/man1/cdist-new-type.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -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+).
 | 
				
			||||||
							
								
								
									
										159
									
								
								scripts/cdist-new-type
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										159
									
								
								scripts/cdist-new-type
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -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"
 | 
				
			||||||
							
								
								
									
										2
									
								
								setup.py
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								setup.py
									
										
									
									
									
								
							| 
						 | 
					@ -36,7 +36,7 @@ setup(
 | 
				
			||||||
    name="cdist",
 | 
					    name="cdist",
 | 
				
			||||||
    packages=["cdist", "cdist.core", "cdist.exec", "cdist.util", ],
 | 
					    packages=["cdist", "cdist.core", "cdist.exec", "cdist.util", ],
 | 
				
			||||||
    package_data={'cdist': package_data},
 | 
					    package_data={'cdist': package_data},
 | 
				
			||||||
    scripts=["scripts/cdist", "scripts/cdist-dump"],
 | 
					    scripts=["scripts/cdist", "scripts/cdist-dump", "scripts/cdist-new-type"],
 | 
				
			||||||
    version=cdist.version.VERSION,
 | 
					    version=cdist.version.VERSION,
 | 
				
			||||||
    description="A Usable Configuration Management System",
 | 
					    description="A Usable Configuration Management System",
 | 
				
			||||||
    author="Nico Schottelius",
 | 
					    author="Nico Schottelius",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue