forked from ungleich-public/cdist
		
	new type: __clean_path
This commit is contained in:
		
					parent
					
						
							
								59bff81735
							
						
					
				
			
			
				commit
				
					
						5f76bd5655
					
				
			
		
					 5 changed files with 150 additions and 0 deletions
				
			
		
							
								
								
									
										39
									
								
								cdist/conf/type/__clean_path/explorer/list
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										39
									
								
								cdist/conf/type/__clean_path/explorer/list
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
#!/bin/sh -e
 | 
			
		||||
#
 | 
			
		||||
# 2019 Ander Punnar (ander-at-kvlt-dot-ee)
 | 
			
		||||
#
 | 
			
		||||
# 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/>.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
path="/$__object_id"
 | 
			
		||||
 | 
			
		||||
if [ ! -d "$path" ]
 | 
			
		||||
then
 | 
			
		||||
    echo "$path is not a directory" >&2
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
pattern="$( cat "$__object/parameter/pattern" )"
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/exclude" ]
 | 
			
		||||
then
 | 
			
		||||
    exclude="$( cat "$__object/parameter/exclude" )"
 | 
			
		||||
 | 
			
		||||
    find "$path" -mindepth 1 -maxdepth 1 -regex "$pattern" \
 | 
			
		||||
        -and -not -regex "$exclude"
 | 
			
		||||
else
 | 
			
		||||
    find "$path" -mindepth 1 -maxdepth 1 -regex "$pattern"
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										48
									
								
								cdist/conf/type/__clean_path/gencode-remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										48
									
								
								cdist/conf/type/__clean_path/gencode-remote
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,48 @@
 | 
			
		|||
#!/bin/sh -e
 | 
			
		||||
#
 | 
			
		||||
# 2019 Ander Punnar (ander-at-kvlt-dot-ee)
 | 
			
		||||
#
 | 
			
		||||
# 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/>.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
[ ! -s "$__object/explorer/list" ] && exit 0
 | 
			
		||||
 | 
			
		||||
path="/$__object_id"
 | 
			
		||||
 | 
			
		||||
pattern="$( cat "$__object/parameter/pattern" )"
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/exclude" ]
 | 
			
		||||
then
 | 
			
		||||
    exclude="$( cat "$__object/parameter/exclude" )"
 | 
			
		||||
 | 
			
		||||
    echo "find '$path' -mindepth 1 -maxdepth 1 -regex '$pattern'" \
 | 
			
		||||
        "-and -not -regex '$exclude'" \
 | 
			
		||||
        '-exec rm -rf {} \;'
 | 
			
		||||
else
 | 
			
		||||
    echo "find '$path' -mindepth 1 -maxdepth 1 -regex '$pattern'" \
 | 
			
		||||
        '-exec rm -rf {} \;'
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
while read -r f
 | 
			
		||||
do
 | 
			
		||||
    echo "removed '$f'" >> "$__messages_out"
 | 
			
		||||
done \
 | 
			
		||||
< "$__object/explorer/list"
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/onchange" ]
 | 
			
		||||
then
 | 
			
		||||
    cat "$__object/parameter/onchange"
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										60
									
								
								cdist/conf/type/__clean_path/man.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								cdist/conf/type/__clean_path/man.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,60 @@
 | 
			
		|||
cdist-type__clean_path(7)
 | 
			
		||||
=========================
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-type__clean_path - Remove files and directories which match the pattern.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DESCRIPTION
 | 
			
		||||
-----------
 | 
			
		||||
Remove files and directories which match the pattern.
 | 
			
		||||
 | 
			
		||||
Provided path (as __object_id) must be a directory.
 | 
			
		||||
 | 
			
		||||
Patterns are passed to ``find``'s ``-regex`` - see ``find(1)`` for more details.
 | 
			
		||||
 | 
			
		||||
Look up of files and directories is non-recursive (``-maxdepth 1``).
 | 
			
		||||
 | 
			
		||||
Parent directory is excluded (``-mindepth 1``).
 | 
			
		||||
 | 
			
		||||
This type is not POSIX compatible (sorry, Solaris users).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
REQUIRED PARAMETERS
 | 
			
		||||
-------------------
 | 
			
		||||
pattern
 | 
			
		||||
   Pattern of files which are removed from path.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OPTIONAL PARAMETERS
 | 
			
		||||
-------------------
 | 
			
		||||
exclude
 | 
			
		||||
   Pattern of files which are excluded from removal.
 | 
			
		||||
 | 
			
		||||
onchange
 | 
			
		||||
   The code to run if files or directories were removed.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXAMPLES
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    __clean_path /etc/apache2/conf-enabled \
 | 
			
		||||
        --pattern '.+' \
 | 
			
		||||
        --exclude '.+\(charset\.conf\|security\.conf\)' \
 | 
			
		||||
        --onchange 'service apache2 restart'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
AUTHORS
 | 
			
		||||
-------
 | 
			
		||||
Ander Punnar <ander-at-kvlt-dot-ee>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
COPYING
 | 
			
		||||
-------
 | 
			
		||||
Copyright \(C) 2019 Ander Punnar. 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.
 | 
			
		||||
							
								
								
									
										2
									
								
								cdist/conf/type/__clean_path/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								cdist/conf/type/__clean_path/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
exclude
 | 
			
		||||
onchange
 | 
			
		||||
							
								
								
									
										1
									
								
								cdist/conf/type/__clean_path/parameter/required
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__clean_path/parameter/required
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
pattern
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue