ARG DISTRIBUTION=ubuntu:22.04

FROM ubuntu:22.04 AS install

RUN export DEBIAN_FRONTEND=noninteractive \
 && apt update \
 && apt install -y \
      dbus \
      fontconfig \
      libharfbuzz0b \
      libxcb1 \
      libxkbcommon0 \
      xz-utils \
 && rm -rf /var/lib/apt/lists/*

ARG MATCALC_VERSION=6.04.1004
ARG MATCALC_DATE=2023-06-28

ADD https://www.matcalc.at/images/stories/Download/MatCalc/Linux/MatCalc%2064-bit%20Linux%20$MATCALC_VERSION%20$MATCALC_DATE.tar.xz /tmp

RUN echo '\n\
function Controller() {\n\
    installer.autoRejectMessageBoxes;\n\
    installer.setMessageBoxAutomaticAnswer("OverwriteTargetDirectory", QMessageBox.Yes);\n\
    installer.setMessageBoxAutomaticAnswer("stopProcessesForUpdates", QMessageBox.Ignore);\n\
}\n\
Controller.prototype.IntroductionPageCallback = function() { gui.clickButton( buttons.NextButton ); }\n\
Controller.prototype.LicenseAgreementPageCallback = function() {\n\
        var widget = gui.currentPageWidget();\n\
        if (widget != null) widget.AcceptLicenseRadioButton.click();\n\
        gui.clickButton( buttons.NextButton );\n\
}\n\
Controller.prototype.StartMenuDirectoryPageCallback =\n\
Controller.prototype.TargetDirectoryPageCallback = function() { gui.clickButton( buttons.NextButton ); }\n\
Controller.prototype.ComponentSelectionPageCallback = function() {\n\
        var widget = gui.currentPageWidget();\n\
        if (widget != null) widget.selectDefault();\n\
        gui.clickButton( buttons.NextButton );\n\
}\n\
Controller.prototype.ReadyForInstallationPageCallback = \n\
Controller.prototype.PerformInstallationPageCallback = function() { gui.clickButton( buttons.CommitButton ); }\n\
Controller.prototype.FinishedPageCallback = function() {\n\
        var widget = gui.currentPageWidget();\n\
        if (widget != null) widget.RunItCheckBox.click();\n\
        gui.clickButton( buttons.FinishButton );\n\
}\n'\
   > /tmp/silent.js \
 && cd /tmp \
 && tar xf MatCalc*.tar.xz \
 && ./Install* -platform minimal --script silent.js TargetDir=/tmp/matcalc


FROM $DISTRIBUTION
COPY --from=install /tmp/matcalc /opt/matcalc

RUN echo "\nexport PATH=/opt/matcalc:$PATH" | tee -a /etc/bash.bashrc /etc/profile > /dev/null \
 && if [ -f /usr/bin/apt ]; then \
         apt update -y \
      && apt install -y \
           ca-certificates \
           fontconfig \
      && rm -rf /var/lib/apt/lists/* \
    ; elif [ -f /usr/bin/yum ]; then \
         yum install -y fontconfig \
      && yum clean all \
      && rm -rf /var/cache/yum \
    ; elif [ -f /usr/bin/dnf ]; then \
         yum install -y fontconfig \
      && yum clean all \
      && rm -rf /var/cache/dnf \
    ; fi

CMD /opt/matcalc/mcc
