summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2019-09-04 11:12:21 +0900
committerRyan Dahl <ry@tinyclouds.org>2019-09-03 22:12:21 -0400
commit249db0f7d91d5e895906078f92b7d31c76b96121 (patch)
tree3a9dc5f04ce1bd01b4762f06ff24dd6127f26ae5
parente9908453df970b1cdf90483892bc9e794382fccc (diff)
Handle typescript version in rust (#2855)
-rw-r--r--cli/main.rs8
-rw-r--r--cli/ops/os.rs1
-rw-r--r--cli/version.rs11
-rw-r--r--deno_typescript/compiler_main.js1
-rw-r--r--js/main.ts13
-rw-r--r--js/os.ts1
-rw-r--r--js/version.ts12
7 files changed, 29 insertions, 18 deletions
diff --git a/cli/main.rs b/cli/main.rs
index 682d1055f..948f8544e 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -398,6 +398,12 @@ fn run_script(flags: DenoFlags, argv: Vec<String>) {
}
}
+fn version_command() {
+ println!("deno: {}", version::DENO);
+ println!("v8: {}", version::v8());
+ println!("typescript: {}", version::typescript());
+}
+
fn main() {
#[cfg(windows)]
ansi_term::enable_ansi_support().ok(); // For Windows 10
@@ -425,7 +431,7 @@ fn main() {
DenoSubcommand::Repl => run_repl(flags, argv),
DenoSubcommand::Run => run_script(flags, argv),
DenoSubcommand::Types => types_command(),
- DenoSubcommand::Version => run_repl(flags, argv),
+ DenoSubcommand::Version => version_command(),
DenoSubcommand::Xeval => xeval_command(flags, argv),
}
}
diff --git a/cli/ops/os.rs b/cli/ops/os.rs
index afb87539f..d644d893b 100644
--- a/cli/ops/os.rs
+++ b/cli/ops/os.rs
@@ -28,6 +28,7 @@ pub fn op_start(
"versionFlag": state.flags.version,
"v8Version": version::v8(),
"denoVersion": version::DENO,
+ "tsVersion": version::typescript(),
"noColor": !ansi::use_color(),
"xevalDelim": state.flags.xeval_delim.clone(),
})))
diff --git a/cli/version.rs b/cli/version.rs
index 4b9509af9..2c98a96d4 100644
--- a/cli/version.rs
+++ b/cli/version.rs
@@ -1,6 +1,17 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+use serde_json;
pub const DENO: &str = env!("CARGO_PKG_VERSION");
pub fn v8() -> &'static str {
deno::v8_version()
}
+
+pub fn typescript() -> String {
+ // TODO: By using include_str! we are including the package.json into
+ // the deno binary using serde to decode it at runtime. This is suboptimal
+ // in space and time. We need to extract the TypeScript version at compile
+ // time instead. This will be easier after #2608.
+ let data = include_str!("../node_modules/typescript/package.json");
+ let pkg: serde_json::Value = serde_json::from_str(data).unwrap();
+ pkg["version"].as_str().unwrap().to_string()
+}
diff --git a/deno_typescript/compiler_main.js b/deno_typescript/compiler_main.js
index 74b6a8dd5..1cc42072a 100644
--- a/deno_typescript/compiler_main.js
+++ b/deno_typescript/compiler_main.js
@@ -10,7 +10,6 @@ function main(configText, rootNames, replacements_) {
println(`>>> rootNames ${rootNames}`);
replacements = replacements_;
- replacements["DENO_REPLACE_TS_VERSION"] = ts.version;
println(`>>> replacements ${JSON.stringify(replacements)}`);
const host = new Host();
diff --git a/js/main.ts b/js/main.ts
index 31a7647df..6ce3551ac 100644
--- a/js/main.ts
+++ b/js/main.ts
@@ -1,5 +1,4 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
-
import "./globals.ts";
import { assert, log } from "./util.ts";
@@ -11,21 +10,11 @@ import { xevalMain, XevalFunc } from "./xeval.ts";
import { setVersions } from "./version.ts";
import { window } from "./window.ts";
import { setLocation } from "./location.ts";
-import * as Deno from "./deno.ts";
function denoMain(preserveDenoNamespace: boolean = true, name?: string): void {
const s = os.start(preserveDenoNamespace, name);
- setVersions(s.denoVersion, s.v8Version);
-
- // handle `--version`
- if (s.versionFlag) {
- const { console } = window;
- console.log("deno:", Deno.version.deno);
- console.log("v8:", Deno.version.v8);
- console.log("typescript:", Deno.version.typescript);
- os.exit(0);
- }
+ setVersions(s.denoVersion, s.v8Version, s.tsVersion);
setPrepareStackTrace(Error);
diff --git a/js/os.ts b/js/os.ts
index dbfbf3c88..b5392fc33 100644
--- a/js/os.ts
+++ b/js/os.ts
@@ -59,6 +59,7 @@ interface Start {
versionFlag: boolean;
denoVersion: string;
v8Version: string;
+ tsVersion: string;
noColor: boolean;
xevalDelim: string;
}
diff --git a/js/version.ts b/js/version.ts
index 3ceade24e..08ac58122 100644
--- a/js/version.ts
+++ b/js/version.ts
@@ -8,17 +8,21 @@ interface Version {
export const version: Version = {
deno: "",
v8: "",
- // This string will be replaced by rollup
- typescript: `DENO_REPLACE_TS_VERSION`
+ typescript: ""
};
/**
- * Sets the deno and v8 versions and freezes the version object.
+ * Sets the deno, v8, and typescript versions and freezes the version object.
* @internal
*/
-export function setVersions(denoVersion: string, v8Version: string): void {
+export function setVersions(
+ denoVersion: string,
+ v8Version: string,
+ tsVersion: string
+): void {
version.deno = denoVersion;
version.v8 = v8Version;
+ version.typescript = tsVersion;
Object.freeze(version);
}