index.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. // Copyright 2019-2024 Tauri Programme within The Commons Conservancy
  2. // SPDX-License-Identifier: Apache-2.0
  3. // SPDX-License-Identifier: MIT
  4. /* tslint:disable */
  5. /* eslint-disable */
  6. /* prettier-ignore */
  7. /* auto-generated by NAPI-RS */
  8. const { existsSync, readFileSync } = require('fs')
  9. const { join } = require('path')
  10. const { platform, arch } = process
  11. let nativeBinding = null
  12. let localFileExisted = false
  13. let loadError = null
  14. function isMusl() {
  15. // For Node 10
  16. if (!process.report || typeof process.report.getReport !== 'function') {
  17. try {
  18. const lddPath = require('child_process').execSync('which ldd').toString().trim()
  19. return readFileSync(lddPath, 'utf8').includes('musl')
  20. } catch (e) {
  21. return true
  22. }
  23. } else {
  24. const { glibcVersionRuntime } = process.report.getReport().header
  25. return !glibcVersionRuntime
  26. }
  27. }
  28. switch (platform) {
  29. case 'android':
  30. switch (arch) {
  31. case 'arm64':
  32. localFileExisted = existsSync(join(__dirname, 'cli.android-arm64.node'))
  33. try {
  34. if (localFileExisted) {
  35. nativeBinding = require('./cli.android-arm64.node')
  36. } else {
  37. nativeBinding = require('@tauri-apps/cli-android-arm64')
  38. }
  39. } catch (e) {
  40. loadError = e
  41. }
  42. break
  43. case 'arm':
  44. localFileExisted = existsSync(join(__dirname, 'cli.android-arm-eabi.node'))
  45. try {
  46. if (localFileExisted) {
  47. nativeBinding = require('./cli.android-arm-eabi.node')
  48. } else {
  49. nativeBinding = require('@tauri-apps/cli-android-arm-eabi')
  50. }
  51. } catch (e) {
  52. loadError = e
  53. }
  54. break
  55. default:
  56. throw new Error(`Unsupported architecture on Android ${arch}`)
  57. }
  58. break
  59. case 'win32':
  60. switch (arch) {
  61. case 'x64':
  62. localFileExisted = existsSync(
  63. join(__dirname, 'cli.win32-x64-msvc.node')
  64. )
  65. try {
  66. if (localFileExisted) {
  67. nativeBinding = require('./cli.win32-x64-msvc.node')
  68. } else {
  69. nativeBinding = require('@tauri-apps/cli-win32-x64-msvc')
  70. }
  71. } catch (e) {
  72. loadError = e
  73. }
  74. break
  75. case 'ia32':
  76. localFileExisted = existsSync(
  77. join(__dirname, 'cli.win32-ia32-msvc.node')
  78. )
  79. try {
  80. if (localFileExisted) {
  81. nativeBinding = require('./cli.win32-ia32-msvc.node')
  82. } else {
  83. nativeBinding = require('@tauri-apps/cli-win32-ia32-msvc')
  84. }
  85. } catch (e) {
  86. loadError = e
  87. }
  88. break
  89. case 'arm64':
  90. localFileExisted = existsSync(
  91. join(__dirname, 'cli.win32-arm64-msvc.node')
  92. )
  93. try {
  94. if (localFileExisted) {
  95. nativeBinding = require('./cli.win32-arm64-msvc.node')
  96. } else {
  97. nativeBinding = require('@tauri-apps/cli-win32-arm64-msvc')
  98. }
  99. } catch (e) {
  100. loadError = e
  101. }
  102. break
  103. default:
  104. throw new Error(`Unsupported architecture on Windows: ${arch}`)
  105. }
  106. break
  107. case 'darwin':
  108. localFileExisted = existsSync(join(__dirname, 'cli.darwin-universal.node'))
  109. try {
  110. if (localFileExisted) {
  111. nativeBinding = require('./cli.darwin-universal.node')
  112. } else {
  113. nativeBinding = require('@tauri-apps/cli-darwin-universal')
  114. }
  115. break
  116. } catch {}
  117. switch (arch) {
  118. case 'x64':
  119. localFileExisted = existsSync(join(__dirname, 'cli.darwin-x64.node'))
  120. try {
  121. if (localFileExisted) {
  122. nativeBinding = require('./cli.darwin-x64.node')
  123. } else {
  124. nativeBinding = require('@tauri-apps/cli-darwin-x64')
  125. }
  126. } catch (e) {
  127. loadError = e
  128. }
  129. break
  130. case 'arm64':
  131. localFileExisted = existsSync(
  132. join(__dirname, 'cli.darwin-arm64.node')
  133. )
  134. try {
  135. if (localFileExisted) {
  136. nativeBinding = require('./cli.darwin-arm64.node')
  137. } else {
  138. nativeBinding = require('@tauri-apps/cli-darwin-arm64')
  139. }
  140. } catch (e) {
  141. loadError = e
  142. }
  143. break
  144. default:
  145. throw new Error(`Unsupported architecture on macOS: ${arch}`)
  146. }
  147. break
  148. case 'freebsd':
  149. if (arch !== 'x64') {
  150. throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
  151. }
  152. localFileExisted = existsSync(join(__dirname, 'cli.freebsd-x64.node'))
  153. try {
  154. if (localFileExisted) {
  155. nativeBinding = require('./cli.freebsd-x64.node')
  156. } else {
  157. nativeBinding = require('@tauri-apps/cli-freebsd-x64')
  158. }
  159. } catch (e) {
  160. loadError = e
  161. }
  162. break
  163. case 'linux':
  164. switch (arch) {
  165. case 'x64':
  166. if (isMusl()) {
  167. localFileExisted = existsSync(
  168. join(__dirname, 'cli.linux-x64-musl.node')
  169. )
  170. try {
  171. if (localFileExisted) {
  172. nativeBinding = require('./cli.linux-x64-musl.node')
  173. } else {
  174. nativeBinding = require('@tauri-apps/cli-linux-x64-musl')
  175. }
  176. } catch (e) {
  177. loadError = e
  178. }
  179. } else {
  180. localFileExisted = existsSync(
  181. join(__dirname, 'cli.linux-x64-gnu.node')
  182. )
  183. try {
  184. if (localFileExisted) {
  185. nativeBinding = require('./cli.linux-x64-gnu.node')
  186. } else {
  187. nativeBinding = require('@tauri-apps/cli-linux-x64-gnu')
  188. }
  189. } catch (e) {
  190. loadError = e
  191. }
  192. }
  193. break
  194. case 'arm64':
  195. if (isMusl()) {
  196. localFileExisted = existsSync(
  197. join(__dirname, 'cli.linux-arm64-musl.node')
  198. )
  199. try {
  200. if (localFileExisted) {
  201. nativeBinding = require('./cli.linux-arm64-musl.node')
  202. } else {
  203. nativeBinding = require('@tauri-apps/cli-linux-arm64-musl')
  204. }
  205. } catch (e) {
  206. loadError = e
  207. }
  208. } else {
  209. localFileExisted = existsSync(
  210. join(__dirname, 'cli.linux-arm64-gnu.node')
  211. )
  212. try {
  213. if (localFileExisted) {
  214. nativeBinding = require('./cli.linux-arm64-gnu.node')
  215. } else {
  216. nativeBinding = require('@tauri-apps/cli-linux-arm64-gnu')
  217. }
  218. } catch (e) {
  219. loadError = e
  220. }
  221. }
  222. break
  223. case 'arm':
  224. localFileExisted = existsSync(
  225. join(__dirname, 'cli.linux-arm-gnueabihf.node')
  226. )
  227. try {
  228. if (localFileExisted) {
  229. nativeBinding = require('./cli.linux-arm-gnueabihf.node')
  230. } else {
  231. nativeBinding = require('@tauri-apps/cli-linux-arm-gnueabihf')
  232. }
  233. } catch (e) {
  234. loadError = e
  235. }
  236. break
  237. default:
  238. throw new Error(`Unsupported architecture on Linux: ${arch}`)
  239. }
  240. break
  241. default:
  242. throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
  243. }
  244. if (!nativeBinding) {
  245. if (loadError) {
  246. throw loadError
  247. }
  248. throw new Error(`Failed to load native binding`)
  249. }
  250. const { run, logError } = nativeBinding
  251. module.exports.run = run
  252. module.exports.logError = logError