bootstrap/include/config.h

39 lines
971 B
C
Raw Normal View History

2023-11-23 18:02:40 +00:00
#ifndef _BOOTSTRAP_CONFIG_H
#define _BOOTSTRAP_CONFIG_H
struct Config {
2023-11-23 18:02:40 +00:00
// The directory the `bootstrap` command was run from.
2023-11-23 15:07:22 +00:00
// OWNERSHIP: Does not own this pointer.
const char *cwd;
// The root directory housing our specs.
// OWNERSHIP: Does not own this pointer.
const char *root_dir;
2023-11-23 18:02:40 +00:00
// The name of the spec we want to bootstrap.
2023-11-23 15:07:22 +00:00
// OWNERSHIP: Does not own this pointer.
const char *target;
};
enum ConfigError {
// The $CWD could not be retrieved.
2023-11-23 15:07:22 +00:00
CE_ENV_CWD_INVALID = 1,
// The $BOOTSTRAP_ROOT_DIR environment variable is empty.
2023-11-23 18:02:40 +00:00
CE_ENV_ROOT_DIR_INVALID,
// The target argument is invalid.
2023-11-23 15:07:22 +00:00
CE_TARGET_INVALID,
// No spec with the given name was found.
CE_TARGET_NOT_FOUND,
// The spec is not a directory.
CE_TARGET_NOT_DIR,
};
2023-11-23 14:40:17 +00:00
enum ConfigError config_load(
2023-11-23 15:07:22 +00:00
const char *cwd,
2023-11-23 11:09:32 +00:00
const char *root_dir,
const char *target,
2023-11-23 14:40:17 +00:00
struct Config **config
2023-11-23 11:09:32 +00:00
);
2023-11-23 14:40:17 +00:00
void config_free(struct Config *config);
2023-11-23 18:02:40 +00:00
#endif /* BOOTSTRAP_CONFIG_H */