manifest-data.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. var fs = require('fs');
  2. var path = require('path');
  3. var basePath = path.resolve(__dirname, '..');
  4. var testDataDir = path.join(basePath,'test');
  5. var manifestDir = path.join(basePath, 'utils', 'manifest');
  6. var manifestFilepath = path.join(testDataDir, 'test-manifests.js');
  7. var build = function() {
  8. var manifests = 'export default {\n';
  9. var files = fs.readdirSync(manifestDir);
  10. while (files.length > 0) {
  11. var file = path.resolve(manifestDir, files.shift());
  12. var extname = path.extname(file);
  13. if (extname === '.m3u8') {
  14. // translate this manifest
  15. manifests += ' \'' + path.basename(file, '.m3u8') + '\': ';
  16. manifests += fs.readFileSync(file, 'utf8')
  17. .split(/\r\n|\n/)
  18. // quote and concatenate
  19. .map(function(line) {
  20. return ' \'' + line + '\\n\' +\n';
  21. }).join('')
  22. // strip leading spaces and the trailing '+'
  23. .slice(4, -3);
  24. manifests += ',\n';
  25. } else {
  26. console.log('Unknown file ' + file + ' found in manifest dir ' + manifestDir);
  27. }
  28. }
  29. // clean up and close the objects
  30. manifests = manifests.slice(0, -2);
  31. manifests += '\n};\n';
  32. fs.writeFileSync(manifestFilepath, manifests);
  33. console.log('Wrote test data file ' + manifestFilepath);
  34. };
  35. var watch = function() {
  36. build();
  37. fs.watch(manifestDir, function(event, filename) {
  38. console.log('files in manifest dir were changed rebuilding manifest data');
  39. build();
  40. });
  41. };
  42. var clean = function() {
  43. try {
  44. fs.unlinkSync(manifestFilepath);
  45. } catch(e) {
  46. console.log(e);
  47. }
  48. }
  49. module.exports = {
  50. build: build,
  51. watch: watch,
  52. clean: clean
  53. };