You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.7 KiB
57 lines
1.7 KiB
const osmBoundarySources = require('./osmBoundarySources.json')
|
|
const zoneCfg = require('./timezones.json')
|
|
const expectedZoneOverlaps = require('./expectedZoneOverlaps.json')
|
|
|
|
let numErrors = 0
|
|
|
|
const sourcesUsage = {}
|
|
Object.keys(osmBoundarySources).forEach(source => {
|
|
sourcesUsage[source] = false
|
|
})
|
|
|
|
Object.keys(zoneCfg).forEach(zone => {
|
|
zoneCfg[zone].forEach((operation, idx) => {
|
|
if (operation.source === 'overpass') {
|
|
// check if source is defined
|
|
if (!osmBoundarySources[operation.id]) {
|
|
numErrors++
|
|
|
|
console.error(`No osmBoundarySources config found for entry: ${operation.id}`)
|
|
} else {
|
|
sourcesUsage[operation.id] = true
|
|
}
|
|
} else if (operation.source.indexOf('manual') > -1 &&
|
|
(!operation.description ||
|
|
operation.description.length < 3)) {
|
|
numErrors++
|
|
|
|
console.error(`No description of ${operation.source} for operation ${idx} of zone: ${zone}`)
|
|
}
|
|
})
|
|
})
|
|
|
|
// check for sources not used in timezone building
|
|
Object.keys(sourcesUsage).forEach(source => {
|
|
if (!sourcesUsage[source]) {
|
|
numErrors++
|
|
console.error(`osmBoundarySources config "${source}" is never used in timezone boundary building`)
|
|
}
|
|
})
|
|
|
|
// Make sure all expected zone overlaps have a description
|
|
Object.keys(expectedZoneOverlaps).forEach(zoneOverlap => {
|
|
expectedZoneOverlaps[zoneOverlap].forEach((overlapBounds, idx) => {
|
|
if (!overlapBounds.description || overlapBounds.description.length < 3) {
|
|
numErrors++
|
|
console.error(`Expected overlap #${idx} of zones ${zoneOverlap} missing description`)
|
|
}
|
|
})
|
|
})
|
|
|
|
if (numErrors > 0) {
|
|
console.error(`${numErrors} errors found`)
|
|
process.exit(1)
|
|
} else {
|
|
console.log('No linting errors!')
|
|
}
|