sync-cli-metadata.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env node
  2. // Copyright 2019-2023 Tauri Programme within The Commons Conservancy
  3. // SPDX-License-Identifier: Apache-2.0
  4. // SPDX-License-Identifier: MIT
  5. /*
  6. This script is solely intended to be run as part of the `covector version` step to
  7. keep the `../tooling/cli/metadata.json` up to date with other version bumps. Long term
  8. we should look to find a more "rusty way" to import / "pin" a version value in our cli.rs
  9. rust binaries.
  10. */
  11. const { readFileSync, writeFileSync } = require('fs')
  12. const packageNickname = process.argv[2]
  13. const filePath =
  14. packageNickname === 'cli.js'
  15. ? `../../../tooling/cli/metadata.json`
  16. : `../../tooling/cli/metadata.json`
  17. const bump = process.argv[3]
  18. let index = null
  19. switch (bump) {
  20. case 'major':
  21. index = 0
  22. break
  23. case 'minor':
  24. index = 1
  25. break
  26. case 'patch':
  27. index = 2
  28. break
  29. default:
  30. throw new Error('unexpected bump ' + bump)
  31. }
  32. const inc = (version) => {
  33. const v = version.split('.')
  34. for (let i = 0; i < v.length; i++) {
  35. if (i === index) {
  36. v[i] = String(Number(v[i]) + 1)
  37. } else if (i > index) {
  38. v[i] = 0
  39. }
  40. }
  41. return v.join('.')
  42. }
  43. // read file into js object
  44. const metadata = JSON.parse(readFileSync(filePath, 'utf-8'))
  45. // set field version
  46. let version
  47. if (packageNickname === 'cli.js') {
  48. version = inc(metadata[packageNickname].version)
  49. metadata[packageNickname].version = version
  50. } else {
  51. version = inc(metadata[packageNickname])
  52. metadata[packageNickname] = version
  53. }
  54. writeFileSync(filePath, JSON.stringify(metadata, null, 2) + '\n')
  55. console.log(`wrote ${version} for ${packageNickname} into metadata.json`)
  56. console.dir(metadata)