Merge branch 'feature/cdist-new-type-helper-script' into 'master'
Add cdist-new-type helper scrpt See merge request ungleich-public/cdist!782
This commit is contained in:
		
				commit
				
					
						ea291efbf6
					
				
			
		
					 8 changed files with 242 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -451,7 +451,7 @@ eof
 | 
			
		|||
    ;;
 | 
			
		||||
 | 
			
		||||
    shellcheck-scripts)
 | 
			
		||||
        ${SHELLCHECKCMD} scripts/cdist-dump || exit 0
 | 
			
		||||
        ${SHELLCHECKCMD} scripts/cdist-dump scripts/cdist-new-type || exit 0
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
    shellcheck-gencodes)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@ next:
 | 
			
		|||
	* Type __consul: Add alpine support (Nico Schottelius)
 | 
			
		||||
	* Type __consul: Add version 1.5.0 (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
 | 
			
		||||
	* 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
 | 
			
		||||
------------------------------
 | 
			
		||||
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:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 creating type skeleton you can use helper script
 | 
			
		||||
`cdist-new-type <man1/cdist-new-type.html>`_.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Defining parameters
 | 
			
		||||
-------------------
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@ is being used in small up to enterprise grade environments.
 | 
			
		|||
   cdist-real-world
 | 
			
		||||
   man1/cdist
 | 
			
		||||
   man1/cdist-dump
 | 
			
		||||
   man1/cdist-new-type
 | 
			
		||||
   cdist-bootstrap
 | 
			
		||||
   cdist-configuration
 | 
			
		||||
   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",
 | 
			
		||||
    packages=["cdist", "cdist.core", "cdist.exec", "cdist.util", ],
 | 
			
		||||
    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,
 | 
			
		||||
    description="A Usable Configuration Management System",
 | 
			
		||||
    author="Nico Schottelius",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue