From 2fa50d4f6290a39e492043eaeed8ede8e26ce62d Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 4 Jul 2019 06:17:11 +0200 Subject: [PATCH] Update CI settings --- .travis.yml | 79 -------------------------------------- README.md | 2 +- semaphoreci.sh | 29 ++++++++++++++ src/Data/GraphQL/Schema.hs | 4 +- 4 files changed, 32 insertions(+), 82 deletions(-) delete mode 100644 .travis.yml create mode 100755 semaphoreci.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 811ab61..0000000 --- a/.travis.yml +++ /dev/null @@ -1,79 +0,0 @@ -# This file has been generated -- see https://github.com/hvr/multi-ghc-travis -language: c -sudo: false - -cache: - directories: - - $HOME/.cabsnap - - $HOME/.cabal/packages - -before_cache: - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar - -matrix: - include: - - env: CABALVER=1.22 GHCVER=7.10.3 - compiler: ": #GHC 7.10.3" - addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}} - - env: CABALVER=1.24 GHCVER=8.0.1 - compiler: ": #GHC 8.0.1" - addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1], sources: [hvr-ghc]}} - -before_install: - - unset CC - - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH - -install: - - cabal --version - - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]" - - if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ]; - then - zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz > - $HOME/.cabal/packages/hackage.haskell.org/00-index.tar; - fi - - travis_retry cabal update -v - - sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config - - cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt - - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt - -# check whether current requested install-plan matches cached package-db snapshot - - if diff -u $HOME/.cabsnap/installplan.txt installplan.txt; - then - echo "cabal build-cache HIT"; - rm -rfv .ghc; - cp -a $HOME/.cabsnap/ghc $HOME/.ghc; - cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/; - else - echo "cabal build-cache MISS"; - rm -rf $HOME/.cabsnap; - mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin; - cabal install --only-dependencies --enable-tests --enable-benchmarks; - fi - -# snapshot package-db on cache miss - - if [ ! -d $HOME/.cabsnap ]; - then - echo "snapshotting package-db to build-cache"; - mkdir $HOME/.cabsnap; - cp -a $HOME/.ghc $HOME/.cabsnap/ghc; - cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/; - fi - -# Here starts the actual work to be performed for the package under test; -# any command which exits with a non-zero exit code causes the build to fail. -script: - - if [ -f configure.ac ]; then autoreconf -i; fi - - cabal configure --enable-tests --enable-benchmarks -v2 # -v2 provides useful information for debugging - - cabal build # this builds all libraries and executables (including tests/benchmarks) - - cabal test - - cabal check - - cabal sdist # tests that a source-distribution can be generated - -# Check that the resulting source distribution can be built & installed. -# If there are no other `.tar.gz` files in `dist`, this can be even simpler: -# `cabal install --force-reinstalls dist/*-*.tar.gz` - - SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz && - (cd dist && cabal install --force-reinstalls "$SRC_TGZ") - -# EOF diff --git a/README.md b/README.md index 1e7b121..84daeb7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Haskell GraphQL [![Hackage Version](https://img.shields.io/hackage/v/graphql.svg)](https://hackage.haskell.org/package/graphql) -[![Build Status](https://img.shields.io/travis/jdnavarro/graphql-haskell.svg)](https://travis-ci.org/jdnavarro/graphql-haskell) +[![Build Status](https://semaphoreci.com/api/v1/belka-ew/graphql/branches/master/badge.svg)](https://semaphoreci.com/belka-ew/graphql) For now this only provides the data types to represent the GraphQL AST, but the idea is to be a Haskell port of diff --git a/semaphoreci.sh b/semaphoreci.sh new file mode 100755 index 0000000..09f7aa7 --- /dev/null +++ b/semaphoreci.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +STACK=$SEMAPHORE_CACHE_DIR/stack + +setup() { + if [ ! -e "$STACK" ] + then + curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C $SEMAPHORE_CACHE_DIR '*/stack' + fi + $STACK --no-terminal setup +} + +setup_test() { + $STACK --no-terminal test --only-snapshot +} + +test() { + $STACK --no-terminal test --pedantic +} + +setup_lint() { + $STACK --no-terminal install hlint +} + +lint() { + $STACK --no-terminal exec hlint -- src tests +} + +$1 diff --git a/src/Data/GraphQL/Schema.hs b/src/Data/GraphQL/Schema.hs index ad47cef..943e552 100644 --- a/src/Data/GraphQL/Schema.hs +++ b/src/Data/GraphQL/Schema.hs @@ -148,7 +148,7 @@ resolveFieldValue :: MonadPlus m -> (Field -> a -> CollectErrsT m (HashMap Text Aeson.Value)) -> Field -> CollectErrsT m (HashMap Text Aeson.Value) -resolveFieldValue f resolveRight fld@(Field alias name args _) = do +resolveFieldValue f resolveRight fld@(Field _ _ args _) = do result <- lift $ runExceptT . runActionT $ f args either resolveLeft (resolveRight fld) result where @@ -172,7 +172,7 @@ resolve resolvers = fmap (Aeson.toJSON . fold) . traverse tryResolvers tryResolvers fld = mplus (maybe mzero (tryResolver fld) $ find (compareResolvers fld) resolvers) $ errmsg fld compareResolvers (Field _ name _ _) (Resolver name' _) = name == name' tryResolver fld (Resolver _ resolver) = resolver fld - errmsg fld@(Field alias name _ _) = do + errmsg fld@(Field _ name _ _) = do addErrMsg $ T.unwords ["field", name, "not resolved."] return $ HashMap.singleton (aliasOrName fld) Aeson.Null