<commit_before>clsi-sharelatex
===============

A web api for compiling LaTeX documents in the cloud

[![Build Status](https://travis-ci.org/sharelatex/clsi-sharelatex.png?branch=master)](https://travis-ci.org/sharelatex/clsi-sharelatex)

The CLSI provide a RESTful interface to traditional LaTeX tools (or, more generally, any command line tool for composing marked-up documents into a display format such as PDF or HTML). The CLSI listens on the following ports by default:

* TCP/3009 - the RESTful interface
* TCP/3048 - reports load information to the `CLSI-lb`
* TCP/3049 - HTTP interface to control the CLSI service

These defaults can be modified in `config/settings.defaults.coffee`.

The provided `Dockerfile` builds a docker image which has the docker command line tools installed. The configuration in `docker-compose-config.yml` mounts the docker socket, in order that the CLSI container can talk to the docker host it is running in. This allows it to spin up `sibling containers` running our TEXLIVE image on the same docker host to perform the actual compiles.

The CLSI can be configured through the following environment variables:

    * `DOCKER_RUNNER` - Set to true to use sibling containers
    * `SYNCTEX_BIN_HOST_PATH` - Path to SyncTeX binary
    * `COMPILES_HOST_DIR` - Working directory for LaTeX compiles
    * `SQLITE_PATH` - Path to SQLite database
    * `TEXLIVE_IMAGE` - The TEXLIVE docker image to use for sibling containers, e.g. `gcr.io/overleaf-ops/texlive-full:2017.1`
    * `TEXLIVE_IMAGE_USER` - When using sibling containers, the user to run as in the TEXLIVE image. Defaults to `tex`
    * `TEX_LIVE_IMAGE_NAME_OVERRIDE` - The name of the registry for the docker image e.g. `gcr.io/overleaf-ops`
    * `FILESTORE_DOMAIN_OVERRIDE` - The url for the filestore service e.g.`http://$FILESTORE_HOST:3009`
    * `STATSD_HOST` - The address of the Statsd service (used by the metrics module)
    * `LISTEN_ADDRESS` - The address for the RESTful service to listen on. Set to `0.0.0.0` to listen on all network interfaces
    * `SMOKE_TEST` - Whether to run smoke tests

Installation
------------

The CLSI can be installed and set up as part of the entire [ShareLaTeX stack](https://github.com/sharelatex/sharelatex) (complete with front end editor and document storage), or it can be run as a standalone service. To run is as a standalone service, first checkout this repository:

    $ git clone <EMAIL>:sharelatex/clsi-sharelatex.git
    
Then install the require npm modules:

    $ npm install<commit_msg>Fix indenting<commit_after>clsi-sharelatex
===============

A web api for compiling LaTeX documents in the cloud

[![Build Status](https://travis-ci.org/sharelatex/clsi-sharelatex.png?branch=master)](https://travis-ci.org/sharelatex/clsi-sharelatex)

The CLSI provide a RESTful interface to traditional LaTeX tools (or, more generally, any command line tool for composing marked-up documents into a display format such as PDF or HTML). The CLSI listens on the following ports by default:

* TCP/3009 - the RESTful interface
* TCP/3048 - reports load information to the `CLSI-lb`
* TCP/3049 - HTTP interface to control the CLSI service

These defaults can be modified in `config/settings.defaults.coffee`.

The provided `Dockerfile` builds a docker image which has the docker command line tools installed. The configuration in `docker-compose-config.yml` mounts the docker socket, in order that the CLSI container can talk to the docker host it is running in. This allows it to spin up `sibling containers` running our TEXLIVE image on the same docker host to perform the actual compiles.

The CLSI can be configured through the following environment variables:

  * `DOCKER_RUNNER` - Set to true to use sibling containers
  * `SYNCTEX_BIN_HOST_PATH` - Path to SyncTeX binary
  * `COMPILES_HOST_DIR` - Working directory for LaTeX compiles
  * `SQLITE_PATH` - Path to SQLite database
  * `TEXLIVE_IMAGE` - The TEXLIVE docker image to use for sibling containers, e.g. `gcr.io/overleaf-ops/texlive-full:2017.1`
  * `TEXLIVE_IMAGE_USER` - When using sibling containers, the user to run as in the TEXLIVE image. Defaults to `tex`
  * `TEX_LIVE_IMAGE_NAME_OVERRIDE` - The name of the registry for the docker image e.g. `gcr.io/overleaf-ops`
  * `FILESTORE_DOMAIN_OVERRIDE` - The url for the filestore service e.g.`http://$FILESTORE_HOST:3009`
  * `STATSD_HOST` - The address of the Statsd service (used by the metrics module)
  * `LISTEN_ADDRESS` - The address for the RESTful service to listen on. Set to `0.0.0.0` to listen on all network interfaces
  * `SMOKE_TEST` - Whether to run smoke tests

Installation
------------

The CLSI can be installed and set up as part of the entire [ShareLaTeX stack](https://github.com/sharelatex/sharelatex) (complete with front end editor and document storage), or it can be run as a standalone service. To run is as a standalone service, first checkout this repository:

    $ git clone <EMAIL>.com:sharelatex/clsi-sharelatex.git
    
Then install the require npm modules:

    $ npm install
{'fraction_non_alphanumeric': 0.08191867350967233, 'fraction_numerical': 0.00986971969996052, 'mean_word_length': 4.133738601823708, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2905799', 'n_tokens_mistral': 1575, 'n_tokens_neox': 1476, 'n_words': 628}