From 211b6a1fc7ebc32c8c2e156bcf918928dda2ad5b Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Thu, 17 Dec 2020 12:40:29 -0800
Subject: [PATCH] Remove .travis.yml and add CircleCI config.

---
 .circleci/config.yml | 187 +++++++++++++++----------------------------
 .travis.yml          |  54 -------------
 cabal.project        |   1 -
 stack.yaml           |   1 -
 4 files changed, 64 insertions(+), 179 deletions(-)
 delete mode 100644 .travis.yml

diff --git a/.circleci/config.yml b/.circleci/config.yml
index 08c09a575..1ee7fddd2 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,130 +1,71 @@
 version: "2.1"
-
-env: &env
-    environment:
-      LC_ALL: "C.UTF-8"
-    docker:
-      - image: fpco/stack-build:lts-13
-
-#-----------------------------------------------------------------------------
-# Common utility stuff, not to be modified usually
-#-----------------------------------------------------------------------------
-
-preinstall: &preinstall
-  run: |
-      echo 'export PATH=/opt/cabal/bin:/opt/ghc/bin:$PATH' >> $BASH_ENV
-      source $BASH_ENV
-      apt-get update
-
-restore: &restore
-  # Needs to happen after installing ca-certificates
-  restore_cache:
-    key: v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
-
-save: &save
-  save_cache:
-      key: v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
-      paths:
-        - ~/.cabal
-        - ~/.ghc
-        - ~/.local
-        - ~/.stack
-
-commands:
-  cabal_build:
-    parameters:
-      ghcversion:
-        type: string
-    steps:
-      - checkout
-      - *preinstall
-      - *restore
-      - run:
-          name: install cabal
-          command: apt-get install -y cabal-install-2.4
-      - run:
-          name: install ghc
-          command: |
-            apt-get install -y ghc-<< parameters.ghcversion >>
-      - run:
-          name: build and test project
-          command: |
-            set -e
-            cabal v2-update
-            TMPDIR=`mktemp -d -t circleci.XXXXXXX`
-            cabal v2-sdist --output-dir=${TMPDIR}
-            cd ${TMPDIR}
-            tar xvzf *.tar.gz
-            cd *
-            cabal v2-build -w ghc-<< parameters.ghcversion >> -j2 --disable-optimization --dependencies-only --enable-tests --enable-benchmarks
-            cabal v2-build -w ghc-<< parameters.ghcversion >> -j2 --disable-optimization --enable-tests --enable-benchmarks 2>build.log
-            cat build.log
-            # fail if we had warnings in local build
-            # this is to work around the fact that cabal v2 doesn't allow
-            # us to use -Werror for just local build:
-            # https://github.com/haskell/cabal/issues/4247
-            ! grep -q "[Ww]arning:" build.log
-            cabal v2-test -w ghc-<< parameters.ghcversion >> -j2 --disable-optimization --enable-tests
-            cabal v2-haddock -w ghc-<< parameters.ghcversion >>
-            cabal check
-      - *save
-
-#-----------------------------------------------------------------------------
-# Build matrix
-#-----------------------------------------------------------------------------
-
 jobs:
-  cabal-ghc-8_8_1:
-      <<: *env
-      steps:
-          - cabal_build:
-              ghcversion: 8.8.1
+  build:
+    macos:
+      xcode: 9.4.1
+    environment:
+      HOMEBREW_NO_AUTO_UPDATE: 1
+    steps:
+    - checkout
+    - restore_cache:
+        # See https://circleci.com/docs/2.0/caching/
+        name: Restore Cached Dependencies
+        keys:
+          - stack-dependencies-{{ checksum "stack.yaml" }}
+    - run:
+        name: Install stack
+        command: stack --version || brew update && brew install haskell-stack
+    - run:
+        name: Resolve/Update Dependencies
+        command: stack --no-terminal setup
+    - run:
+        name: Run tests
+        command: stack --no-terminal test
+    - run:
+        name: Install executable
+        command: stack --no-terminal install
+    - run:
+        name: Create artifacts
+        command: |
+          export VERSION=$(grep '^[Vv]ersion:' pandoc.cabal | awk '{print $$2;}')
+          export ARTIFACTS=macos-release-candidate
+          export RESOURCES=${ARTIFACTS}/Resources
+          export ROOT=${ARTIFACTS}/pandoc
+          export DEST=${ROOT}/usr/local
+          export ME=$(whoami)
+          export BASE=pandoc-$VERSION
+          mkdir -p ${ARTIFACTS}
+          mkdir -p ${RESOURCES}
+          mkdir -p ${DEST}/bin
+          mkdir -p ${DEST}/share/man/man1
+          cp ~/.local/bin/pandoc ${DEST}/bin/
+          strip ${DEST}/bin/pandoc
+          cp man/pandoc.1 ${DEST}/share/man/man1/pandoc.1
+          ~/.local/bin/pandoc -s COPYING.md -Vpagetitle=License -o ${RESOURCES}/license.html
+          chown -R $ME:staff ${ROOT}
+          sed -e "s/PANDOCVERSION/${VERSION}/" macos/distribution.xml.in > ${ARTIFACTS}/distribution.xml
+          cp macos/Makefile ${ARTIFACTS}/
+          zip -r macos-release-candidate.zip ${ARTIFACTS}
 
-  cabal-ghc-8_6_5:
-      <<: *env
-      steps:
-          - cabal_build:
-              ghcversion: 8.6.5
+    - save_cache:
+        name: Cache Dependencies
+        key: stack-dependencies-{{ checksum "stack.yaml" }}
+        paths:
+        - "/root/.stack"
+        - ".stack-work"
+        - "/usr/local/bin/stack"
 
-  cabal-ghc-8_4_4:
-      <<: *env
-      steps:
-          - cabal_build:
-              ghcversion: 8.4.4
-
-  cabal-ghc-8_2_2:
-      <<: *env
-      steps:
-          - cabal_build:
-              ghcversion: 8.2.2
-
-  cabal-ghc-8_0_2:
-      <<: *env
-      steps:
-          - cabal_build:
-              ghcversion: 8.0.2
-
-  stack-ghc-8_6:
-      <<: *env
-      steps:
-        - checkout
-        - *preinstall
-        - *restore
-        - run: |
-            set -e
-            apt-get install -y ghc-8.6.5
-            stack update
-            stack test --system-ghc --fast --ghc-options="-Werror" .
-        - *save
+    - store_artifacts:
+        # https://circleci.com/docs/2.0/artifacts/
+        path: macos-release-candidate.zip
+        destination: macos-release-candidate.zip
 
 workflows:
-  version: "2.1"
-  build:
+  version: 2
+  release:
     jobs:
-      - cabal-ghc-8_6_5
-      - cabal-ghc-8_4_4
-      - cabal-ghc-8_2_2
-      - cabal-ghc-8_0_2
-      - stack-ghc-8_6
-      # - cabal-ghc-8_8_1
-
+    - build:
+        filters:
+          branches:
+            only:
+            - /rc\/.*/
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 6855ddd75..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-os: osx
-language: generic
-cache:
-  timeout: 1000
-  directories:
-  - "$HOME/.stack/"
-  - ".stack-work/"
-branches:
-  only:
-  - /rc\/.*/
-install:
-- set -e
-- ulimit -n 4096
-- brew install haskell-stack
-- which stack
-- stack --version
-- stack setup
-- stack exec -- ghc --version
-- |
-  export VERSION=$(grep '^[Vv]ersion:' pandoc.cabal | awk '{print $$2;}')
-  export BASEDIR=$(pwd)
-  export ARTIFACTS=${BASEDIR}/macos-release-candidate
-  export RESOURCES=${ARTIFACTS}/Resources
-  export ROOT=${ARTIFACTS}/pandoc
-  export DEST=${ROOT}/usr/local
-  export ME=$(whoami)
-  export BASE=pandoc-$VERSION
-  mkdir -p ${ARTIFACTS}
-  mkdir -p ${RESOURCES}
-  mkdir -p ${DEST}/bin
-  mkdir -p ${DEST}/share/man/man1
-  stack build --dependencies-only pandoc
-  stack build pandoc
-  for f in $(find .stack-work/install -name 'pandoc' -perm +001 -type f); do cp $f ${DEST}/bin/; done
-  strip ${DEST}/bin/pandoc
-  cp man/pandoc.1 ${DEST}/share/man/man1/pandoc.1
-  ${DEST}/bin/pandoc -t html5 -s COPYING.md -Vpagetitle=License \
-    -o ${RESOURCES}/license.html
-  chown -R $ME:staff ${ROOT}
-  sed -e "s/PANDOCVERSION/${VERSION}/" macos/distribution.xml.in > ${ARTIFACTS}/distribution.xml
-  cp macos/Makefile ${ARTIFACTS}/
-  echo ${VERSION} > ${ARTIFACTS}/version.txt
-deploy:
-  on:
-    all_branches: true
-  provider: s3
-  bucket: travis-jgm-pandoc
-  region: us-west-1
-  edge: true
-  local_dir: macos-release-candidate
-  access_key_id:
-    secure: ohEst8EP8Z3r/bPMlYgPATo3B/ye48Z0aGp4W1pEhDZjqufLUVTFBIoicvPApCkTrbKMNTdG+KmasrO/leHpju0uFKYQHDtJmHZe3avIOIdbGnOqn97+mmLZBN5skiJWNtrxnN/TuAM+wlePz1dQpohPt6J3S70ct8DsOdZOaGI=
-  secret_access_key:
-    secure: qZ2RN4Bx4WRcVz9H8ae4S6a3AA85kcca0RdMimIREdGSx4ewMYa8lSdcKDvRbPwXRy8H3SeviqL2tTZw3+ej1jccAHowMj8Zvde5EJwX0+qO4Sr0zdWjnsvMeUmx9pO1oL3L/09KTWiMTT+d4XNpE8eqiY08qN8oMj0EPeR/AS4=
diff --git a/cabal.project b/cabal.project
index 23ff56c5b..ead57cd20 100644
--- a/cabal.project
+++ b/cabal.project
@@ -10,4 +10,3 @@ package pandoc
 --   type: git
 --   location: https://github.com/jgm/citeproc
 --   tag: a8193fe375fa2354049bf9a967ba3bad4b1ba053
-
diff --git a/stack.yaml b/stack.yaml
index f4adfc1e0..453b24c90 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -26,4 +26,3 @@ ghc-options:
 resolver: lts-16.23
 nix:
   packages: [zlib]
-