ui/lib/shared/addon/utils/parse-volume.js

66 lines
1.2 KiB
JavaScript

import VolumeSpec from 'ui/models/volumespec';
// name:/incontainer:opt,opt2
// name:/incontainer
// /onhost:/incontainer:opt
// /onhost:/incontainer
// /incontainer
// @TODO support the windows clown-show (https://github.com/moby/moby/blob/master/volume/volume_windows.go)
export function parseVolumeSpec(str) {
str = str.trim();
let source='', dest='', opts='';
let parts = str.split(':');
switch ( parts.length ) {
case 1:
dest = parts[0];
break;
case 2:
source = parts[0];
dest = parts[1];
break;
case 3:
source = parts[0];
dest = parts[1];
opts = parts[2];
break;
default:
return null;
}
if ( !opts ) {
opts = 'rw';
}
return VolumeSpec.create({
source,
dest,
opts
});
}
export function stringifyVolumeSpec(spec) {
let source = (spec.source||'').trim();
let dest = (spec.dest||'').trim();
let opts = (spec.opts||'').trim();
// RW is the default
if ( opts === 'rw' ) {
opts = '';
}
if ( opts ) {
return source +':'+ dest +':'+ opts;
} else if ( source ) {
return source +':'+ dest;
} else {
return dest;
}
}
export default {
parseVolumeSpec,
stringifyVolumeSpec,
};