* Fix misleading comment * Add `Chained` type to capture fully chained imports Until now we used `Import` two mean two different things: - The syntactic construct; e.g. `./a.dhall` corresponds to the following AST: ``` Embed (Import (ImportHashed Nothing (Local Here (Directory ["."]) "a.dhall")) Code) ``` - The physical location the import is pointing to, computed by 'chaining' the syntactical import with the the 'physical' parent import. For example the syntactic import `./a.dhall` might actually refer to the remote file `http://host/directory/a.dhall`. This commit adds a `Chained` newtype on top of `Import` to make this distinction explicit at type level. * Use `HTTPHeaders` alias for binary headers I claim that `HTTPHeaders` is more readable and informative than the unfolded type `(CI ByteString, ByteString)`. * Typecheck and normalise http headers earlier Previously we would typecheck and normalise http headers in `exprFromImport`, i.e. while loading the import. This commit adds the invariant that any headers in 'Chained' imports are already typechecked and normalised, and moves this step into `loadWith` accordingly. This causes a subtle difference in behaviour when importing remote files with headers `as Location`: previously, nonsensical expressions like `http://a using 0 0 as Location` were valid, while they would now cause a type error. * Fix dhall-lsp-server * Fix Dhall.Import API regarding `Chained` imports Do not expose the `Chained` constructor; we don't want external code breaking our invariants! Also further clarifies the comment describing the `Chained` type. * Fix dhall-lsp-server Since we are no longer able to construct `Chained` imports directly we need to export a few additional helper functions from Dhall.Import. Furthermore, since VSCode (and presumably the other editors out there implementing the LSP protocol) does not support opening remote files anyway we can get rid of some complications by dropping support for remote files entirely on the back-end. * Generalise decodeExpression, fixes TODO * Fix tests * Fix benchmarks * Remove Travis cache for `~/.local/bin` * Fix copy-pasted comment Thanks to @Gabriel439 for spotting this! * Add clarifying comment to `toHeaders`
70 lines
1.9 KiB
YAML
70 lines
1.9 KiB
YAML
sudo: required
|
|
|
|
language: generic
|
|
|
|
cache:
|
|
directories:
|
|
- $HOME/.ghc
|
|
- $HOME/.cabal
|
|
- $HOME/.stack
|
|
- $TRAVIS_BUILD_DIR/.stack-work
|
|
|
|
matrix:
|
|
include:
|
|
# Build only on macOS
|
|
- env: BUILD=stack
|
|
compiler: ": #stack default osx"
|
|
os: osx
|
|
|
|
# Build only master and release tags
|
|
branches:
|
|
only:
|
|
- master
|
|
- /^\d+\.\d+\.\d+(\.\d+)?$/
|
|
|
|
|
|
before_install:
|
|
# Using compiler above sets CC to an invalid value, so unset it
|
|
- unset CC
|
|
- CABALARGS=""
|
|
- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$HOME/.local/bin:/opt/alex/$ALEXVER/bin:/opt/happy/$HAPPYVER/bin:$HOME/.cabal/bin:$PATH
|
|
- | # Install stack
|
|
mkdir -p ~/.local/bin
|
|
travis_retry curl -L https://get.haskellstack.org/stable/osx-x86_64.tar.gz | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin
|
|
# Use the more reliable S3 mirror of Hackage
|
|
mkdir -p $HOME/.cabal
|
|
echo 'remote-repo: hackage.haskell.org:http://hackage.fpcomplete.com/' > $HOME/.cabal/config
|
|
echo 'remote-repo-cache: $HOME/.cabal/packages' >> $HOME/.cabal/config
|
|
|
|
|
|
install:
|
|
- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
|
|
- SAVED_OPTIONS=$(set +o)
|
|
- set -ex
|
|
- stack --no-terminal --install-ghc build --only-dependencies
|
|
- eval "$SAVED_OPTIONS"
|
|
|
|
|
|
script:
|
|
- export PATH="${PATH}:$(pwd)/bin"
|
|
- stack build --copy-bins --local-bin-path ./bin
|
|
- source .travis-functions.sh
|
|
- tar -jcvf $(mk_release_name dhall) bin/dhall
|
|
- tar -jcvf $(mk_release_name dhall-json) bin/dhall-to-json bin/dhall-to-yaml bin/json-to-dhall bin/yaml-to-dhall
|
|
- tar -jcvf $(mk_release_name dhall-bash) bin/dhall-to-bash
|
|
- tar -jcvf $(mk_release_name dhall-lsp-server) bin/dhall-lsp-server
|
|
- mkdir -p uploads
|
|
- mv *.tar.bz2 uploads/
|
|
|
|
|
|
deploy:
|
|
- provider: releases
|
|
api_key: $GITHUB_OAUTH_TOKEN
|
|
file_glob: true
|
|
file: uploads/*
|
|
skip_cleanup: true
|
|
on:
|
|
tags: true
|
|
script:
|
|
- echo 'done'
|