From 97b266a85d1412cb80ea05b7756547d058523d62 Mon Sep 17 00:00:00 2001 From: akaroml Date: Thu, 28 Mar 2019 11:09:28 +0800 Subject: [PATCH 1/3] Suggest JDK --- package-lock.json | 94 +++++++++++++++++++++++++++++----- package.json | 4 ++ src/java-runtime/index.ts | 21 +++++++- src/overview/assets/index.html | 64 +++++++++++++++++++++-- src/overview/assets/index.ts | 17 ++++++ src/overview/index.ts | 7 ++- tsconfig.json | 1 + 7 files changed, 189 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4abd65cc..95d52415 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,12 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", + "dev": true + }, "@types/expand-tilde": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/expand-tilde/-/expand-tilde-2.0.0.tgz", @@ -19,6 +25,15 @@ "@types/node": "*" } }, + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/jquery": { "version": "3.3.24", "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.24.tgz", @@ -40,6 +55,27 @@ "integrity": "sha512-ApUp/Eo/D4lQ/8yI+dlNVz1LslAdvycBbKmsr77sw2Ovymyj0nYowS+xuTChzfGdnEdcqBTPM2OtKmvTFKIXPA==", "dev": true }, + "@types/request": { + "version": "2.48.1", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.1.tgz", + "integrity": "sha512-ZgEZ1TiD+KGA9LiAAPPJL68Id2UWfeSO62ijSXZjFJArVV+2pKcsVHmrcu+1oiE3q6eDGiFiSolRc4JHoerBBg==", + "dev": true, + "requires": { + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" + } + }, + "@types/request-promise-native": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@types/request-promise-native/-/request-promise-native-1.0.15.tgz", + "integrity": "sha512-uYPjTChD9TpjlvbBjNpZfNc64TBejBS52u7pbxhQLnlxw+5Em7wLb6DU2wdJVhJ2Mou7v50N0qgL4Gia5mmRYg==", + "dev": true, + "requires": { + "@types/request": "*" + } + }, "@types/semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", @@ -52,6 +88,12 @@ "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", "dev": true }, + "@types/tough-cookie": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz", + "integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.7.11", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", @@ -4869,18 +4911,18 @@ } }, "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", "dev": true }, "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", "dev": true, "requires": { - "mime-db": "~1.37.0" + "mime-db": "~1.38.0" } }, "mimic-fn": { @@ -7871,9 +7913,9 @@ "dev": true }, "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", "dev": true }, "public-encrypt": { @@ -8234,6 +8276,26 @@ "uuid": "^3.3.2" } }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -8760,9 +8822,9 @@ "dev": true }, "sshpk": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", - "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -8853,6 +8915,12 @@ } } }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", diff --git a/package.json b/package.json index 03791272..2fdd966d 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,8 @@ "@types/jquery": "^3.3.24", "@types/node": "^8.10.40", "@types/path-exists": "^3.0.0", + "@types/request": "^2.48.1", + "@types/request-promise-native": "^1.0.15", "@types/semver": "^5.5.0", "autoprefixer": "^8.5.1", "bootstrap": "^4.3.1", @@ -78,6 +80,8 @@ "path-exists": "^3.0.0", "popper.js": "^1.14.7", "postcss-loader": "^2.1.5", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", "sass-loader": "^7.0.1", "style-loader": "^0.21.0", "ts-loader": "^4.3.0", diff --git a/src/java-runtime/index.ts b/src/java-runtime/index.ts index 056f3469..80592c65 100644 --- a/src/java-runtime/index.ts +++ b/src/java-runtime/index.ts @@ -6,6 +6,7 @@ import * as cp from "child_process"; import * as path from "path"; import * as expandTilde from "expand-tilde"; import * as pathExists from "path-exists"; +import * as request from "request-promise-native"; import findJavaHome = require("find-java-home"); const isWindows = process.platform.indexOf("win") === 0; @@ -37,7 +38,7 @@ async function getJavaVersion(javaHome: string | undefined): Promise { } async function findPossibleJdkInstallations(): Promise<{[location : string] : string | undefined}> { - return new Promise((resolve, reject) => { + return new Promise<{[location : string] : string | undefined}>((resolve, reject) => { const javaHomeEntries: {[location : string] : string | undefined} = { "java.home": vscode.workspace.getConfiguration().get("java.home", undefined), "JDK_HOME": process.env["JDK_HOME"], @@ -77,3 +78,21 @@ export async function validateJavaRuntime() { return false; } + +export async function suggestOpenJdk(jdkVersion: string = "openjdk8", impl: string = "hotspot") { + let os: string = process.platform; + if (os === "win32") { + os = "windows"; + } else if (os === "darwin") { + os = "mac"; + } else { + os = "linux"; + } + + let arch = process.arch; + + return await request.get({ + uri: `https://api.adoptopenjdk.net/v2/info/releases/${jdkVersion}?openjdk_impl=${impl}&arch=${arch}&os=${os}&type=jdk&release=latest`, + json: true + }); +} diff --git a/src/overview/assets/index.html b/src/overview/assets/index.html index e659b73d..a4904cf4 100644 --- a/src/overview/assets/index.html +++ b/src/overview/assets/index.html @@ -17,9 +17,67 @@

Java Overview

-