mirror of
https://github.com/openstf/stf
synced 2025-10-04 02:09:32 +02:00
Clean up the owner plugin (now called 'group').
This commit is contained in:
parent
4676af51d7
commit
d5c96dc50d
6 changed files with 220 additions and 160 deletions
72
lib/util/grouputil.js
Normal file
72
lib/util/grouputil.js
Normal file
|
@ -0,0 +1,72 @@
|
|||
var util = require('util')
|
||||
|
||||
var Promise = require('bluebird')
|
||||
var semver = require('semver')
|
||||
var minimatch = require('minimatch')
|
||||
|
||||
var wire = require('../wire')
|
||||
|
||||
function RequirementMismatchError(name) {
|
||||
Error.call(this)
|
||||
this.name = 'RequirementMismatchError'
|
||||
this.message = util.format('Requirement mismatch for "%s"', name)
|
||||
Error.captureStackTrace(this, RequirementMismatchError)
|
||||
}
|
||||
|
||||
util.inherits(RequirementMismatchError, Error)
|
||||
|
||||
module.exports.RequirementMismatchError = RequirementMismatchError
|
||||
|
||||
function AlreadyGroupedError(name) {
|
||||
Error.call(this)
|
||||
this.name = 'AlreadyGroupedError'
|
||||
this.message = 'Already a member of another group'
|
||||
Error.captureStackTrace(this, AlreadyGroupedError)
|
||||
}
|
||||
|
||||
util.inherits(AlreadyGroupedError, Error)
|
||||
|
||||
module.exports.AlreadyGroupedError = AlreadyGroupedError
|
||||
|
||||
function NotGroupedError() {
|
||||
Error.call(this)
|
||||
this.name = 'NotGroupedError'
|
||||
this.message = 'Not a member of any group'
|
||||
Error.captureStackTrace(this, NotGroupedError)
|
||||
}
|
||||
|
||||
util.inherits(NotGroupedError, Error)
|
||||
|
||||
module.exports.NotGroupedError = NotGroupedError
|
||||
|
||||
module.exports.match = Promise.method(function(capabilities, requirements) {
|
||||
return requirements.every(function(req) {
|
||||
var capability = capabilities[req.name]
|
||||
|
||||
if (!capability) {
|
||||
throw new RequirementMismatchError(req.name)
|
||||
}
|
||||
|
||||
switch (req.type) {
|
||||
case wire.RequirementType.SEMVER:
|
||||
if (!semver.satisfies(capability, req.value)) {
|
||||
throw new RequirementMismatchError(req.name)
|
||||
}
|
||||
break
|
||||
case wire.RequirementType.GLOB:
|
||||
if (!minimatch(capability, req.value)) {
|
||||
throw new RequirementMismatchError(req.name)
|
||||
}
|
||||
break
|
||||
case wire.RequirementType.EXACT:
|
||||
if (capability !== req.value) {
|
||||
throw new RequirementMismatchError(req.name)
|
||||
}
|
||||
break
|
||||
default:
|
||||
throw new RequirementMismatchError(req.name)
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue