index.js 7.3 KB

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