@swell/cli
Version:
Swell's command line interface/utility
48 lines (47 loc) • 1.42 kB
JavaScript
import { titleize } from 'inflection';
const validContentViewValues = ['list', 'edit', 'new'];
const validateViews = (values, onError) => {
const invalid = values.filter((v) => !validContentViewValues.includes(v));
if (invalid.length > 0) {
onError(`Invalid view(s): ${invalid.join(', ')}\n\nValid views: ${validContentViewValues.join(', ')}\n\nExample: swell create content visitors -v list,edit,new -y`, { exit: 1 });
}
};
const parseViews = (views) => {
if (views.length === 0) {
return [];
}
const viewResponse = [];
for (const viewId of views) {
viewResponse.push({
id: viewId,
...(viewId === 'list' ? { nav: {} } : {}),
fields: [],
tabs: [],
});
}
return viewResponse;
};
const parseFields = (fields) => {
if (fields.length === 0) {
return [];
}
const fieldResponse = [];
for (const fieldPair of fields) {
if (fieldPair.includes(':')) {
const [id, type] = fieldPair.split(':');
fieldResponse.push({
id,
label: titleize(id),
type,
});
}
else {
fieldResponse.push({
id: fieldPair,
label: titleize(fieldPair),
});
}
}
return fieldResponse;
};
export { parseFields, parseViews, validateViews };