Skip to content

Commit 7a53a2d

Browse files
committed
feat(app): improved errors and warning for disabled features
1 parent 77dfb2a commit 7a53a2d

File tree

45 files changed

+58
-47
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+58
-47
lines changed

.github/readme/partials/templated/plugins.community.md

Lines changed: 1 addition & 1 deletion

.github/scripts/quickstart/plugin/index.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default async function({login, q, imports, data, computed, rest, graphql,
33
//Plugin execution
44
try {
55
//Check if plugin is enabled and requirements are met
6-
if ((!enabled) || (!q.<%= name %>) || (!imports.metadata.plugins.<%= name %>.extras("enabled", {extras})))
6+
if ((!q.<%= name %>) || (!imports.metadata.plugins.<%= name %>.enabled(enabled, {extras})))
77
return null
88
//Results
99
return {}

source/app/metrics/metadata.mjs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,20 @@ metadata.plugin = async function({__plugins, __templates, name, logger}) {
217217
Object.assign(meta.inputs, inputs, Object.fromEntries(Object.entries(inputs).map(([key, value]) => [metadata.to.query(key, {name}), value])))
218218
}
219219

220+
//Enable state handler
221+
{
222+
meta.enabled = function(enabled, {extras = {}, error = true} = {}) {
223+
if ((process.env.GITHUB_ACTIONS)&&(!enabled))
224+
console.warn(`::warning::Plugin "${name}" is currently disabled. Add "plugin_${name}: yes" to your workflow to enable it.`)
225+
if ((error)&&(!enabled))
226+
throw Object.assign(new Error(`Plugin "${name}" is disabled${process.env.GITHUB_ACTIONS ? "" : " on this server"}`), {enabled: true})
227+
return (enabled) && (meta.extras("enabled", {extras, error}))
228+
}
229+
}
230+
220231
//Extra features parser
221232
{
222-
meta.extras = function(input, {extras = {}, error = true}) {
233+
meta.extras = function(input, {extras = {}, error = true} = {}) {
223234
const key = metadata.to.yaml(input, {name})
224235
try {
225236
//Required permissions
@@ -270,7 +281,7 @@ metadata.plugin = async function({__plugins, __templates, name, logger}) {
270281
console.debug(`metrics/extras > ${name} > ${key} > skipping (no error mode)`)
271282
return false
272283
}
273-
throw Object.assign(new Error(`Unsupported option "${key}"`), {extras: true})
284+
throw Object.assign(new Error(`Option "${key}" is disabled on this server`), {extras: true})
274285
}
275286
}
276287
}

source/app/metrics/utils.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ export function formatters({timeZone} = {}) {
130130
/**Error formatter */
131131
format.error = function(error, {descriptions = {}, ...attributes} = {}) {
132132
try {
133-
//Extras features error
134-
if (error.extras)
133+
//Extras features or enable state error
134+
if ((error.extras)||(error.enabled))
135135
throw {error: {message: error.message, instance: error}}
136136
//Already formatted error
137137
if (error.error?.message)

source/plugins/achievements/index.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default async function({login, q, imports, data, computed, graphql, queri
66
//Plugin execution
77
try {
88
//Check if plugin is enabled and requirements are met
9-
if ((!enabled) || (!q.achievements) || (!imports.metadata.plugins.achievements.extras("enabled", {extras})))
9+
if ((!q.achievements) || (!imports.metadata.plugins.achievements.enabled(enabled, {extras})))
1010
return null
1111

1212
//Load inputs

source/plugins/activity/index.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default async function({login, data, rest, q, account, imports}, {enabled
33
//Plugin execution
44
try {
55
//Check if plugin is enabled and requirements are met
6-
if ((!enabled) || (!q.activity) || (!imports.metadata.plugins.activity.extras("enabled", {extras})))
6+
if ((!q.activity) || (!imports.metadata.plugins.activity.enabled(enabled, {extras})))
77
return null
88

99
//Context

source/plugins/anilist/index.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default async function({login, data, queries, imports, q, account}, {enab
33
//Plugin execution
44
try {
55
//Check if plugin is enabled and requirements are met
6-
if ((!enabled) || (!q.anilist) || (!imports.metadata.plugins.anilist.extras("enabled", {extras})))
6+
if ((!q.anilist) || (!imports.metadata.plugins.anilist.enabled(enabled, {extras})))
77
return null
88

99
//Load inputs

source/plugins/calendar/index.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default async function({login, q, data, imports, graphql, queries, accoun
33
//Plugin execution
44
try {
55
//Check if plugin is enabled and requirements are met
6-
if ((!enabled) || (!q.calendar) || (!imports.metadata.plugins.calendar.extras("enabled", {extras})))
6+
if ((!q.calendar) || (!imports.metadata.plugins.calendar.enabled(enabled, {extras})))
77
return null
88

99
//Load inputs

source/plugins/code/index.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default async function({login, q, imports, data, rest, account}, {enabled
33
//Plugin execution
44
try {
55
//Check if plugin is enabled and requirements are met
6-
if ((!enabled) || (!q.code) || (!imports.metadata.plugins.code.extras("enabled", {extras})))
6+
if ((!q.code) || (!imports.metadata.plugins.code.enabled(enabled, {extras})))
77
return null
88

99
//Context

source/plugins/community/fortune/index.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default async function({q, data, imports, account}, {enabled = false, ext
33
//Plugin execution
44
try {
55
//Check if plugin is enabled and requirements are met
6-
if ((!enabled) || (!q.fortune) || (!imports.metadata.plugins.fortune.extras("enabled", {extras})))
6+
if ((!q.fortune) || (!imports.metadata.plugins.fortune.enabled(enabled, {extras})))
77
return null
88

99
//Load inputs

0 commit comments

Comments
 (0)