# A devfile to setup Theia project in Che.
# For developers who work on Theia core.

apiVersion: 1.0.0
metadata:
  generateName: theia-dev-
projects:
  - name: theia
    source:
      type: git
      location: "https://github.com/eclipse-theia/theia.git"
components:
  - alias: che-dev
    type: dockerimage
    image: "quay.io/eclipse/che-theia-dev:next"
    mountSources: true
    endpoints:
      - name: "theia-dev-flow"
        port: 3000
        attributes:
          protocol: http
          public: "true"
    memoryLimit: "3.5Gi"
  - id: vscode/typescript-language-features/latest
    type: chePlugin
    memoryLimit: 2048M
  - type: cheEditor
    alias: theia-editor
    id: eclipse/che-theia/latest
    memoryLimit: "1Gi"
commands:
  - name: >
      theia: Build Sources
    actions:
      - type: exec
        component: che-dev
        command: >
          killall node;
          npm ci && npm run build && npm run download:plugins
        workdir: /projects/theia
  - name: >
      theia: Launch Browser Backend
    actions:
      - type: exec
        component: che-dev
        command: >
          test -f /tmp/node_theiadev.pid && kill `cat /tmp/node_theiadev.pid`;
          mkdir -p /tmp/theiadev_projects &&
          export NODE_ENV=development &&
          node src-gen/backend/main.js /tmp/theiadev_projects --hostname=0.0.0.0 --port=3000 --no-cluster --plugins=/projects/theia/plugins --hosted-plugin-inspect=9339 & echo $!> /tmp/node_theiadev.pid ; wait `cat /tmp/node_theiadev.pid`
        workdir: /projects/theia/examples/browser
  - name: >
      theia: Watch Core Packages
    actions:
      - type: exec
        component: che-dev
        command: >
          npm run watch:compile
        workdir: /projects/theia
  - name: >
      theia: Watch Browser Example
    actions:
      - type: exec
        component: che-dev
        command: >
          npm run watch
        workdir: /projects/theia/examples/browser
  - name: >
      theia: Watch All
    actions:
      - type: exec
        component: che-dev
        command: >
          npm run watch
        workdir: ${workspaceRoot}/theia
