install:
- nix-env -i python2.7-ansible
- nix-env -i python2.7-ansible-lint
+ - nix-env -if ./dhall-1.18.nix
# Check ansible version
- ansible --version
# Basic role syntax check
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
- ansible-lint .
+ - scripts/dhall_check.sh
notifications:
slack: fretlink:pTIylIN7zkwRFuL3aHERmsbB
- _Obsolete_: `domain`: Same as above but was replaced by `clever_domain` since v1.4 of this role.
- `clever_syslog_server`: UDP Syslog server to be used as UDPSyslog drain for the application, optional. Example: `udp://198.51.100.51:12345`.
- _Obsolete_: `syslog_server`: Same as above but was replaced by `clever_syslog_server` since v1.5 of this role.
-- `clever_metrics`: a boolean to enable or disable metrics support. Optional, default to `false`.
+- `clever_metrics`: a boolean to enable or disable metrics support. Optional, default to `true`.
Variables specific to deployment, default should be fine:
- `clever_cli_version`: Version of clever cli tools, default to `0.9.3`.
clever_entry_point: ""
clever_env: {}
-clever_metrics: false
+clever_metrics: true
clever_addons: []
# example
--- /dev/null
+{ pkgs ? import <nixpkgs> {} }: with pkgs;
+
+stdenv.mkDerivation rec {
+ name = "dhall-${version}";
+ version = "1.18.0";
+ phases = [ "installPhase "];
+ src = fetchurl {
+ url = "https://github.com/dhall-lang/dhall-haskell/releases/download/${version}/dhall-${version}-x86_64-linux.tar.bz2";
+ sha256 = "0jvw6ss96xifb21mzpvfjzvaffcnpj0jhpc4rd36cl2r22800qgx";
+ };
+ installPhase = ''
+ mkdir -p $out/bin
+ tar -xjf $src
+ mv bin/dhall $out/bin/
+ '';
+}
--- /dev/null
+ let Addon = ./addon/Addon.dhall
+
+in λ(Environment : Type)
+ → { clever_app :
+ Text
+ , clever_orga :
+ Text
+ , clever_secret :
+ Text
+ , clever_token :
+ Text
+ , clever_syslog_server :
+ Text
+ , clever_domain :
+ Text
+ , clever_app_tasks_file :
+ Text
+ , clever_entry_point :
+ Text
+ , clever_metrics :
+ Bool
+ , clever_addons :
+ List Addon
+ , clever_env :
+ Environment
+ }
--- /dev/null
+{ organization : Text, secret : Text, token : Text }
--- /dev/null
+< Postgresql : { name : Text, env_prefix : Text } >
--- /dev/null
+ let addon = constructors ./Addon.dhall
+
+in addon.Postgresql { name = "pg", env_prefix = "POSTGRESQL_ADDON" }
--- /dev/null
+{ Postgresql = ./Postgresql.dhall }
--- /dev/null
+{ FORCE_HTTPS : Bool }
--- /dev/null
+{ Addon = ./addon/functions.dhall, mkConfig = ./mkConfig.dhall }
--- /dev/null
+ let Config = ./Config.dhall
+
+in let Vault = ./Vault.dhall
+
+in let Addon = ./addon/Addon.dhall
+
+in let Environment = ./environment/Environment.dhall
+
+in let nonifyEmpty =
+ λ(opt : Optional Text)
+ → Optional/fold Text opt Text (λ(x : Text) → x) "None"
+
+in λ(vault : Vault)
+ → λ(app : Text)
+ → λ(entryPoint : Text)
+ → λ(metrics : Bool)
+ → λ(syslogServer : Optional Text)
+ → λ(domain : Optional Text)
+ → λ(tasksFile : Optional Text)
+ → λ(addons : List Addon)
+ → { clever_app =
+ app
+ , clever_orga =
+ vault.organization
+ , clever_secret =
+ vault.secret
+ , clever_token =
+ vault.token
+ , clever_syslog_server =
+ nonifyEmpty syslogServer
+ , clever_domain =
+ nonifyEmpty domain
+ , clever_app_tasks_file =
+ nonifyEmpty tasksFile
+ , clever_entry_point =
+ entryPoint
+ , clever_metrics =
+ metrics
+ , clever_addons =
+ addons
+ , clever_env =
+ { FORCE_HTTPS = True }
+ }
+ : Config Environment
--- /dev/null
+{ Vault =
+ ./Vault.dhall
+, Addon =
+ ./addon/Addon.dhall
+, Environment =
+ ./environment/Environment.dhall
+, Config =
+ ./Config.dhall
+}
--- /dev/null
+#!/usr/bin/env bash
+
+pushd () {
+ command pushd "$@" > /dev/null
+}
+
+popd () {
+ command popd "$@" > /dev/null
+}
+
+go() {
+ local ERROR=0;
+ for file in $(find -type f -name "*.dhall"); do
+ pushd $(dirname $file);
+ cat $(basename $file) | dhall --explain resolve > /dev/null;
+ echo "Typechecking ${file}"
+ if [ "$?" -ne "0" ]; then
+ echo "Failed to resolve $file"
+ ERROR=1;
+ fi;
+ popd;
+ done;
+ exit $ERROR;
+}
+
+go