mirror of
				https://github.com/TheLocehiliosan/yadm
				synced 2025-06-13 13:03:58 +00:00 
			
		
		
		
	Add source to templates (#163)
				
					
				
			A new variable is exposed to templates, which holds the filename of the
template source. The primary use case is to be able to include a warning
message within the template. For example:
  # Do not edit. This file auto-generated from {{ yadm.source }}.
			
			
This commit is contained in:
		
							parent
							
								
									0c7aec6dd7
								
							
						
					
					
						commit
						aeb6a54ad7
					
				| @ -106,3 +106,20 @@ def test_template_builtin(runner, yadm, tmpdir): | ||||
|     assert run.success | ||||
|     assert run.err == '' | ||||
|     assert output_file.read() == EXPECTED | ||||
| 
 | ||||
| 
 | ||||
| def test_source(runner, yadm, tmpdir): | ||||
|     """Test yadm.source""" | ||||
| 
 | ||||
|     input_file = tmpdir.join('input') | ||||
|     input_file.write('{{yadm.source}}', ensure=True) | ||||
|     output_file = tmpdir.join('output') | ||||
| 
 | ||||
|     script = f""" | ||||
|         YADM_TEST=1 source {yadm} | ||||
|         template_builtin "{input_file}" "{output_file}" | ||||
|     """ | ||||
|     run = runner(command=['bash'], inp=script) | ||||
|     assert run.success | ||||
|     assert run.err == '' | ||||
|     assert output_file.read().strip() == str(input_file) | ||||
|  | ||||
| @ -97,3 +97,21 @@ def test_template_j2(runner, yadm, tmpdir, processor): | ||||
|     assert run.success | ||||
|     assert run.err == '' | ||||
|     assert output_file.read() == EXPECTED | ||||
| 
 | ||||
| 
 | ||||
| @pytest.mark.parametrize('processor', ('j2cli', 'envtpl')) | ||||
| def test_source(runner, yadm, tmpdir, processor): | ||||
|     """Test YADM_SOURCE""" | ||||
| 
 | ||||
|     input_file = tmpdir.join('input') | ||||
|     input_file.write('{{YADM_SOURCE}}', ensure=True) | ||||
|     output_file = tmpdir.join('output') | ||||
| 
 | ||||
|     script = f""" | ||||
|         YADM_TEST=1 source {yadm} | ||||
|         template_{processor} "{input_file}" "{output_file}" | ||||
|     """ | ||||
|     run = runner(command=['bash'], inp=script) | ||||
|     assert run.success | ||||
|     assert run.err == '' | ||||
|     assert output_file.read().strip() == str(input_file) | ||||
|  | ||||
							
								
								
									
										4
									
								
								yadm
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								yadm
									
									
									
									
									
								
							| @ -297,6 +297,7 @@ BEGIN { | ||||
|   c["hostname"] = host | ||||
|   c["user"]     = user | ||||
|   c["distro"]   = distro | ||||
|   c["source"]   = source | ||||
|   vld           = conditions() | ||||
|   ifs           = "^{%" blank "*if" | ||||
|   els           = "^{%" blank "*else" blank "*%}$" | ||||
| @ -340,6 +341,7 @@ EOF | ||||
|     -v host="$local_host" \ | ||||
|     -v user="$local_user" \ | ||||
|     -v distro="$local_distro" \ | ||||
|     -v source="$input" \ | ||||
|     "$awk_pgm" \ | ||||
|     "$input" > "$output" | ||||
| } | ||||
| @ -353,6 +355,7 @@ function template_j2cli() { | ||||
|   YADM_HOSTNAME="$local_host" \ | ||||
|   YADM_USER="$local_user"     \ | ||||
|   YADM_DISTRO="$local_distro" \ | ||||
|   YADM_SOURCE="$input"        \ | ||||
|   "$J2CLI_PROGRAM" "$input" -o "$output" | ||||
| } | ||||
| 
 | ||||
| @ -365,6 +368,7 @@ function template_envtpl() { | ||||
|   YADM_HOSTNAME="$local_host" \ | ||||
|   YADM_USER="$local_user"     \ | ||||
|   YADM_DISTRO="$local_distro" \ | ||||
|   YADM_SOURCE="$input"        \ | ||||
|   "$ENVTPL_PROGRAM" --keep-template "$input" -o "$output" | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user