git.iko.soy/typeable/compaREST
on fbd027d help sign in
11 files changed+79−201
since splitsnapshots
unifiedsplit
.github/actions/common_setup/action.yaml+2−2 .github/workflows/github-actions-image.yaml+53−63 default.nix+6−17 nix/ci.nix+1−6 nix/diff-yaml.nix−20 nix/shell.nix−11 nix/sources.json+13−13 nix/yq.nix−26 scripts/diff-yaml−35 stack.yaml+2−6 test/Spec/Golden/Extra.hs+2−2
.github/actions/common_setup/action.yaml+2−2
@@ -30,13 +30,13 @@ runs:
3030 fi
3131
3232 - name: Install Nix
33− uses: cachix/install-nix-action@v27
33+ uses: cachix/install-nix-action@v16
3434 with:
3535 extra_nix_config: |
3636 system-features = kvm
3737 trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
3838 substituters = https://hydra.iohk.io https://cache.nixos.org/
39− - uses: cachix/cachix-action@v15
39+ - uses: cachix/cachix-action@v10
4040 with:
4141 name: typeable
4242 authToken: "${{ inputs.authToken }}"
.github/workflows/github-actions-image.yaml+53−63
@@ -9,34 +9,29 @@ on:
99 types: [prereleased]
1010
1111jobs:
12−# check-formatting:
13−# name: Check Haskell formatting
14−# runs-on: ubuntu-latest
15−# steps:
16−# - uses: actions/checkout@v2
17−#
18−# - name: Common setup
19−# uses: ./.github/actions/common_setup
20−# with:
21−# authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
22−#
23−# - name: Run fourmolu
24−# run: |
25−# nix-shell nix/ci.nix -j auto --run "git ls-files '*.hs' | xargs fourmolu -m inplace -o -XRecursiveDo -o -XTypeApplications -o -XPatternSynonyms -o -XBangPatterns"
26−# git diff --exit-code
27−
28− check_versions:
12+ check-formatting:
13+ name: Check Haskell formatting
2914 runs-on: ubuntu-latest
3015 steps:
3116 - uses: actions/checkout@v2
32− with:
33− submodules: recursive
3417
3518 - name: Common setup
3619 uses: ./.github/actions/common_setup
3720 with:
3821 authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
3922
23+ - name: Run fourmolu
24+ run: |
25+ nix-shell nix/ci.nix -j auto --run "git ls-files '*.hs' | xargs fourmolu -m inplace -o -XRecursiveDo -o -XTypeApplications -o -XPatternSynonyms -o -XBangPatterns"
26+ git diff --exit-code
27+
28+ check_versions:
29+ runs-on: ubuntu-latest
30+ steps:
31+ - uses: actions/checkout@v2
32+ with:
33+ submodules: recursive
34+
4035 - name: Check library version
4136 if: github.event_name == 'release'
4237 run: |
@@ -159,18 +154,13 @@ jobs:
159154 tag: ${{ github.ref }}
160155
161156 dist:
162− needs: [check_versions, Linux]
157+ needs: check_versions
163158 runs-on: ubuntu-latest
164159 steps:
165160 - uses: actions/checkout@v2
166161 with:
167162 submodules: recursive
168163
169− - name: Common setup
170− uses: ./.github/actions/common_setup
171− with:
172− authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
173−
174164 - name: Cache
175165 uses: actions/cache@v1
176166 with:
@@ -189,7 +179,7 @@ jobs:
189179
190180 - name: Build dist
191181 run: |
192− stack sdist --pvp-bounds both
182+ stack sdist --pvp-bounds both --test-tarball
193183 echo "distPath=$(stack path | awk -F ": " '/dist-dir/ {print $2}')" >> $GITHUB_ENV
194184
195185 - name: Upload compaREST sources artifact
@@ -213,7 +203,7 @@ jobs:
213203 env:
214204 HACKAGE_KEY: ${{ secrets.HACKAGE_KEY }}
215205 run: |
216− stack upload --pvp-bounds both --candidate .
206+ stack upload --pvp-bounds both --test-tarball --candidate .
217207
218208 macOS:
219209 needs: check_versions
@@ -252,39 +242,39 @@ jobs:
252242 file: compaREST-macOS-x86.zip
253243 tag: ${{ github.ref }}
254244
255−# Linux-Windows:
256−# needs: check_versions
257−# runs-on: ubuntu-latest
258−# steps:
259−# - uses: actions/checkout@v2
260−# with:
261−# submodules: recursive
262−#
263−# - name: Common setup
264−# uses: ./.github/actions/common_setup
265−# with:
266−# authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
267−#
268−# - name: Build Windows binary
269−# run: |
270−# cp -LR $(nix-build -A WindowsCompaRESTBin -j auto --no-out-link)/bin compaREST
271−#
272−# - name: Upload Windows compaREST bundle
273−# uses: actions/upload-artifact@v2
274−# with:
275−# name: compaREST binary – Windows
276−# path: compaREST
277−#
278−# - name: Zip Release Assets
279−# if: github.event_name == 'release'
280−# shell: bash
281−# run: |
282−# zip -r compaREST-Windows.zip compaREST
283−#
284−# - name: Upload compaREST binary – Windows to release
285−# if: github.event_name == 'release'
286−# uses: svenstaro/upload-release-action@2.2.1
287−# with:
288−# repo_token: ${{ secrets.GITHUB_TOKEN }}
289−# file: compaREST-Windows.zip
290−# tag: ${{ github.ref }}
245+ Linux-Windows:
246+ needs: check_versions
247+ runs-on: ubuntu-latest
248+ steps:
249+ - uses: actions/checkout@v2
250+ with:
251+ submodules: recursive
252+
253+ - name: Common setup
254+ uses: ./.github/actions/common_setup
255+ with:
256+ authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
257+
258+ - name: Build Windows binary
259+ run: |
260+ cp -LR $(nix-build -A WindowsCompaRESTBin -j auto --no-out-link)/bin compaREST
261+
262+ - name: Upload Windows compaREST bundle
263+ uses: actions/upload-artifact@v2
264+ with:
265+ name: compaREST binary – Windows
266+ path: compaREST
267+
268+ - name: Zip Release Assets
269+ if: github.event_name == 'release'
270+ shell: bash
271+ run: |
272+ zip -r compaREST-Windows.zip compaREST
273+
274+ - name: Upload compaREST binary – Windows to release
275+ if: github.event_name == 'release'
276+ uses: svenstaro/upload-release-action@2.2.1
277+ with:
278+ repo_token: ${{ secrets.GITHUB_TOKEN }}
279+ file: compaREST-Windows.zip
280+ tag: ${{ github.ref }}
default.nix+6−17
@@ -1,13 +1,11 @@
11{ sources ? import ./nix/sources.nix
22, haskellNix ? import sources.haskellNix { inherit system; }
3−, pkgs ? import haskellNix.sources.nixpkgs-2311 (haskellNix.nixpkgsArgs // { inherit system; })
3+, pkgs ? import haskellNix.sources.nixpkgs-2105 (haskellNix.nixpkgsArgs // { inherit system; })
44, system ? builtins.currentSystem
55, nix-filter ? import sources.nix-filter
66}:
77let
88 masterPkgs = import sources.nixpkgs { inherit system; };
9− yq = import ./nix/yq.nix { pkgs = masterPkgs; };
10− diffYaml = import ./nix/diff-yaml.nix { pkgs = masterPkgs; };
119
1210 hsPkgs = pkgs.haskell-nix.stackProject {
1311 src = nix-filter {
@@ -99,18 +97,6 @@ let
9997 };
10098
10199 WindowsCompaRESTBin = hsPkgs.projectCross.mingwW64.hsPkgs.compaREST.components.exes.compaREST;
102−
103− # We use the static version so that we don't have to rebuild everything on CI.
104− # The only binaries build on CI are static.
105− test = hsPkgs.projectCross.musl64.hsPkgs.compaREST.components.tests.compaREST-tests.overrideAttrs (final: old: {
106− buildInputs = old.buildInputs ++ [ diffYaml yq ];
107− nativeBuildInputs = old.nativeBuildInputs ++ (with masterPkgs; [ makeWrapper ]);
108−
109− postInstall = ''
110− wrapProgram $out/bin/compaREST-tests \
111− --prefix PATH : ${masterPkgs.lib.makeBinPath [ diffYaml yq ]}
112− '';
113− });
114100in
115101{
116102 inherit
@@ -120,6 +106,9 @@ in
120106 compaRESTBin
121107 hsPkgs
122108 macOSCompaRESTBundle
123− WindowsCompaRESTBin
124− test;
109+ WindowsCompaRESTBin;
110+
111+ # We use the static version so that we don't have to rebuild everything on CI.
112+ # The only binaries build on CI are static.
113+ test = hsPkgs.projectCross.musl64.hsPkgs.compaREST.components.tests.compaREST-tests;
125114}
nix/ci.nix+1−6
@@ -1,11 +1,6 @@
11{ sources ? import ./sources.nix
22, pkgs ? import sources.nixpkgs { }
33}:
4−
5−let
6− yq = import ./yq.nix { inherit pkgs; };
7− diff-yaml = import ./diff-yaml.nix { inherit pkgs; };
8−in
94pkgs.mkShell {
10− packages = [ pkgs.haskellPackages.fourmolu diff-yaml yq ];
5+ packages = [ pkgs.haskellPackages.fourmolu ];
116}
nix/diff-yaml.nixdeleted−20
@@ -1,20 +0,0 @@
1−{ pkgs ? import <nixpkgs> {} }:
2−
3−let
4− inherit (pkgs) stdenv;
5− yq = import ./yq.nix { inherit pkgs; };
6−in
7−stdenv.mkDerivation {
8− name = "diff-yaml";
9−
10− src = ../scripts/diff-yaml;
11−
12− buildInputs = [ pkgs.bash yq ];
13−
14− phases = [ "installPhase" ];
15−
16− installPhase = ''
17− mkdir -p $out/bin
18− cp $src $out/bin/diff-yaml
19− '';
20−}
nix/shell.nixdeleted−11
@@ -1,11 +0,0 @@
1−{ sources ? import ./sources.nix
2−, pkgs ? import sources.nixpkgs { }
3−}:
4−
5−let
6− patched-yq = import ./yq.nix { inherit pkgs; };
7− diffYaml = import ./diff-yaml.nix { inherit pkgs; };
8−in
9−pkgs.mkShell {
10− buildInputs = with pkgs; [ pkg-config diffYaml patched-yq zlib ];
11−}
nix/sources.json+13−13
@@ -5,10 +5,10 @@
55 "homepage": "https://input-output-hk.github.io/haskell.nix",
66 "owner": "input-output-hk",
77 "repo": "haskell.nix",
8− "rev": "d7f95903c84a5a50d6fe0844280da82c3c81680a",
9− "sha256": "02870rk4sx44lwwa0k20iwdhqcx0ayz34yb3b0qy045p22q45815",
8+ "rev": "50c6984263f14c110551a74d36020d0f39160019",
9+ "sha256": "1nbv78127dq01vyhgaw7l6hnz2qdsv115vv2gy4vvayh0y39km91",
1010 "type": "tarball",
11− "url": "https://github.com/input-output-hk/haskell.nix/archive/d7f95903c84a5a50d6fe0844280da82c3c81680a.tar.gz",
11+ "url": "https://github.com/input-output-hk/haskell.nix/archive/50c6984263f14c110551a74d36020d0f39160019.tar.gz",
1212 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
1313 },
1414 "niv": {
@@ -17,22 +17,22 @@
1717 "homepage": "https://github.com/nmattia/niv",
1818 "owner": "nmattia",
1919 "repo": "niv",
20− "rev": "f7c538837892dd2eb83567c9f380a11efb59b53f",
21− "sha256": "0xl33k24vfc29cg9lnp95kvcq69qbq5fzb7jk9ig4lgrhaarh651",
20+ "rev": "9cb7ef336bb71fd1ca84fc7f2dff15ef4b033f2a",
21+ "sha256": "1ajyqr8zka1zlb25jx1v4xys3zqmdy3prbm1vxlid6ah27a8qnzh",
2222 "type": "tarball",
23− "url": "https://github.com/nmattia/niv/archive/f7c538837892dd2eb83567c9f380a11efb59b53f.tar.gz",
23+ "url": "https://github.com/nmattia/niv/archive/9cb7ef336bb71fd1ca84fc7f2dff15ef4b033f2a.tar.gz",
2424 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
2525 },
2626 "nix-filter": {
27− "branch": "main",
27+ "branch": "master",
2828 "description": "a small self-container source filtering lib",
2929 "homepage": "",
3030 "owner": "numtide",
3131 "repo": "nix-filter",
32− "rev": "3342559a24e85fc164b295c3444e8a139924675b",
33− "sha256": "08xia32g5jzaiyhfl3kzxslzbr4w1i56i0mhy5gpfggv8gqy8sym",
32+ "rev": "38bc843f1ce76958a9f6f0a1e4e3455221c8ecf6",
33+ "sha256": "1lgznp706q5ngyl4zm39j0dlrpam2ds5miiwmc9j9vq4jg5z8sfg",
3434 "type": "tarball",
35− "url": "https://github.com/numtide/nix-filter/archive/3342559a24e85fc164b295c3444e8a139924675b.tar.gz",
35+ "url": "https://github.com/numtide/nix-filter/archive/38bc843f1ce76958a9f6f0a1e4e3455221c8ecf6.tar.gz",
3636 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
3737 },
3838 "nixpkgs": {
@@ -41,10 +41,10 @@
4141 "homepage": "",
4242 "owner": "NixOS",
4343 "repo": "nixpkgs",
44− "rev": "bf038bd724982de67a2ee9a6b2f1fcb7d6a87bd7",
45− "sha256": "0ivvwdmg9fipj6ylq5ipxqpb0xnz6hsx3lyn377jacfpiqi9w0cv",
44+ "rev": "276f639ac2cbfa55beb554e13cc091ecf8a65b19",
45+ "sha256": "1y4ddnwb6y2l0lbs3661ymjlj3m9r2ibv6pfajjdyarmjb7qph1c",
4646 "type": "tarball",
47− "url": "https://github.com/NixOS/nixpkgs/archive/bf038bd724982de67a2ee9a6b2f1fcb7d6a87bd7.tar.gz",
47+ "url": "https://github.com/NixOS/nixpkgs/archive/276f639ac2cbfa55beb554e13cc091ecf8a65b19.tar.gz",
4848 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
4949 }
5050}
nix/yq.nixdeleted−26
@@ -1,26 +0,0 @@
1−{ pkgs ? import <nixpkgs> {} }:
2−
3−# Make yq work inside whatever `stack test` launches.
4−# Nuke this when https://github.com/kislyuk/yq/pull/193 is merged
5−# and nixpkgs includes that fix.
6−
7−let
8− yq-patch = pkgs.writeText "yq-tty-fix.patch" ''
9−diff --git a/yq/__init__.py b/yq/__init__.py
10−index d95ac4b..ae7d59e 100644
11−--- a/yq/__init__.py
12−+++ b/yq/__init__.py
13−@@ -110,7 +110,7 @@ def cli(args=None, input_format="yaml", program_name="yq"):
14− in_place = args.in_place
15− delattr(args, "in_place")
16−
17−- if sys.stdin.isatty() and not args.input_streams:
18−+ if (sys.stdin is None or sys.stdin.isatty()) and not args.input_streams:
19− parser.print_help()
20− sys.exit(2)
21− elif not args.input_streams:
22− '';
23−in
24−pkgs.yq.overrideAttrs (final: old: {
25− patches = old.patches ++ [ yq-patch ];
26−})
scripts/diff-yamldeleted−35
@@ -1,35 +0,0 @@
1−#!/usr/bin/env bash
2−set -e
3−
4−# Normalise YAML files passed as inputs, then run diff on them.
5−
6−check_util() {
7− local util=$1
8−
9− if [ -z $util ]; then
10− echo "Error: $util not found in PATH"
11− exit 1
12− fi
13−}
14−
15−DIFF=`which diff`
16−check_util $DIFF
17−
18−YQ=`which yq`
19−check_util $YQ
20−
21−# Only normalise YAML files.
22−# Print anything else as is.
23−normalise() {
24− local file=$1
25− local contents=($YQ -y -S '.' $file)
26−
27− # if $contents contains actual YAML data, print it
28− if [[ $? == 0 ]]; then
29− echo $contents
30− else
31− cat $file
32− fi
33−}
34−
35−$DIFF -u <(normalise $1) <(normalise $2)
stack.yaml+2−6
@@ -1,4 +1,4 @@
1−resolver: lts-22.34
1+resolver: lts-22.17
22
33packages:
44 - .
@@ -6,11 +6,9 @@ packages:
66extra-deps:
77 - base16-bytestring-1.0.2.0
88 - freer-simple-1.2.1.2
9− - generics-sop-0.5.1.4
109 - github-0.29
1110 - http-link-header-1.2.1
1211 - open-union-0.4.0.0
13− - th-abstraction-0.7.0.0
1412 - type-fun-0.1.3
1513 - typerep-map-0.6.0.0
1614
@@ -18,6 +16,4 @@ extra-deps:
1816allow-newer: true
1917
2018nix:
21−# packages: [pkg-config yq zlib]
22− shell-file: ./nix/shell.nix
23− pure: false
19+ packages: [pkg-config zlib]
test/Spec/Golden/Extra.hs+2−2
@@ -59,7 +59,7 @@ goldenInputsTree ::
5959 s ->
6060 (t -> IO BSL.ByteString) ->
6161 IO TestTree
62−goldenInputsTree name filepath golden inp f =
62+goldenInputsTree name filepath golden inp f = do
6363 runTestInputTree golden f <$> getGoldenInputs name filepath inp
6464
6565runTestInputTree ::
@@ -72,7 +72,7 @@ runTestInputTree golden f (TestInputNode name rest) =
7272runTestInputTree golden f (TestInputLeaf name t path) =
7373 goldenVsStringDiff
7474 name
75− (\ref new -> ["diff-yaml", ref, new])
75+ (\ref new -> ["diff", "-u", ref, new])
7676 (path </> golden)
7777 (f t)
7878