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.

66 lines
1.5 KiB

const uuid = require('uuid').v4
const Fuse = require('fuse-native')
const fs = require('fs').promises
const conn = require('./connector')
const token = '0257387b959a4cbfa7b3a36fea7d8cfb97e435e2d6454a96992470e5ba107d29b35bed8c21dc4272b4d8d6eebc9a0f5f17b707c37e57442db9ab56775f449128'
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'),
}
;(async () => {
await conn.open()
await conn.authenticate(token)
const mnt = '/tmp/piedev-' + uuid()
await fs.mkdir(mnt)
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()
})