-
Notifications
You must be signed in to change notification settings - Fork 662
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: return runtime versions used by the application with a doctor h…
…ook (#1763)
- Loading branch information
Showing
6 changed files
with
80 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
#!/usr/bin/env node | ||
|
||
import { fileURLToPath } from 'url'; | ||
import fs from 'fs'; | ||
|
||
import { getProtocol } from './protocols.js'; | ||
|
||
/** | ||
* Implementation of the optional doctor script hook for the Slack CLI. | ||
* Printed as an object containing information about the system runtime. | ||
*/ | ||
|
||
if (fs.realpathSync(process.argv[1]) === fileURLToPath(import.meta.url)) { | ||
const protocol = getProtocol(process.argv.slice(1)); | ||
protocol.respond(JSON.stringify(doctor())); // eslint-disable-line no-console | ||
} | ||
|
||
/** | ||
* Standardized communication format between the SDK and CLI regarding runtimes. | ||
* @typedef DoctorResponse | ||
* @property {RuntimeVersion[]} versions - Existing system dependencies present. | ||
*/ | ||
|
||
/** | ||
* Information about all of the installed runtime dependencies. | ||
* @typedef RuntimeVersion | ||
* @property {string} name - Name of the runtime dependency. | ||
* @property {string} current - Version found on the system. | ||
*/ | ||
|
||
/** | ||
* Contains available hooks and other configurations available to the SDK. | ||
* @returns {DoctorResponse} Information about the hooks currently supported. | ||
*/ | ||
export default function doctor() { | ||
return { | ||
versions: [ | ||
{ | ||
name: 'node', | ||
current: process.versions.node, | ||
}, | ||
{ | ||
name: 'v8', | ||
current: process.versions.v8, | ||
}, | ||
{ | ||
name: 'modules', | ||
current: process.versions.modules, | ||
}, | ||
], | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import { describe, it } from 'mocha'; | ||
import assert from 'assert'; | ||
|
||
import doctor from './doctor.js'; | ||
|
||
describe('doctor implementation', async () => { | ||
it('should return versions of runtime dependencies', async () => { | ||
const { versions } = doctor(); | ||
assert(versions[0].name === 'node'); | ||
assert(versions[0].current === process.versions.node); | ||
assert(versions[1].name === 'v8'); | ||
assert(versions[1].current === process.versions.v8); | ||
assert(versions[2].name === 'modules'); | ||
assert(versions[2].current === process.versions.modules); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters