diff --git a/.changeset/quick-dancers-suffer.md b/.changeset/quick-dancers-suffer.md new file mode 100644 index 00000000..e4616a40 --- /dev/null +++ b/.changeset/quick-dancers-suffer.md @@ -0,0 +1,5 @@ +--- +"trifid": minor +--- + +Allow to start Trifid using the CLI without requiring a path to a configuration file. diff --git a/packages/sparql-proxy/README.md b/packages/sparql-proxy/README.md index 33c94358..30aff2fe 100644 --- a/packages/sparql-proxy/README.md +++ b/packages/sparql-proxy/README.md @@ -1,9 +1,5 @@ # Trifid plugin for `sparql-proxy` -## Supported options - -Here are all supported options: https://github.com/zazuko/sparql-proxy#usage - ## Quick start Install this Trifid plugin using: @@ -21,10 +17,8 @@ middlewares: module: "@zazuko/trifid-plugin-sparql-proxy" paths: /query config: - enableProxy: true # enable support for `HTTP_PROXY`, `HTTPS_PROXY` and `NO_PROXY` environment variables - sparqlEndpoint: - url: https://example.com/query - username: admin - password: secret - # …other configuration fields + endpointUrl: https://example.com/query + # The following fields are not required: + username: admin + password: secret ``` diff --git a/packages/sparql-proxy/index.js b/packages/sparql-proxy/index.js index 805429c5..62383e3b 100644 --- a/packages/sparql-proxy/index.js +++ b/packages/sparql-proxy/index.js @@ -2,6 +2,8 @@ const defaultConfiguration = { endpointUrl: '', + username: '', + password: '', } /** @type {import('../core/types/index.js').TrifidMiddleware} */ diff --git a/packages/trifid/instances/docker-fetch/config.yaml b/packages/trifid/instances/docker-fetch/config.yaml index be32bb3f..624f6fb8 100644 --- a/packages/trifid/instances/docker-fetch/config.yaml +++ b/packages/trifid/instances/docker-fetch/config.yaml @@ -3,6 +3,9 @@ globals: datasetBaseUrl: env:DATASET_BASE_URL + endpoints: + default: + url: /query middlewares: static-assets: diff --git a/packages/trifid/instances/docker-sparql/config.yaml b/packages/trifid/instances/docker-sparql/config.yaml index 4af383d4..eef5ddad 100644 --- a/packages/trifid/instances/docker-sparql/config.yaml +++ b/packages/trifid/instances/docker-sparql/config.yaml @@ -3,10 +3,9 @@ globals: datasetBaseUrl: env:DATASET_BASE_URL - sparqlEndpoint: - url: env:SPARQL_ENDPOINT_URL - username: env:SPARQL_ENDPOINT_USERNAME - password: env:SPARQL_ENDPOINT_PASSWORD + endpoints: + default: + url: /query middlewares: static-assets: @@ -51,10 +50,9 @@ middlewares: config: queryOperation: postQueryUrlencoded rewriteQueries: true - cache: - prefix: env:SPARQL_PROXY_CACHE_PREFIX - url: env:SPARQL_PROXY_CACHE_URL - clearAtStartup: env:SPARQL_PROXY_CACHE_CLEAR_AT_STARTUP + endpointUrl: env:SPARQL_ENDPOINT_URL + username: env:SPARQL_ENDPOINT_USERNAME + password: env:SPARQL_ENDPOINT_PASSWORD handle-redirects: module: "@zazuko/trifid-handle-redirects" diff --git a/packages/trifid/server.js b/packages/trifid/server.js index 16c85728..d35e03fc 100755 --- a/packages/trifid/server.js +++ b/packages/trifid/server.js @@ -1,13 +1,16 @@ #!/usr/bin/env node -import { join } from 'node:path' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' import { Command } from 'commander' import trifid from 'trifid-core' const program = new Command() -const defaultConfigurationFile = process.env.TRIFID_CONFIG ?? 'config.yaml' +const currentDir = dirname(fileURLToPath(import.meta.url)) +const sparqlConfigPath = join(currentDir, 'instances', 'docker-sparql', 'config.yaml') +const defaultConfigurationFile = process.env.TRIFID_CONFIG || sparqlConfigPath program .option('-c, --config ', 'configuration file', defaultConfigurationFile) @@ -20,7 +23,9 @@ program .parse(process.argv) const opts = program.opts() -const configFile = join(process.cwd(), opts.config) +const configFile = (opts.config && !opts.config.startsWith('/')) + ? join(process.cwd(), opts.config) + : opts.config // create a minimal configuration that extends the specified one const config = { @@ -39,9 +44,11 @@ if (opts.sparqlEndpointUrl) { config.globals.sparqlEndpoint = { url: opts.sparqlEndpointUrl, } + process.env.SPARQL_ENDPOINT_URL = opts.sparqlEndpointUrl } if (opts.datasetBaseUrl) { config.globals.datasetBaseUrl = opts.datasetBaseUrl + process.env.DATASET_BASE_URL = opts.datasetBaseUrl } // load the configuration and start the server