mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-23 18:17:38 +00:00
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
var glob = require("glob");
|
|
const path = require("path");
|
|
var { exec } = require("child_process");
|
|
const _ = require("lodash");
|
|
|
|
function allSkinPaths() {
|
|
return new Promise((resolve, reject) => {
|
|
glob(
|
|
path.join(
|
|
__dirname,
|
|
"../../webamp/experiments/automatedScreenshots/skins/",
|
|
"**/*.wsz"
|
|
),
|
|
function(err, files) {
|
|
if (err != null) {
|
|
reject(err);
|
|
return;
|
|
}
|
|
resolve(files);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
async function filenamesForSkin(skinPath) {
|
|
const paths = await new Promise((resolve, reject) => {
|
|
exec(`zipinfo -1 ${skinPath}`, function(error, stdout, stderr) {
|
|
if (error != null) {
|
|
//reject(error);
|
|
//return;
|
|
}
|
|
resolve(stdout);
|
|
});
|
|
});
|
|
return paths.split("\n");
|
|
}
|
|
|
|
async function allFilenames() {
|
|
const skins = await allSkinPaths();
|
|
const paths = _.flatten(
|
|
await Promise.all(
|
|
skins.map(skin => {
|
|
return filenamesForSkin(skin);
|
|
})
|
|
)
|
|
);
|
|
|
|
const fileNames = paths.map(p => path.basename(p).toLowerCase());
|
|
const uniqueFileNames = {};
|
|
for (fileName of fileNames) {
|
|
uniqueFileNames[fileName] =
|
|
uniqueFileNames[fileName] == null ? 1 : uniqueFileNames[fileName] + 1;
|
|
}
|
|
const entries = Object.entries(uniqueFileNames);
|
|
const sorted = _.sortBy(entries, ([filename, count]) => count);
|
|
console.log(JSON.stringify(sorted, null, 2));
|
|
}
|
|
|
|
allFilenames();
|