src: add process.release.lts property
authorRod Vagg <rod@vagg.org>
Tue, 6 Oct 2015 12:31:14 +0000 (23:31 +1100)
committerJames M Snell <jasnell@gmail.com>
Mon, 12 Oct 2015 13:47:51 +0000 (06:47 -0700)
Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/3212

doc/api/process.markdown
src/node.cc
src/node_version.h
test/parallel/test-process-release.js [new file with mode: 0644]

index 7195376..8b2972c 100644 (file)
@@ -689,6 +689,11 @@ for the source tarball and headers-only tarball.
 
 * `name`: a string with a value that will always be `"node"` for Node.js. For
   legacy io.js releases, this will be `"io.js"`.
+* `lts`: a string with a value indicating the _codename_ of the LTS (Long-term
+  Support) line the current release is part of. This property only exists for
+  LTS releases and is `undefined` for all other release types, including stable
+  releases. Current valid values are:
+  - `"Argon"` for the v4.x LTS line beginning with v4.2.0.
 * `sourceUrl`: a complete URL pointing to a _.tar.gz_ file containing the
   source of the current release.
 * `headersUrl`: a complete URL pointing to a _.tar.gz_ file containing only
index 90d1088..b80996e 100644 (file)
@@ -2774,6 +2774,11 @@ void SetupProcessObject(Environment* env,
   READONLY_PROPERTY(process, "release", release);
   READONLY_PROPERTY(release, "name", OneByteString(env->isolate(), "node"));
 
+#if NODE_VERSION_IS_LTS
+  READONLY_PROPERTY(release, "lts",
+                    OneByteString(env->isolate(), NODE_VERSION_LTS_CODENAME));
+#endif
+
 // if this is a release build and no explicit base has been set
 // substitute the standard release download URL
 #ifndef NODE_RELEASE_URLBASE
index 694fbc0..1364b56 100644 (file)
@@ -5,6 +5,9 @@
 #define NODE_MINOR_VERSION 1
 #define NODE_PATCH_VERSION 3
 
+#define NODE_VERSION_IS_LTS 1
+#define NODE_VERSION_LTS_CODENAME "Argon"
+
 #define NODE_VERSION_IS_RELEASE 0
 
 #ifndef NODE_STRINGIFY
diff --git a/test/parallel/test-process-release.js b/test/parallel/test-process-release.js
new file mode 100644 (file)
index 0000000..af21daf
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const versionParts = process.versions.node.split('.');
+
+assert.equal(process.release.name, 'node');
+
+// it's expected that future LTS release lines will have additional
+// branches in here
+if (versionParts[0] === '4' && versionParts[1] >= 2) {
+  assert.equal(process.release.lts, 'Argon');
+} else {
+  assert.strictEqual(process.release.lts, undefined);
+}