groups.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Creates data for groups.json
  2. const xlsx = require('xlsx')
  3. const fs = require('fs')
  4. const path = require('path')
  5. const [fileName, sheetName] = process.argv.slice(2)
  6. // Pick the xlsx file
  7. const filePath = path.resolve(__dirname, fileName)
  8. const file = xlsx.readFile(filePath)
  9. if (!file.SheetNames.includes(sheetName)) {
  10. throw new Error('Sheet not found!')
  11. }
  12. const workSheet = Object.values(file.Sheets)[file.SheetNames.indexOf(sheetName)]
  13. // Convert to JSON
  14. const workSheetJSON = xlsx.utils.sheet_to_json(workSheet)
  15. const groupPlans = workSheetJSON.filter(data =>
  16. data.plan_code.startsWith('group')
  17. )
  18. const currencies = [
  19. 'AUD',
  20. 'CAD',
  21. 'CHF',
  22. 'DKK',
  23. 'EUR',
  24. 'GBP',
  25. 'NOK',
  26. 'NZD',
  27. 'SEK',
  28. 'SGD',
  29. 'USD',
  30. ]
  31. const sizes = ['2', '3', '4', '5', '10', '20', '50']
  32. const result = {}
  33. for (const type1 of ['educational', 'enterprise']) {
  34. result[type1] = {}
  35. for (const type2 of ['professional', 'collaborator']) {
  36. result[type1][type2] = {}
  37. for (const currency of currencies) {
  38. result[type1][type2][currency] = {}
  39. for (const size of sizes) {
  40. const planCode = `group_${type2}_${size}_${type1}`
  41. const plan = groupPlans.find(data => data.plan_code === planCode)
  42. if (!plan) throw new Error(`Missing plan: ${planCode}`)
  43. result[type1][type2][currency][size] = {
  44. price_in_cents: plan[currency] * 100,
  45. }
  46. }
  47. }
  48. }
  49. }
  50. const output = JSON.stringify(result, null, 2)
  51. const dir = './output'
  52. if (!fs.existsSync(dir)) {
  53. fs.mkdirSync(dir)
  54. }
  55. fs.writeFileSync(`${dir}/groups.json`, output)
  56. console.log('Completed!')