update.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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_dev_size: '0.0',
  15. uppy_min_size: '0.0',
  16. config: {}
  17. }
  18. var loadedConfig
  19. var buf
  20. try {
  21. buf = fs.readFileSync(configPath, 'utf-8')
  22. loadedConfig = YAML.safeLoad(buf)
  23. } catch (e) {
  24. }
  25. // Inject current Uppy version and sizes in website's _config.yml
  26. // @todo: Refer to actual minified builds in dist:
  27. var locations = {
  28. min: uppyRoot + '/dist/uppy.js',
  29. gz: uppyRoot + '/dist/uppy.js',
  30. dev: uppyRoot + '/dist/uppy.js',
  31. css: uppyRoot + '/dist/uppy.css'
  32. }
  33. var scanConfig = {}
  34. for (var type in locations) {
  35. var filepath = locations[type]
  36. var filesize = fs.statSync(filepath, 'utf-8').size
  37. scanConfig['uppy_' + type + '_size'] = (filesize / 1024).toFixed(2)
  38. }
  39. scanConfig['uppy_version'] = version
  40. scanConfig['uppy_version_anchor'] = version.replace(/[^\d]+/g, '')
  41. var saveConfig = Object.assign({}, defaultConfig, loadedConfig, scanConfig)
  42. fs.writeFileSync(configPath, YAML.safeDump(saveConfig), 'utf-8')
  43. console.info(chalk.green('✓ rewritten: '), chalk.dim(configPath))
  44. exec('cp -vfR ' + uppyRoot + '/dist/ ' + webRoot + '/themes/uppy/source/uppy', function (error, stdout, stderr) {
  45. if (error) {
  46. console.error(
  47. chalk.red('x failed to inject: '),
  48. chalk.dim('uppy bundle into site, because: ' + error)
  49. )
  50. return
  51. }
  52. stdout.trim().split('\n').forEach(function (line) {
  53. console.info(chalk.green('✓ injected: '), chalk.dim(line))
  54. })
  55. })