Files

47 lines
1.3 KiB
JavaScript

/**
* WorkflowConfig - Centralized configuration management
* Uses PropertiesService to keep secrets out of the codebase.
*/
function getWorkflowConfig() {
const props = PropertiesService.getScriptProperties().getProperties();
return props;
}
function getRequiredProperty_(key) {
const value = PropertiesService.getScriptProperties().getProperty(key);
if (!value) {
throw new Error(`Missing required configuration property: ${key}. Please set it in Project Settings > Script Properties.`);
}
return value;
}
function getOptionalProperty_(key, fallback) {
const value = PropertiesService.getScriptProperties().getProperty(key);
return value !== null ? value : fallback;
}
function getVikunjaConfig() {
return {
baseUrl: getRequiredProperty_('VIKUNJA_BASE_URL'),
token: getRequiredProperty_('VIKUNJA_TOKEN'),
projectId: getOptionalProperty_('VIKUNJA_DEFAULT_PROJECT_ID', null)
};
}
function getTestProjectConfig() {
return {
testProjectId: getOptionalProperty_('VIKUNJA_TEST_PROJECT_ID', null)
};
}
function getGiteaConfig() {
return {
baseUrl: getRequiredProperty_('GITEA_BASE_URL'),
token: getRequiredProperty_('GITEA_TOKEN'),
owner: getRequiredProperty_('GITEA_OWNER'),
repo: getRequiredProperty_('GITEA_REPO'),
branch: getOptionalProperty_('GITEA_DEFAULT_BRANCH', 'main')
};
}