const bower_components = './src/bower_components'; const dependencies = require('./src/bower.json').dependencies; const outputJson = require('./bower-pkg-versions.json'); const fs = require('fs'); const path = require('path'); const modules = fs.readdirSync(bower_components); function getAlternativeSourceOrVersion(dir, json) { // console.log(`Module ${dir} has repository but not repository.url`); try { // console.log(`Going to try looking for ${dir} _source`); outputJson[json.name] = `${json['_source']}#${json.version}`; } catch (e) { // console.log('Source URL cannot be found in either bower.json or .bower.json "repository" or "_source"', dir); try { outputJson[json.name] = json.version; } catch (e) { console.log(`Zero info available for module ${dir}!`) } } } modules.forEach((dir) => { var json; var thisBower = path.resolve(path.join(bower_components, dir, 'bower.json')); try { json = require(thisBower); } catch (e) { try { thisBower = path.resolve(path.join(bower_components, dir, '.bower.json')); json = require(thisBower); } catch (e) { console.log(e); } } if (!outputJson[json.name]) { try { outputJson[json.name] = `${json.repository}#${json.version}`; } catch (e) { getAlternativeSourceOrVersion(dir, json) } try { outputJson[json.name] = `${json.repository.url}#${json.version}`; } catch (e) { getAlternativeSourceOrVersion(dir, json) } } }); // console.log(outputJson); fs.writeFileSync('bower-pkg-versions.json', JSON.stringify(outputJson));