Skip to content
This repository has been archived by the owner on Oct 5, 2022. It is now read-only.

[electron] Provide a downloadable and executable yangster application #42

Closed
6 tasks done
kittaakos opened this issue Nov 2, 2017 · 5 comments
Closed
6 tasks done
Assignees

Comments

@kittaakos
Copy link
Contributor

kittaakos commented Nov 2, 2017

TODOs:

  • Currently, the yangster/yangster-app-electron/package.json cannot be used as we do not have a solution for dealing with symlinks with the electron-builder. (Alternatively, we could provide another package.json and use that for the bundling phase.) (See the attached package.json.)
  • LS does not start inside the packaged application. The executable path is hard-coded in the the backend extension: ../node_modules/theia-yang-extension/build/yang-language-server/bin/yang-language-server. After the bundling, the module that defines the above mentioned executable path is inside: yangster-electron.app/Contents/Resources/app/node_modules/theia-yang-extension/lib/backend/backend-extension.js. One level up, no node_modules folder exists, hence it cannot work. (Fixed with 7e7e55b)
  • Update the yarn.lockso that it can pull the fix for the electron issue in Windows due to the AMD loader. Current version of @theia/monaco is '0.3.0-next.218d2c46': '2017-10-30T13:15:50.681Z',. It should be '0.3.0-next.db76dbf1': '2017-11-02T11:18:13.414Z'. (Update the yarn.lockso that it can pull the fix for the electron issue in Windows due to the AMD loader #43) (Fixed with 687b37f)
  • LS does not start on Windows. I guess, we need the .bat file extension when starting the process. (Fixed with 91d1677)
  • Nice icons would be great. ([electron] Provide a downloadable and executable yangster application #42 (comment))
  • One should be able to browse the desired instllation location when using the nsis installer on Windows.

package.json:

{
  "name": "yangster-electron",
  "version": "1.0.0",
  "description": "Yangster Electron",
  "main": "src-gen/frontend/electron-main.js",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/theia-ide/yangster.git"
  },
  "theia": {
    "target": "electron"
  },
  "build": {
    "appId": "yangster-electron.app",
    "productName": "Yangster",
    "files": [
      "src-gen/**/*",
      "lib/**/*",
      "node_modules/**/*",
      "package.json"
    ],
    "directories": {
      "buildResources": "resources"
    },
    "asar": false,
    "publish": null,
    "nsis": {
      "menuCategory": true,
      "oneClick": false,
      "perMachine": true,
      "installerHeaderIcon": "resources/icon.ico",
      "allowToChangeInstallationDirectory": true,
      "runAfterFinish": false
    },
    "mac": {
        "target": "dmg"
    }
  },
  "scripts": {
    "build": "theia build",
    "package": "build",
    "package:all": "build -mwl --x64",
    "postinstall": "npm run build && npm run dist",
    "dist": "npm run build && npm run package"
  },
  "keywords": [],
  "author": "typefox <npm@typefox.io>",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/theia-ide/yangster/issues"
  },
  "homepage": "https://github.com/theia-ide/yangster#readme",
  "dependencies": {
    "@theia/core": "next",
    "@theia/editor": "next",
    "@theia/filesystem": "next",
    "@theia/git": "next",
    "@theia/languages": "next",
    "@theia/markers": "next",
    "@theia/monaco": "next",
    "@theia/navigator": "next",
    "@theia/preferences": "next",
    "@theia/process": "next",
    "@theia/terminal": "next",
    "@theia/typescript": "next",
    "@theia/workspace": "next",
    "theia-yang-extension": "0.1.2",
    "xterm": "^2.9.2"
  },
  "devDependencies": {
    "@theia/cli": "next",
    "electron-builder": "^19.30.2"
  }
}

Steps to build:

yarn
@kittaakos kittaakos self-assigned this Nov 2, 2017
kittaakos added a commit that referenced this issue Nov 2, 2017
So that it can be used from electron and VSCode's launch too.

Signed-off-by: Akos Kitta <kittaakos@gmail.com>
kittaakos added a commit that referenced this issue Nov 2, 2017
Also committed the content of the formatted `package.json`.

Signed-off-by: Akos Kitta <kittaakos@gmail.com>
kittaakos added a commit that referenced this issue Nov 2, 2017
Signed-off-by: Akos Kitta <kittaakos@gmail.com>
@epatpol
Copy link
Contributor

epatpol commented Nov 2, 2017

That's nice, maybe we could have a travis job to make sure that this builds at every commit (later on) ?

JanKoehnlein added a commit that referenced this issue Nov 3, 2017
GH-42: Minor changes to be able to bundle an electron-based Yangster application
@kittaakos
Copy link
Contributor Author

Icons for the application. Unzip it next to the package.json. The folder should be called as resources.

@kittaakos
Copy link
Contributor Author

When starting the application, it complains about the missing TS server:

console-window.ts:17 Request initialize failed with message: Couldn't find 'tsserver' executable
ConsoleWindow.showMessage @ console-window.ts:17
console-window.ts:40 JavaScript: [Error - 8:11:47 AM] Server initialization failed.
console-window.ts:40 JavaScript:   Message: Request initialize failed with message: Couldn't find 'tsserver' executable
  Code: -32603 
messages.js:46 Uncaught (in promise) Error: Request initialize failed with message: Couldn't find 'tsserver' executable
    at new ResponseError (messages.js:46)
    at handleResponse (main.js:423)
    at processMessageQueue (main.js:251)
    at Immediate.<anonymous> (main.js:235)
    at runCallback (timers.js:672)
    at tryOnImmediate (timers.js:645)
    at processImmediate [as _immediateCallback] (timers.js:617)

@kittaakos
Copy link
Contributor Author

I also got this when I have started the Yangster application and opened a .yang.file. Did not happen on the second start:

console-window.ts:40 Yang: [Info  - 8:19:41 AM] Starting validation for input: 'a.yang'
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6
monaco-outline-contribution.ts:6 Uncaught (in promise) []
rejected @ monaco-outline-contribution.ts:6

@kittaakos
Copy link
Contributor Author

The last two outstanding issues were merged into theia-ide/yangster-electron#1. I am closing this.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants