summaryrefslogtreecommitdiff
path: root/src/config.ts
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@matthewphillips.info> 2021-03-19 17:07:45 -0400
committerGravatar GitHub <noreply@github.com> 2021-03-19 17:07:45 -0400
commit17c3c98f07628b43b941b84831e8e1f9bcd7ca46 (patch)
tree2e2b3c7d6bd67ebaabe6636ae6867ad368ac6c3a /src/config.ts
parent8ebc077cb0d9f50aae22d2651bd5ef13fe4641d3 (diff)
downloadastro-17c3c98f07628b43b941b84831e8e1f9bcd7ca46.tar.gz
astro-17c3c98f07628b43b941b84831e8e1f9bcd7ca46.tar.zst
astro-17c3c98f07628b43b941b84831e8e1f9bcd7ca46.zip
Initial tests set up (#10)
* Begin debugging * Initial tests set up This adds tests using uvu (we can switch if people want) and restructures things a bit so that it's easier to test. Like in snowpack you set up a little project. In our tests you can say: ```js const result = await runtime.load('/blog/hello-world') ``` And analyze the result. I included a `test-helpers.js` which has a function that will turn HTML into a cheerio instance, for inspecting the result HTML. * Add CI * Remove extra console logs * Formatting
Diffstat (limited to 'src/config.ts')
-rw-r--r--src/config.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/config.ts b/src/config.ts
new file mode 100644
index 000000000..da58b7a03
--- /dev/null
+++ b/src/config.ts
@@ -0,0 +1,22 @@
+import type { AstroConfig } from './@types/astro';
+import { join as pathJoin, resolve as pathResolve } from 'path';
+import { existsSync } from 'fs';
+
+export async function loadConfig(rawRoot: string | undefined): Promise<AstroConfig | undefined> {
+ if (typeof rawRoot === 'undefined') {
+ rawRoot = process.cwd();
+ }
+
+ const root = pathResolve(rawRoot);
+ const fileProtocolRoot = `file://${root}/`;
+ const astroConfigPath = pathJoin(root, 'astro.config.mjs');
+
+ if (!existsSync(astroConfigPath)) {
+ return undefined;
+ }
+
+ const astroConfig: AstroConfig = (await import(astroConfigPath)).default;
+ astroConfig.projectRoot = new URL(astroConfig.projectRoot + '/', fileProtocolRoot);
+ astroConfig.hmxRoot = new URL(astroConfig.hmxRoot + '/', fileProtocolRoot);
+ return astroConfig;
+}