update.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. var fs = require('fs')
  2. var path = require('path')
  3. var chalk = require('chalk')
  4. var exec = require('child_process').exec
  5. var YAML = require('js-yaml')
  6. var webRoot = __dirname
  7. var uppyRoot = path.dirname(__dirname)
  8. var configPath = webRoot + '/themes/uppy/_config.yml'
  9. var version = require(uppyRoot + '/package.json').version
  10. var defaultConfig = {
  11. comment: 'Auto updated by update.js',
  12. uppy_version_anchor: '001',
  13. uppy_version: '0.0.1',
  14. uppy_bundle_kb_sizes: {
  15. 'uppy.js': 'N/A'
  16. },
  17. config: {}
  18. }
  19. var loadedConfig
  20. var buf
  21. try {
  22. buf = fs.readFileSync(configPath, 'utf-8')
  23. loadedConfig = YAML.safeLoad(buf)
  24. } catch (e) {
  25. }
  26. // Inject current Uppy version and sizes in website's _config.yml
  27. // @todo: Refer to actual minified builds in dist:
  28. var locations = {
  29. 'uppy.js': uppyRoot + '/dist/uppy.js',
  30. 'uppy.js.gz': uppyRoot + '/dist/uppy.js.gz',
  31. 'uppy.min.js': uppyRoot + '/dist/uppy.min.js',
  32. 'uppy.min.js.gz': uppyRoot + '/dist/uppy.min.js.gz',
  33. 'uppy.css': uppyRoot + '/dist/uppy.css',
  34. 'uppy.css.gz': uppyRoot + '/dist/uppy.css.gz',
  35. 'uppy.min.css': uppyRoot + '/dist/uppy.min.css',
  36. 'uppy.min.css.gz': uppyRoot + '/dist/uppy.min.css.gz'
  37. }
  38. var scanConfig = {}
  39. for (var type in locations) {
  40. var filepath = locations[type]
  41. var filesize = 0
  42. try {
  43. filesize = fs.statSync(filepath, 'utf-8').size
  44. filesize = (filesize / 1024).toFixed(2)
  45. } catch (e) {
  46. filesize = 'N/A'
  47. }
  48. if (!scanConfig.uppy_bundle_kb_sizes) {
  49. scanConfig.uppy_bundle_kb_sizes = {}
  50. }
  51. scanConfig.uppy_bundle_kb_sizes[type] = filesize
  52. }
  53. scanConfig['uppy_version'] = version
  54. scanConfig['uppy_version_anchor'] = version.replace(/[^\d]+/g, '')
  55. var saveConfig = Object.assign({}, defaultConfig, loadedConfig, scanConfig)
  56. fs.writeFileSync(configPath, YAML.safeDump(saveConfig), 'utf-8')
  57. console.info(chalk.green('✓ rewritten: '), chalk.dim(configPath))
  58. var cmds = [
  59. 'mkdir -p ' + webRoot + '/themes/uppy/source/uppy',
  60. 'cp -vfR ' + uppyRoot + '/dist/* ' + webRoot + '/themes/uppy/source/uppy/'
  61. ].join(' && ')
  62. exec(cmds, function (error, stdout, stderr) {
  63. if (error) {
  64. console.error(
  65. chalk.red('x failed to inject: '),
  66. chalk.dim('uppy bundle into site, because: ' + error)
  67. )
  68. return
  69. }
  70. stdout.trim().split('\n').forEach(function (line) {
  71. console.info(chalk.green('✓ injected: '), chalk.dim(line))
  72. })
  73. })