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