]> git.immae.eu Git - github/fretlink/ansible-clever.git/blob - dhall/Config.dhall
Merge pull request #77 from paulrbr-fl/new-slack-token
[github/fretlink/ansible-clever.git] / dhall / Config.dhall
1 let Addon = (./Addon.dhall).Type
2
3 let ServiceDependency = (./ServiceDependency.dhall).Type
4
5 let Vault = ./Vault.dhall
6
7 let FixedOrRange =
8 λ(t : Type) → < Fixed : { fixed : t } | Range : { min : t, max : t } >
9
10 let fixed = λ(t : Type) → λ(f : t) → (FixedOrRange t).Fixed { fixed = f }
11
12 let range = λ(t : Type) → λ(r : { min : t, max : t }) → (FixedOrRange t).Range r
13
14 let InstancesConfig = FixedOrRange Natural
15
16 let FlavorsConfig = FixedOrRange Text
17
18 let ScalingParameters =
19 { flavor : Optional FlavorsConfig, instances : Optional InstancesConfig }
20
21 let Config =
22 λ(Environment : Type)
23 → { clever_app : Text
24 , clever_orga : Text
25 , clever_secret : Text
26 , clever_token : Text
27 , clever_syslog_server : Optional Text
28 , clever_domain : Optional Text
29 , clever_app_tasks_file : Optional Text
30 , clever_haskell_entry_point : Optional Text
31 , clever_disable_metrics : Bool
32 , clever_addons : List Addon
33 , clever_service_dependencies : List ServiceDependency
34 , clever_env : Environment
35 , clever_build_flavor : Optional Text
36 , clever_scaling : Optional ScalingParameters
37 , clever_restart_only : Optional Bool
38 }
39
40 let mkConfig =
41 λ(vault : Vault)
42 → λ(app : Text)
43 → λ(organization : Text)
44 → { clever_app = app
45 , clever_orga = organization
46 , clever_secret = vault.secret
47 , clever_token = vault.token
48 , clever_syslog_server = None Text
49 , clever_domain = None Text
50 , clever_app_tasks_file = None Text
51 , clever_haskell_entry_point = None Text
52 , clever_disable_metrics = False
53 , clever_addons = [] : List Addon
54 , clever_service_dependencies = [] : List ServiceDependency
55 , clever_env = {=}
56 , clever_build_flavor = None Text
57 , clever_scaling = None ScalingParameters
58 , clever_restart_only = None Bool
59 }
60 : Config {}
61
62 in { Type = Config
63 , mkConfig = mkConfig
64 , ScalingParameters = ScalingParameters
65 , InstancesConfig = InstancesConfig
66 , FlavorsConfig = FlavorsConfig
67 , fixed = fixed
68 , range = range
69 }