sync-cli-metadata.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/usr/bin/env node
  2. // Copyright 2019-2024 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 tauri-cli
  9. rust binaries.
  10. */
  11. const { readFileSync, writeFileSync } = require('fs')
  12. const { resolve } = require('path')
  13. const packageNickname = process.argv[2]
  14. const filePath =
  15. packageNickname === '@tauri-apps/cli'
  16. ? `../../../tooling/cli/metadata-v2.json`
  17. : `../../tooling/cli/metadata-v2.json`
  18. const bump = process.argv[3]
  19. let index = null
  20. switch (bump) {
  21. case 'major':
  22. case 'premajor':
  23. index = 0
  24. break
  25. case 'minor':
  26. index = 1
  27. break
  28. case 'patch':
  29. index = 2
  30. break
  31. case 'prerelease':
  32. index = 3
  33. break
  34. default:
  35. throw new Error('unexpected bump ' + bump)
  36. }
  37. const inc = (version) => {
  38. const v = version.split('.')
  39. for (let i = 0; i < v.length; i++) {
  40. if (i === index) {
  41. v[i] = String(Number(v[i]) + 1)
  42. } else if (i > index) {
  43. v[i] = 0
  44. }
  45. }
  46. if (bump === 'premajor') {
  47. const pre = JSON.parse(
  48. readFileSync(resolve(filePath, '../../../.changes/pre.json'), 'utf-8')
  49. )
  50. return `${v.join('.')}-${pre.tag}.0`
  51. }
  52. return v.join('.')
  53. }
  54. // read file into js object
  55. const metadata = JSON.parse(readFileSync(filePath, 'utf-8'))
  56. // set field version
  57. let version
  58. if (packageNickname === '@tauri-apps/cli') {
  59. version = inc(metadata['cli.js'].version)
  60. metadata['cli.js'].version = version
  61. } else {
  62. version = inc(metadata[packageNickname])
  63. metadata[packageNickname] = version
  64. }
  65. writeFileSync(filePath, JSON.stringify(metadata, null, 2) + '\n')
  66. console.log(`wrote ${version} for ${packageNickname} into metadata-v2.json`)
  67. console.dir(metadata)