You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
1.8 KiB

const Fuse = require('fuse-native')
const fs = require('fs')
const conn = require('./connector')
const config = require('./config')
const ops = {
readdir: require('./ops/readdir'),
getattr: require('./ops/getattr'),
mkdir: require('./ops/mkdir'),
rmdir: require('./ops/rmdir'),
open: require('./ops/open'),
read: require('./ops/read'),
release: require('./ops/release'),
create: require('./ops/create'),
unlink: require('./ops/unlink'),
rename: require('./ops/rename'),
write: require('./ops/write'),
flush: require('./ops/flush'),
getxattr: require('./ops/getxattr'),
setxattr: require('./ops/setxattr'),
removexattr: require('./ops/removexattr'),
listxattr: require('./ops/listxattr'),
fgetattr: require('./ops/fgetattr'),
symlink: require('./ops/symlink'),
readlink: require('./ops/readlink'),
chmod: require('./ops/chmod'),
}
;(async () => {
await config.initialize()
conn.initialize()
await conn.open()
await conn.authenticate(config.config.token)
const mnt = config.config.mountpoint
const fuse = new Fuse(mnt, ops, {debug: true, displayFolder: true})
await new Promise((res, rej) => {
fuse.mount(err => {
if (err) {
console.error(err)
rej(err)
} else res()
})
})
console.log('Mounted at ' + mnt)
await new Promise(res => {
process.on('SIGINT', () => {
res()
})
})
await new Promise((res, rej) => {
fuse.unmount(err => {
if (err) {
console.error(err)
rej(err)
} else {
res()
}
})
})
console.log('Unmounted.')
conn.close()
})().catch((e) => {
console.error(e)
conn.close()
})