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