2023-02-04 03:42:36 +00:00
|
|
|
#pragma once
|
2023-04-01 03:18:41 +00:00
|
|
|
///@file
|
2023-02-04 03:42:36 +00:00
|
|
|
|
|
|
|
#include "eval.hh"
|
|
|
|
|
|
|
|
namespace nix {
|
|
|
|
|
|
|
|
struct AbstractNixRepl
|
|
|
|
{
|
|
|
|
ref<EvalState> state;
|
|
|
|
Bindings * autoArgs;
|
|
|
|
|
|
|
|
AbstractNixRepl(ref<EvalState> state)
|
|
|
|
: state(state)
|
|
|
|
{ }
|
|
|
|
|
|
|
|
virtual ~AbstractNixRepl()
|
|
|
|
{ }
|
|
|
|
|
|
|
|
typedef std::vector<std::pair<Value*,std::string>> AnnotatedValues;
|
|
|
|
|
|
|
|
static std::unique_ptr<AbstractNixRepl> create(
|
2023-06-23 17:51:25 +00:00
|
|
|
const SearchPath & searchPath, nix::ref<Store> store, ref<EvalState> state,
|
2023-02-04 03:42:36 +00:00
|
|
|
std::function<AnnotatedValues()> getValues);
|
|
|
|
|
2024-03-08 08:19:15 +00:00
|
|
|
static ReplExitStatus runSimple(
|
2023-02-04 03:42:36 +00:00
|
|
|
ref<EvalState> evalState,
|
|
|
|
const ValMap & extraEnv);
|
|
|
|
|
|
|
|
virtual void initEnv() = 0;
|
|
|
|
|
2024-03-08 08:19:15 +00:00
|
|
|
virtual ReplExitStatus mainLoop() = 0;
|
2023-02-04 03:42:36 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|