aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/release-candidate.yml
blob: dd550fa4fa2bbbdd9d1111997452a72ecfe675fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
name: Release candidate

on:
  push:
    branches:
    - 'rc/**'

jobs:
  linux:

    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Create linux package
      run: |
          make debpkg
          mkdir linux-release-candidate
          cp linux/artifacts/*.deb linux-release-candidate/
          cp linux/artifacts/*.tar.gz linux-release-candidate/
    - uses: actions/upload-artifact@master
      with:
        name: linux-release-candidate
        path: linux-release-candidate

  windows:

    runs-on: windows-latest
    strategy:
      fail-fast: true
      matrix:
        versions:
          - osarch: "windows-x86_64"
            arch: "x64"
            choco_opts: ""
            stack_opts: ""
          - osarch: "windows-i386"
            arch: "x86"
            choco_opts: "--x86"
            stack_opts: "--flag hslua:lua_32bits"

    steps:
    - uses: actions/checkout@v1
    - name: Install stack
      shell: cmd
      run: |
          choco install haskell-stack ${{ matrix.versions.choco_opts }}
    - name: Install dependencies
      run: |
          stack update
          stack build ${{ matrix.versions.stack_opts }} --dependencies-only pandoc pandoc-citeproc
    - name: Create windows package
      shell: cmd
      run: |
          for /f %%a in ('powershell -Command "Get-Date -format yyyy-MM-dd"') do set THEDATE=%%a
          stack build  ${{ matrix.versions.stack_opts }}pandoc pandoc-citeproc
          @set WINDOWS=%CD%\windows
          forfiles /P .\.stack-work\install /M pandoc*.exe /S /C "cmd /C echo @path && echo %%WINDOWS%% && copy @path %%WINDOWS%%"
          stack exec pandoc -- -s --toc MANUAL.txt -o windows\MANUAL.html
          stack exec pandoc -- -s COPYING.md -t rtf -o windows\COPYING.rtf
          copy COPYRIGHT windows\COPYRIGHT.txt
          cd windows
          for /f "tokens=1-2 delims= " %%a in ('stack exec pandoc -- --version') do (
            @set VERSION=%%b
            goto :next
            )
          :next
          if "%VERSION%" == "" (
            echo Error: could not determine version number.
            exit /b 1
          )
          echo Detected version %VERSION%
          echo Creating msi...
          dir
          @set WIXBIN="c:\Program Files (x86)\WiX Toolset v3.11\bin"
          @set WORKDIR=%CD%
          echo Running candle...
          %WIXBIN%\candle -arch ${{ matrix.versions.arch }} -dVERSION=%VERSION% -dBINPATH=%WORKDIR% *.wxs -out wixobj\
          if %errorlevel% neq 0 exit /b %errorlevel%
          echo Running light...
          %WIXBIN%\light -sw1076 -ext WixUIExtension -ext WixUtilExtension -cultures:en-us -loc Pandoc-en-us.wxl -out %WORKDIR%\pandoc-%VERSION%-${{ matrix.versions.osarch }}.msi wixobj\*.wixobj
          7z a "pandoc-%VERSION%-${{ matrix.versions.osarch }}.zip" pandoc.exe pandoc-citeproc.exe MANUAL.html COPYING.rtf
          cd ..
          mkdir windows-release-candidate
          copy windows\pandoc-%VERSION%-${{ matrix.versions.osarch }}.msi windows-release-candidate
          copy windows\pandoc-%VERSION%-${{ matrix.versions.osarch }}.zip windows-release-candidate
    - uses: actions/upload-artifact@master
      with:
        name: windows-release-candidate
        path: windows-release-candidate

  macos:

    runs-on: macOS-latest

    steps:
    - uses: actions/checkout@v1
    - name: Install stack
      run: |
          curl -L https://get.haskellstack.org/stable/osx-x86_64.tar.gz -o stack.tar.gz
          tar xzvf stack.tar.gz --strip-components=1 'stack*/stack'
    - name: Install dependencies
      run: |
          ./stack update
          ./stack build --dependencies-only pandoc pandoc-citeproc
    - name: Create macOS package
      run: |
          export VERSION=$(grep '^[Vv]ersion:' pandoc.cabal | awk '{print $$2;}')
          export BASEDIR=$(pwd)
          export ARTIFACTS=${BASEDIR}/macos-release-candidate
          export DIST=${BASEDIR}/macos_package
          export RESOURCES=${ARTIFACTS}/Resources
          export ROOT=${DIST}/pandoc
          export DEST=${ROOT}/usr/local
          export ME=$(whoami)
          export BASE=pandoc-$VERSION
          mkdir -p ${ARTIFACTS}
          mkdir -p ${DIST}
          mkdir -p ${RESOURCES}
          mkdir -p ${DEST}/bin
          mkdir -p ${DEST}/share/man/man1
          ./stack build pandoc pandoc-citeproc
          for f in $(find .stack-work/install -name 'pandoc*' -perm +001 -type f); do cp $f ${DEST}/bin/; done
          strip ${DEST}/bin/pandoc
          strip ${DEST}/bin/pandoc-citeproc
          ${DEST}/bin/pandoc -f markdown-smart -t man -s \
            --template man/pandoc.1.template --lua-filter man/manfilter.lua \
            --variable version="pandoc ${VERSION}" \
            -o ${DEST}/share/man/man1/pandoc.1
          ${DEST}/bin/pandoc-citeproc --man > \
            $DEST/share/man/man1/pandoc-citeproc.1
          ${DEST}/bin/pandoc -t html5 -s COPYING.md -Vpagetitle=License \
            -o ${RESOURCES}/license.html
          sed -e "s/PANDOCVERSION/${VERSION}/" macos/distribution.xml.in > ${ARTIFACTS}/distribution.xml

          chown -R $ME:staff ${DIST}
          echo Creating pkg...
          pkgbuild --root $ROOT --identifier net.johnmacfarlane.pandoc --version $VERSION --ownership recommended ${ARTIFACTS}/pandoc.pkg
          echo Creating zip...
          cd ${DEST}
          cd ..
          mv local ${BASE}
          zip -r ${ARTIFACTS}/${BASE}-macOS.zip ${BASE}
          echo -e "${BASE}-macOS.pkg: pandoc.pkg\n\tproductbuild --distribution distribution.xml --resources Resources --package-path $< --version ${VERSION} --sign 'Developer ID Installer: John Macfarlane' -o \$@\n" > ${ARTIFACTS}/Makefile
    - uses: actions/upload-artifact@master
      with:
        name: macos-release-candidate
        path: macos-release-candidate