FROM golang:1.20

WORKDIR /go/src/github.com/github/linguist/tools/grammars

RUN curl -sL https://deb.nodesource.com/setup_22.x | bash - && \
  apt-get update && \
  apt-get install -y nodejs cmake && \
  npm install -g season && \
  cd /tmp && git clone https://github.com/vmg/pcre && \
  mkdir -p /tmp/pcre/build && cd /tmp/pcre/build && \
  cmake .. \
  -DPCRE_SUPPORT_JIT=ON \
  -DPCRE_SUPPORT_UTF=ON \
  -DPCRE_SUPPORT_UNICODE_PROPERTIES=ON \
  -DBUILD_SHARED_LIBS=OFF \
  -DCMAKE_C_FLAGS="-fPIC $(EXTRA_PCRE_CFLAGS)" \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DPCRE_BUILD_PCRECPP=OFF \
  -DPCRE_BUILD_PCREGREP=OFF \
  -DPCRE_BUILD_TESTS=OFF \
  -G "Unix Makefiles" && \
  make && make install && \
  rm -rf /tmp/pcre && \
  rm -rf /var/lib/apt/lists/*

COPY . .
RUN go install ./cmd/grammar-compiler

ENTRYPOINT ["grammar-compiler"]
