First shot at generating a dhall FFI standard. Change-Id: I1cdf7eeaa6b2668a49282315f308a8e51abd0cf6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5887 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| let lib = ../dhall/lib.dhall
 | |
| 
 | |
| let NameVal = λ(T : Type) → { name : Text, value : T }
 | |
| 
 | |
| let ValueList = λ(T : Type) → List (NameVal T)
 | |
| 
 | |
| let Section = ValueList Text
 | |
| 
 | |
| let Sections = ValueList Section
 | |
| 
 | |
| let Ini = { globalSection : Section, sections : Sections }
 | |
| 
 | |
| let
 | |
|     -- Takes to INI files and merges their global sections and their section lists,
 | |
|     -- without duplicating by section name.
 | |
|     appendInis =
 | |
|       λ(inis : List Ini) →
 | |
|           { globalSection =
 | |
|               lib.List/concat
 | |
|                 (NameVal Text)
 | |
|                 (lib.List/map Ini Section (λ(i : Ini) → i.globalSection) inis)
 | |
|           , sections =
 | |
|               lib.List/concat
 | |
|                 (NameVal Section)
 | |
|                 (lib.List/map Ini Sections (λ(i : Ini) → i.sections) inis)
 | |
|           }
 | |
|         : Ini
 | |
| 
 | |
| let
 | |
|     -- Signatures of functions that are input via FFI.
 | |
|     Externs =
 | |
|       { -- given a dsl of functions to create an Ini, render the ini file
 | |
|         renderIni : Ini → Text
 | |
|       }
 | |
| 
 | |
| in  { NameVal, ValueList, Section, Sections, Ini, appendInis, Externs }
 |