From 92871da51a46b0428b1a5f7acd1c35ecc937b78a Mon Sep 17 00:00:00 2001 From: David Smadja <david.smadja@assemblee-nationale.fr> Date: Mon, 10 Feb 2025 14:40:33 +0100 Subject: [PATCH] Modify url templates placeholders in env file --- example.env | 4 ++-- src/lib/repositories.ts | 43 +++++++++++++++-------------------------- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/example.env b/example.env index 5a791d6b3..a158b1a04 100644 --- a/example.env +++ b/example.env @@ -75,8 +75,8 @@ PUBLIC_MATOMO_SUBDOMAINS="*.DOMAIN" PUBLIC_OPENFISCA_BRANCH="master" PUBLIC_OPENFISCA_GROUP="openfisca" PUBLIC_OPENFISCA_PROJECT="openfisca-france" -PUBLIC_OPENFISCA_REPOSITORY_RAW_URL_TEMPLATE="https://raw.githubusercontent.com/${group}/${project}/${branch}/${path}" -PUBLIC_OPENFISCA_REPOSITORY_URL_TEMPLATE="https://github.com/${group}/${project}/blob/${branch}/${path}" +PUBLIC_OPENFISCA_REPOSITORY_RAW_URL_TEMPLATE="https://raw.githubusercontent.com/$<group>/$<project>/$<branch>/$<path>" +PUBLIC_OPENFISCA_REPOSITORY_URL_TEMPLATE="https://github.com/$<group>/$<project>/blob/$<branch>/$<path>" # URL of portal site (used when clicking on left logo in menu bar) PUBLIC_PORTAL_URL="https://leximpact.an.fr/" diff --git a/src/lib/repositories.ts b/src/lib/repositories.ts index e67c77c49..3a7243af4 100644 --- a/src/lib/repositories.ts +++ b/src/lib/repositories.ts @@ -1,5 +1,4 @@ import type { Parameter } from "@openfisca/json-model" - export interface RepositoryConfig { branch: string group: string @@ -12,40 +11,30 @@ export function newParameterRepositoryRawUrl( { branch, group, project, rawUrlTemplate }: RepositoryConfig, parameter: Parameter, ): string | undefined { - const path = parameter.file_path + const path = parameter.file_path; if (path === undefined) { - return undefined + return undefined; } - // Can't use: - // return eval("`" + rawUrlTemplate + "`") - // because using direct eval with a bundler is not recommended and may cause problems - // (more info: https://esbuild.github.io/link/direct-eval) - return new Function( - "branch", - "group", - "project", - "path", - "return `" + rawUrlTemplate + "`", - )(branch, group, project, path) + const url = rawUrlTemplate + .replace("$<group>", group) + .replace("$<project>", project) + .replace("$<branch>", branch) + .replace("$<path>", path); + return url; } export function newParameterRepositoryUrl( { branch, group, project, urlTemplate }: RepositoryConfig, parameter: Parameter, ): string | undefined { - const path = parameter.file_path + const path = parameter.file_path; if (path === undefined) { - return undefined + return undefined; } - // Can't use: - // return eval("`" + urlTemplate + "`") - // because using direct eval with a bundler is not recommended and may cause problems - // (more info: https://esbuild.github.io/link/direct-eval) - return new Function( - "branch", - "group", - "project", - "path", - "return `" + urlTemplate + "`", - )(branch, group, project, path) + const url = urlTemplate + .replace("$<group>", group) + .replace("$<project>", project) + .replace("$<branch>", branch) + .replace("$<path>", path); + return url; } -- GitLab