fix(config): strip leading slashes from collection location config (#2131)
This commit is contained in:
parent
686504adee
commit
efa650ccf8
@ -8,6 +8,7 @@ describe('config', () => {
|
|||||||
foo: 'bar',
|
foo: 'bar',
|
||||||
media_folder: 'path/to/media',
|
media_folder: 'path/to/media',
|
||||||
public_folder: '/path/to/media',
|
public_folder: '/path/to/media',
|
||||||
|
collections: [],
|
||||||
});
|
});
|
||||||
expect(applyDefaults(config)).toEqual(config.set('publish_mode', 'simple'));
|
expect(applyDefaults(config)).toEqual(config.set('publish_mode', 'simple'));
|
||||||
});
|
});
|
||||||
@ -18,6 +19,7 @@ describe('config', () => {
|
|||||||
publish_mode: 'complex',
|
publish_mode: 'complex',
|
||||||
media_folder: 'path/to/media',
|
media_folder: 'path/to/media',
|
||||||
public_folder: '/path/to/media',
|
public_folder: '/path/to/media',
|
||||||
|
collections: [],
|
||||||
});
|
});
|
||||||
expect(applyDefaults(config)).toEqual(config);
|
expect(applyDefaults(config)).toEqual(config);
|
||||||
});
|
});
|
||||||
@ -28,6 +30,7 @@ describe('config', () => {
|
|||||||
fromJS({
|
fromJS({
|
||||||
foo: 'bar',
|
foo: 'bar',
|
||||||
media_folder: 'path/to/media',
|
media_folder: 'path/to/media',
|
||||||
|
collections: [],
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
).toEqual(
|
).toEqual(
|
||||||
@ -36,6 +39,7 @@ describe('config', () => {
|
|||||||
publish_mode: 'simple',
|
publish_mode: 'simple',
|
||||||
media_folder: 'path/to/media',
|
media_folder: 'path/to/media',
|
||||||
public_folder: '/path/to/media',
|
public_folder: '/path/to/media',
|
||||||
|
collections: [],
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -47,6 +51,7 @@ describe('config', () => {
|
|||||||
foo: 'bar',
|
foo: 'bar',
|
||||||
media_folder: 'path/to/media',
|
media_folder: 'path/to/media',
|
||||||
public_folder: '/publib/path',
|
public_folder: '/publib/path',
|
||||||
|
collections: [],
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
).toEqual(
|
).toEqual(
|
||||||
@ -55,6 +60,39 @@ describe('config', () => {
|
|||||||
publish_mode: 'simple',
|
publish_mode: 'simple',
|
||||||
media_folder: 'path/to/media',
|
media_folder: 'path/to/media',
|
||||||
public_folder: '/publib/path',
|
public_folder: '/publib/path',
|
||||||
|
collections: [],
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should strip leading slashes from collection folder', () => {
|
||||||
|
expect(
|
||||||
|
applyDefaults(
|
||||||
|
fromJS({
|
||||||
|
collections: [{ folder: '/foo' }],
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
).toEqual(
|
||||||
|
fromJS({
|
||||||
|
publish_mode: 'simple',
|
||||||
|
public_folder: '/',
|
||||||
|
collections: [{ folder: 'foo' }],
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should strip leading slashes from collection files', () => {
|
||||||
|
expect(
|
||||||
|
applyDefaults(
|
||||||
|
fromJS({
|
||||||
|
collections: [{ files: [{ file: '/foo' }] }],
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
).toEqual(
|
||||||
|
fromJS({
|
||||||
|
publish_mode: 'simple',
|
||||||
|
public_folder: '/',
|
||||||
|
collections: [{ files: [{ file: 'foo' }] }],
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -30,19 +30,37 @@ export function applyDefaults(config) {
|
|||||||
return Map(defaults)
|
return Map(defaults)
|
||||||
.mergeDeep(config)
|
.mergeDeep(config)
|
||||||
.withMutations(map => {
|
.withMutations(map => {
|
||||||
/**
|
// Use `site_url` as default `display_url`.
|
||||||
* Use `site_url` as default `display_url`.
|
|
||||||
*/
|
|
||||||
if (!map.get('display_url') && map.get('site_url')) {
|
if (!map.get('display_url') && map.get('site_url')) {
|
||||||
map.set('display_url', map.get('site_url'));
|
map.set('display_url', map.get('site_url'));
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Use media_folder as default public_folder.
|
// Use media_folder as default public_folder.
|
||||||
*/
|
|
||||||
const defaultPublicFolder = `/${trimStart(map.get('media_folder'), '/')}`;
|
const defaultPublicFolder = `/${trimStart(map.get('media_folder'), '/')}`;
|
||||||
if (!map.get('public_folder')) {
|
if (!map.get('public_folder')) {
|
||||||
map.set('public_folder', defaultPublicFolder);
|
map.set('public_folder', defaultPublicFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Strip leading slash from collection folders and files
|
||||||
|
map.set(
|
||||||
|
'collections',
|
||||||
|
map.get('collections').map(collection => {
|
||||||
|
const folder = collection.get('folder');
|
||||||
|
if (folder) {
|
||||||
|
return collection.set('folder', trimStart(folder, '/'));
|
||||||
|
}
|
||||||
|
|
||||||
|
const files = collection.get('files');
|
||||||
|
if (files) {
|
||||||
|
return collection.set(
|
||||||
|
'files',
|
||||||
|
files.map(file => {
|
||||||
|
return file.set('file', trimStart(file.get('file'), '/'));
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user