2021-06-16 17:05:51 +03:00
|
|
|
const path = require('path');
|
|
|
|
|
2021-06-18 22:34:14 +03:00
|
|
|
/**
|
|
|
|
* @callback isPrivacyDisabledFn
|
|
|
|
* @param {string} privacyFlag - the flag to be looked up
|
|
|
|
* @returns {boolean}
|
|
|
|
*/
|
2021-06-16 17:05:51 +03:00
|
|
|
const isPrivacyDisabled = function isPrivacyDisabled(privacyFlag) {
|
|
|
|
if (!this.get('privacy')) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// CASE: disable all privacy features
|
|
|
|
if (this.get('privacy').useTinfoil === true) {
|
|
|
|
// CASE: you can still enable single features
|
|
|
|
if (this.get('privacy')[privacyFlag] === true) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this.get('privacy')[privacyFlag] === false;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
2021-06-18 22:34:14 +03:00
|
|
|
* @callback getContentPathFn
|
|
|
|
* @param {string} type - the type of context you want the path for
|
|
|
|
* @returns {string}
|
2021-06-16 17:05:51 +03:00
|
|
|
*/
|
|
|
|
const getContentPath = function getContentPath(type) {
|
|
|
|
switch (type) {
|
|
|
|
case 'images':
|
|
|
|
return path.join(this.get('paths:contentPath'), 'images/');
|
|
|
|
case 'themes':
|
|
|
|
return path.join(this.get('paths:contentPath'), 'themes/');
|
|
|
|
case 'adapters':
|
|
|
|
return path.join(this.get('paths:contentPath'), 'adapters/');
|
|
|
|
case 'logs':
|
|
|
|
return path.join(this.get('paths:contentPath'), 'logs/');
|
|
|
|
case 'data':
|
|
|
|
return path.join(this.get('paths:contentPath'), 'data/');
|
|
|
|
case 'settings':
|
|
|
|
return path.join(this.get('paths:contentPath'), 'settings/');
|
|
|
|
default:
|
|
|
|
// new Error is allowed here, as we do not want config to depend on @tryghost/error
|
|
|
|
// @TODO: revisit this decision when @tryghost/error is no longer dependent on all of ghost-ignition
|
|
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
|
|
throw new Error('getContentPath was called with: ' + type);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2021-06-18 22:34:14 +03:00
|
|
|
/**
|
|
|
|
* @typedef ConfigHelpers
|
|
|
|
* @property {isPrivacyDisabledFn} isPrivacyDisabled
|
|
|
|
* @property {getContentPathFn} getContentPath
|
|
|
|
*/
|
|
|
|
module.exports.bindAll = (nconf) => {
|
|
|
|
nconf.isPrivacyDisabled = isPrivacyDisabled.bind(nconf);
|
|
|
|
nconf.getContentPath = getContentPath.bind(nconf);
|
2021-06-16 17:05:51 +03:00
|
|
|
};
|