feat(fuse-vhd): implement cli (#7310)
This commit is contained in:
parent
1b0fc62e2e
commit
5f73f09f59
28
@vates/fuse-vhd/.USAGE.md
Normal file
28
@vates/fuse-vhd/.USAGE.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Mount a vhd generated by xen-orchestra to filesystem
|
||||||
|
|
||||||
|
### Library
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { mount } from 'fuse-vhd'
|
||||||
|
|
||||||
|
// return a disposable, see promise-toolbox/Disposable
|
||||||
|
// unmount automatically when disposable is disposed
|
||||||
|
// in case of differencing VHD, it mounts the full chain
|
||||||
|
await mount(handler, diskId, mountPoint)
|
||||||
|
```
|
||||||
|
|
||||||
|
### cli
|
||||||
|
|
||||||
|
From the install folder :
|
||||||
|
|
||||||
|
```
|
||||||
|
cli.mjs <remoteUrl> <vhdPathInRemote> <mountPoint>
|
||||||
|
```
|
||||||
|
|
||||||
|
After installing the package
|
||||||
|
|
||||||
|
```
|
||||||
|
xo-fuse-vhd <remoteUrl> <vhdPathInRemote> <mountPoint>
|
||||||
|
```
|
||||||
|
|
||||||
|
remoteUrl can be found by using cli in `@xen-orchestra/fs` , for example a local remote will have a url like `file:///path/to/remote/root`
|
59
@vates/fuse-vhd/README.md
Normal file
59
@vates/fuse-vhd/README.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<!-- DO NOT EDIT MANUALLY, THIS FILE HAS BEEN GENERATED -->
|
||||||
|
|
||||||
|
# @vates/fuse-vhd
|
||||||
|
|
||||||
|
[](https://npmjs.org/package/@vates/fuse-vhd)  [](https://bundlephobia.com/result?p=@vates/fuse-vhd) [](https://npmjs.org/package/@vates/fuse-vhd)
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Installation of the [npm package](https://npmjs.org/package/@vates/fuse-vhd):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install --save @vates/fuse-vhd
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Mount a vhd generated by xen-orchestra to filesystem
|
||||||
|
|
||||||
|
### Library
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { mount } from 'fuse-vhd'
|
||||||
|
|
||||||
|
// return a disposable, see promise-toolbox/Disposable
|
||||||
|
// unmount automatically when disposable is disposed
|
||||||
|
// in case of differencing VHD, it mounts the full chain
|
||||||
|
await mount(handler, diskId, mountPoint)
|
||||||
|
```
|
||||||
|
|
||||||
|
### cli
|
||||||
|
|
||||||
|
From the install folder :
|
||||||
|
|
||||||
|
```
|
||||||
|
cli.mjs <remoteUrl> <vhdPathInRemote> <mountPoint>
|
||||||
|
```
|
||||||
|
|
||||||
|
After installing the package
|
||||||
|
|
||||||
|
```
|
||||||
|
xo-fuse-vhd <remoteUrl> <vhdPathInRemote> <mountPoint>
|
||||||
|
```
|
||||||
|
|
||||||
|
remoteUrl can be found by using cli in `@xen-orchestra/fs` , for example a local remote will have a url like `file:///path/to/remote/root`
|
||||||
|
|
||||||
|
## Contributions
|
||||||
|
|
||||||
|
Contributions are _very_ welcomed, either on the documentation or on
|
||||||
|
the code.
|
||||||
|
|
||||||
|
You may:
|
||||||
|
|
||||||
|
- report any [issue](https://github.com/vatesfr/xen-orchestra/issues)
|
||||||
|
you've encountered;
|
||||||
|
- fork and create a pull request.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[ISC](https://spdx.org/licenses/ISC) © [Vates SAS](https://vates.fr)
|
26
@vates/fuse-vhd/cli.mjs
Executable file
26
@vates/fuse-vhd/cli.mjs
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
import Disposable from 'promise-toolbox/Disposable'
|
||||||
|
import { getSyncedHandler } from '@xen-orchestra/fs'
|
||||||
|
|
||||||
|
import { mount } from './index.mjs'
|
||||||
|
|
||||||
|
async function* main([remoteUrl, vhdPathInRemote, mountPoint]) {
|
||||||
|
if (mountPoint === undefined) {
|
||||||
|
throw new TypeError('missing arg: cli <remoteUrl> <vhdPathInRemote> <mountPoint>')
|
||||||
|
}
|
||||||
|
const handler = yield getSyncedHandler({ url: remoteUrl })
|
||||||
|
const mounted = await mount(handler, vhdPathInRemote, mountPoint)
|
||||||
|
|
||||||
|
let disposePromise
|
||||||
|
process.on('SIGINT', async () => {
|
||||||
|
// ensure single dispose
|
||||||
|
if (!disposePromise) {
|
||||||
|
disposePromise = mounted.dispose()
|
||||||
|
}
|
||||||
|
await disposePromise
|
||||||
|
process.exit()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
Disposable.wrap(main)(process.argv.slice(2))
|
@ -19,11 +19,15 @@
|
|||||||
},
|
},
|
||||||
"main": "./index.mjs",
|
"main": "./index.mjs",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@xen-orchestra/fs": "^4.1.3",
|
||||||
"fuse-native": "^2.2.6",
|
"fuse-native": "^2.2.6",
|
||||||
"lru-cache": "^7.14.0",
|
"lru-cache": "^7.14.0",
|
||||||
"promise-toolbox": "^0.21.0",
|
"promise-toolbox": "^0.21.0",
|
||||||
"vhd-lib": "^4.9.0"
|
"vhd-lib": "^4.9.0"
|
||||||
},
|
},
|
||||||
|
"bin": {
|
||||||
|
"xo-fuse-vhd": "./cli.mjs"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postversion": "npm publish --access public"
|
"postversion": "npm publish --access public"
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
<!--packages-start-->
|
<!--packages-start-->
|
||||||
|
|
||||||
- @vates/decorate-with minor
|
- @vates/decorate-with minor
|
||||||
- @vates/fuse-vhd patch
|
- @vates/fuse-vhd minor
|
||||||
- @xen-orchestra/backups patch
|
- @xen-orchestra/backups patch
|
||||||
- @xen-orchestra/self-signed minor
|
- @xen-orchestra/self-signed minor
|
||||||
- @xen-orchestra/xapi minor
|
- @xen-orchestra/xapi minor
|
||||||
|
Loading…
Reference in New Issue
Block a user