MCPcopy Create free account
hub / github.com/cloudflare/computer / resolveFuseBackend

Function resolveFuseBackend

packages/computerd/src/fuse/backend.ts:42–84  ·  view source on GitHub ↗
(
  mode: FuseMountMode,
  options: ResolveFuseBackendOptions = {},
)

Source from the content-addressed store, hash-verified

40}
41
42export async function resolveFuseBackend(
43 mode: FuseMountMode,
44 options: ResolveFuseBackendOptions = {},
45): Promise<FUSEBackend> {
46 const access = options.access ?? defaultAccess;
47 const platform = options.platform ?? process.platform;
48
49 if (mode === "none") return { kind: "none" };
50 if (mode === "shim") return { kind: "shim" };
51
52 if (mode === "fuse") {
53 if (platform !== "linux") {
54 throw new Error(`FUSE_MOUNT=fuse requires linux; got platform ${platform}`);
55 }
56 if (!(await canAccess(access, LINUX_FUSE_DEVICE))) {
57 throw new Error(
58 `FUSE_MOUNT=fuse is set but ${LINUX_FUSE_DEVICE} is not accessible; set FUSE_MOUNT=shim or FUSE_MOUNT=none to bypass`,
59 );
60 }
61 return { kind: "fuse" };
62 }
63
64 if (mode === "macfuse") {
65 if (platform !== "darwin") {
66 throw new Error(`FUSE_MOUNT=macfuse requires macOS; got platform ${platform}`);
67 }
68 if (!(await canAccess(access, MACFUSE_FILESYSTEM))) {
69 throw new Error(
70 `FUSE_MOUNT=macfuse is set but macFUSE is not installed; install macFUSE or set FUSE_MOUNT=shim`,
71 );
72 }
73 return { kind: "macfuse" };
74 }
75
76 // mode === "auto"
77 if (platform === "linux" && (await canAccess(access, LINUX_FUSE_DEVICE))) {
78 return { kind: "fuse" };
79 }
80 if (platform === "darwin" && (await canAccess(access, MACFUSE_FILESYSTEM))) {
81 return { kind: "macfuse" };
82 }
83 return { kind: "shim" };
84}
85
86async function canAccess(access: (path: string) => Promise<void>, path: string): Promise<boolean> {
87 try {

Callers 3

computerd.test.tsFile · 0.85
mainFunction · 0.85
backend.test.tsFile · 0.85

Calls 1

canAccessFunction · 0.85

Tested by

no test coverage detected