chore: add some documentation and somet testing

This commit is contained in:
BluJ
2022-07-18 13:27:51 -06:00
parent cb39f5f3ba
commit 17d4b8048f
7 changed files with 296 additions and 249 deletions

View File

@@ -1,4 +1,3 @@
import { YAML } from "../dependencies.ts";
import { matches } from "../dependencies.ts";
import { ExpectedExports } from "../types.ts";
@@ -8,22 +7,31 @@ const { any, string, dictionary } = matches;
const matchConfig = dictionary([string, any]);
export const getConfig = (spec: ConfigSpec): ExpectedExports.getConfig => async (effects) => {
/**
* Call with the configuration to get a standard getConfig for the expected exports
* Assumption: start9/config.yaml is where the config will be stored
* Throws: Error if there is no file
* Throws: Error if the config.yaml isn't yaml nor config shape
* @param spec
* @returns
*/
export const getConfig = (spec: ConfigSpec): ExpectedExports.getConfig =>
async (effects) => {
const config = await effects
.readFile({
path: "start9/config.yaml",
volumeId: "main",
})
.then((x) => YAML.parse(x))
.then((x) => matchConfig.unsafeCast(x))
.catch((e) => {
effects.info(`Got error ${e} while trying to read the config`);
return undefined;
});
.readFile({
path: "start9/config.yaml",
volumeId: "main",
})
.then((x) => YAML.parse(x))
.then((x) => matchConfig.unsafeCast(x))
.catch((e) => {
effects.info(`Got error ${e} while trying to read the config`);
return undefined;
});
return {
result: {
config,
spec,
},
result: {
config,
spec,
},
};
};
};