Improve coverage for ./scripts/generate.sh (#100)

`./scripts/generate.sh` will now also auto-update the
`./examples/*.dhall` files and `./package.dhall`, too
This commit is contained in:
Gabriel Gonzalez 2020-01-07 18:29:56 -08:00 committed by GitHub
parent 89e7c8ed0b
commit 1c6397ccde
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 89 additions and 50 deletions

View File

@ -1,23 +0,0 @@
.PHONY: install build check default
default: build
README.md: docs/README.md.dhall
./scripts/build-readme.sh
build: README.md
mkdir -p types defaults
dhall-kubernetes-generator "${OPENAPI_SPEC}"
dhall freeze --all --inplace ./types.dhall
dhall freeze --all --inplace ./typesUnion.dhall
dhall freeze --all --inplace ./defaults.dhall
dhall freeze --all --inplace ./schemas.dhall
check: build
LC_ALL=en_US.UTF-8 ./scripts/check-source.py
mkdir -p tmp
LC_ALL=en_US.UTF-8 ./scripts/build-examples.py tmp
install: build
cp -r types defaults schemas "${out}"
cp types.dhall defaults.dhall typesUnion.dhall schemas.dhall "${out}"
cp README.md "${out}"

View File

@ -53,7 +53,7 @@ In the following example, we:
-- examples/deploymentSimple.dhall -- examples/deploymentSimple.dhall
let kubernetes = let kubernetes =
../package.dhall sha256:0a6949aabfb5a1250f08c4e3a533024d4705bea98ace08d8d107417e54a9648a ../package.dhall sha256:63eb2e2bb9a50632801b673e67e666740c09c89deb0a0d0592d165178b5eba53
let deployment = let deployment =
kubernetes.Deployment::{ kubernetes.Deployment::{
@ -144,14 +144,15 @@ Things to note in the following example:
```dhall ```dhall
-- examples/ingress.dhall -- examples/ingress.dhall
let Prelude = ../Prelude.dhall let Prelude =
../Prelude.dhall sha256:771c7131fc87e13eb18f770a27c59f9418879f7e230ba2a50e46f4461f43ec69
let map = Prelude.List.map let map = Prelude.List.map
let kv = Prelude.JSON.keyText let kv = Prelude.JSON.keyText
let kubernetes = let kubernetes =
../package.dhall sha256:0a6949aabfb5a1250f08c4e3a533024d4705bea98ace08d8d107417e54a9648a ../package.dhall sha256:63eb2e2bb9a50632801b673e67e666740c09c89deb0a0d0592d165178b5eba53
let Service = { name : Text, host : Text, version : Text } let Service = { name : Text, host : Text, version : Text }

View File

@ -1,7 +1,10 @@
let Prelude =
../Prelude.dhall sha256:771c7131fc87e13eb18f770a27c59f9418879f7e230ba2a50e46f4461f43ec69
let kubernetes = let kubernetes =
../package.dhall sha256:0a6949aabfb5a1250f08c4e3a533024d4705bea98ace08d8d107417e54a9648a ../package.dhall sha256:0a6949aabfb5a1250f08c4e3a533024d4705bea98ace08d8d107417e54a9648a
let kv = (../Prelude.dhall).JSON.keyText let kv = Prelude.JSON.keyText
let deployment = let deployment =
kubernetes.Deployment::{ kubernetes.Deployment::{

View File

@ -1,4 +1,5 @@
let Prelude = ../Prelude.dhall let Prelude =
../Prelude.dhall sha256:771c7131fc87e13eb18f770a27c59f9418879f7e230ba2a50e46f4461f43ec69
let map = Prelude.List.map let map = Prelude.List.map

View File

@ -1,7 +1,10 @@
let Prelude =
../Prelude.dhall sha256:771c7131fc87e13eb18f770a27c59f9418879f7e230ba2a50e46f4461f43ec69
let kubernetes = let kubernetes =
../package.dhall sha256:0a6949aabfb5a1250f08c4e3a533024d4705bea98ace08d8d107417e54a9648a ../package.dhall sha256:0a6949aabfb5a1250f08c4e3a533024d4705bea98ace08d8d107417e54a9648a
let kv = (../Prelude.dhall).JSON.keyText let kv = Prelude.JSON.keyText
let spec = let spec =
{ selector = [ kv "app" "nginx" ] { selector = [ kv "app" "nginx" ]

View File

@ -1,4 +1,5 @@
{ dhall { coreutils
, dhall
, dhall-json , dhall-json
, dhallPackages , dhallPackages
, glibcLocales , glibcLocales
@ -8,22 +9,75 @@
, python3 , python3
, stdenv , stdenv
}: }:
let let
# Ignore generated files # Ignore generated files
ignoreOutputs = name: type: !(lib.elem name (map toString [../README.md ../types ../defaults ../schemas ../defaults.dhall ../types.dhall ../typesUnion.dhall ../schemas.dhall ])); ignoreOutputs =
name: type:
!(lib.elem name
(map toString
[ ../README.md
../types
../defaults
../schemas
../defaults.dhall
../types.dhall
../typesUnion.dhall
../schemas.dhall
]
)
);
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "dhall-kubernetes"; name = "dhall-kubernetes";
DHALL_PRELUDE = "${dhallPackages.prelude}/package.dhall";
OPENAPI_SPEC = "${kubernetes-openapi-spec}"; DHALL_PRELUDE = "${dhallPackages.prelude}/package.dhall";
doCheck = true;
buildInputs = [ haskellPackages.dhall-kubernetes-generator dhall dhall-json python3 glibcLocales ]; XDG_CACHE_HOME = ".";
preBuild = ''
patchShebangs ./scripts/build-readme.sh buildInputs =
''; [ dhall
preCheck = '' dhall-json
patchShebangs ./scripts/build-examples.py python3
patchShebangs ./scripts/check-source.py glibcLocales
''; ];
src = lib.cleanSourceWith {filter = ignoreOutputs; src = lib.cleanSource ./..;};
buildPhase = ''
patchShebangs ./scripts/build-readme.sh
./scripts/build-readme.sh
${coreutils}/bin/mkdir -p types defaults
${haskellPackages.dhall-kubernetes-generator}/bin/dhall-kubernetes-generator '${kubernetes-openapi-spec}'
for file in ./types.dhall ./typesUnion.dhall ./defaults.dhall ./schemas.dhall ./package.dhall ./examples/*.dhall; do
echo "Freezing file '$file'"
${dhall}/bin/dhall freeze --all --inplace "$file"
done
'';
checkPhase = ''
patchShebangs ./scripts/build-examples.py
patchShebangs ./scripts/check-source.py
LC_ALL=en_US.UTF-8 ./scripts/check-source.py
mkdir -p tmp
LC_ALL=en_US.UTF-8 ./scripts/build-examples.py tmp
'';
installPhase = ''
${coreutils}/bin/mkdir --parents "$out"
cp -r types defaults schemas examples types.dhall defaults.dhall typesUnion.dhall schemas.dhall package.dhall README.md "$out"
'';
src =
lib.cleanSourceWith
{ filter = ignoreOutputs; src = lib.cleanSource ./..; };
} }

View File

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
if dir=$(nix-build release.nix -A dhall-kubernetes --no-out-link); then if dir=$(nix-build release.nix --attr dhall-kubernetes --no-out-link); then
rm -rf ./defaults ./types rm -rf ./defaults ./types
cp -r "$dir"/defaults . cp -r "$dir"/defaults .
chmod u+w ./defaults chmod u+w ./defaults
@ -7,10 +7,10 @@ if dir=$(nix-build release.nix -A dhall-kubernetes --no-out-link); then
chmod u+w ./types chmod u+w ./types
cp -r "$dir"/schemas . cp -r "$dir"/schemas .
chmod u+w ./schemas chmod u+w ./schemas
cp "$dir"/types.dhall "$dir"/typesUnion.dhall "$dir"/defaults.dhall "$dir"/schemas.dhall . cp -r "$dir"/examples .
chmod u+w ./types.dhall ./typesUnion.dhall ./defaults.dhall ./schemas.dhall chmod u+w ./examples
cp "$dir"/types.dhall "$dir"/typesUnion.dhall "$dir"/defaults.dhall "$dir"/schemas.dhall "$dir"/package.dhall .
chmod u+w ./types.dhall ./typesUnion.dhall ./defaults.dhall ./schemas.dhall ./package.dhall
cp "$dir/README.md" README.md cp "$dir/README.md" README.md
chmod u+w ./README.md chmod u+w ./README.md
fi fi