diff --git a/lib/roles/device.js b/lib/roles/device.js index 7068c6b6..ce394241 100644 --- a/lib/roles/device.js +++ b/lib/roles/device.js @@ -288,7 +288,7 @@ module.exports = function(options) { case wire.MessageType.GROUP: var message = wire.GroupMessage.decode(wrapper.message) , groupChannel = message.channel - if (wireutil.matchesRequirements(identity, message.requirements)) { + if (devutil.matchesRequirements(identity, message.requirements)) { channels.register(groupChannel, message.timeout) log.info('Subscribing to group channel "%s"', groupChannel) sub.subscribe(groupChannel) diff --git a/lib/util/devutil.js b/lib/util/devutil.js index fda873f0..cc1dd9fc 100644 --- a/lib/util/devutil.js +++ b/lib/util/devutil.js @@ -2,12 +2,44 @@ var util = require('util') var split = require('split') var Promise = require('bluebird') +var semver = require('semver') +var minimatch = require('minimatch') var wire = require('../wire') var pathutil = require('./pathutil') var devutil = module.exports = Object.create(null) +devutil.matchesRequirements = function(capabilities, requirements) { + return requirements.every(function(req) { + var capability = capabilities[req.name] + + if (!capability) { + return false + } + + switch (req.type) { + case wire.RequirementType.SEMVER: + if (!semver.satisfies(capability, req.value)) { + return false + } + break + case wire.RequirementType.GLOB: + if (!minimatch(capability, req.value)) { + return false + } + break + case wire.RequirementType.EXACT: + if (capability !== req.value) { + return false + } + break + default: + return false + } + }) +} + devutil.vendorFiles = function(identity) { return { bin: { diff --git a/lib/util/wireutil.js b/lib/util/wireutil.js index 95aa9a10..da11d78b 100644 --- a/lib/util/wireutil.js +++ b/lib/util/wireutil.js @@ -1,5 +1,3 @@ -var semver = require('semver') -var minimatch = require('minimatch') var uuid = require('node-uuid') module.exports = function(wire) { @@ -24,35 +22,6 @@ module.exports = function(wire) { , emulator: 'VIRTUAL' }[type]] } - , matchesRequirements: function(capabilities, requirements) { - return requirements.every(function(req) { - var capability = capabilities[req.name] - - if (!capability) { - return false - } - - switch (req.type) { - case wire.RequirementType.SEMVER: - if (!semver.satisfies(capability, req.value)) { - return false - } - break - case wire.RequirementType.GLOB: - if (!minimatch(capability, req.value)) { - return false - } - break - case wire.RequirementType.EXACT: - if (capability !== req.value) { - return false - } - break - default: - return false - } - }) - } , envelope: function(type, message) { return new wire.Envelope(type, message.encode()).encodeNB() }