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
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()
|
|
})
|