hostAdminClient.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. export async function dockerCompose(cmd: string, ...args: string[]) {
  2. return await fetchJSON(`http://host-admin/docker/compose/${cmd}`, {
  3. method: 'POST',
  4. body: JSON.stringify({
  5. args,
  6. }),
  7. })
  8. }
  9. export async function mongoInit() {
  10. return await fetchJSON('http://host-admin/mongo/init', {
  11. method: 'POST',
  12. })
  13. }
  14. export async function resetData() {
  15. return await fetchJSON('http://host-admin/reset/data', {
  16. method: 'POST',
  17. })
  18. }
  19. export async function reconfigure({
  20. pro = false,
  21. version = 'latest',
  22. vars = {},
  23. withDataDir = false,
  24. }) {
  25. return await fetchJSON('http://host-admin/reconfigure', {
  26. method: 'POST',
  27. body: JSON.stringify({
  28. pro,
  29. version,
  30. vars,
  31. withDataDir,
  32. }),
  33. })
  34. }
  35. async function fetchJSON(
  36. input: RequestInfo,
  37. init?: RequestInit
  38. ): Promise<{ stdout: string; stderr: string }> {
  39. if (init?.body) {
  40. init.headers = { 'Content-Type': 'application/json' }
  41. }
  42. const res = await fetch(input, init)
  43. const { error, stdout, stderr } = await res.json()
  44. if (error) {
  45. console.error(input, init, 'failed:', error)
  46. if (stdout) console.log(stdout)
  47. if (stderr) console.warn(stderr)
  48. const err = new Error(error.message)
  49. Object.assign(err, error)
  50. throw err
  51. }
  52. return { stdout, stderr }
  53. }
  54. export async function runScript({
  55. cwd,
  56. script,
  57. args = [],
  58. }: {
  59. cwd: string
  60. script: string
  61. args?: string[]
  62. }) {
  63. return await fetchJSON('http://host-admin/run/script', {
  64. method: 'POST',
  65. body: JSON.stringify({
  66. cwd,
  67. script,
  68. args,
  69. }),
  70. })
  71. }