UNPKG

rclnodejs

Version:
77 lines (66 loc) 2.43 kB
// Copyright (c) 2022 Wayne Parrott. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. 'use strict'; /** * enum style distribution identifiers */ const DistroId = { UNKNOWN: 0, ELOQUENT: 1911, FOXY: 2006, GALACTIC: 2105, HUMBLE: 2205, IRON: 2305, JAZZY: 2405, KILTED: 2505, ROLLING: 5000, }; const DistroNameIdMap = new Map(); DistroNameIdMap.set('eloquent', DistroId.ELOQUENT); DistroNameIdMap.set('foxy', DistroId.FOXY); DistroNameIdMap.set('galactic', DistroId.GALACTIC); DistroNameIdMap.set('humble', DistroId.HUMBLE); DistroNameIdMap.set('iron', DistroId.IRON); DistroNameIdMap.set('jazzy', DistroId.JAZZY); DistroNameIdMap.set('kilted', DistroId.KILTED); DistroNameIdMap.set('rolling', DistroId.ROLLING); const DistroUtils = { DistroId: DistroId, /** * Get the rclnodejs distro ID for a ROS 2 distro name. * @param {string|undefined} [distroName] - The ROS 2 short distro name, e.g., foxy, Defaults to the value of the ROS_DISTRO envar. * @return {number} Return the rclnodejs distro identifier */ getDistroId: function (distroName) { const dname = distroName ? distroName.toLowerCase() : this.getDistroName(); return DistroNameIdMap.has(dname) ? DistroNameIdMap.get(dname) : DistroId.UNKNOWN; }, /** * Get the short ROS 2 distro name associated with a rclnodejs distro ID. * @param {number|undefined} [distroId] - The rclnodejs distro identifier. Defaults to the value of the ROS_DISTRO envar. * @return {string|undefined} Return the name of the ROS distribution or undefined if unable to identify the distro. */ getDistroName: function (distroId) { if (!distroId) { return process.env.ROS_DISTRO; } return [...DistroNameIdMap].find(([, val]) => val == distroId)[0]; }, getKnownDistroNames: function () { return [...DistroNameIdMap.keys()]; }, }; module.exports = DistroUtils;