sync-cli-metadata.js 1.9 KB

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