#include "command.hh" #include "installable-value.hh" #include "run.hh" using namespace nix; struct CmdFmt : SourceExprCommand { std::vector args; CmdFmt() { expectArgs({.label = "args", .handler = {&args}}); } std::string description() override { return "reformat your code in the standard style"; } std::string doc() override { return #include "fmt.md" ; } Category category() override { return catSecondary; } Strings getDefaultFlakeAttrPaths() override { return Strings{"formatter." + settings.thisSystem.get()}; } Strings getDefaultFlakeAttrPathPrefixes() override { return Strings{}; } void run(ref store) override { auto evalState = getEvalState(); auto evalStore = getEvalStore(); auto installable_ = parseInstallable(store, "."); auto & installable = InstallableValue::require(*installable_); auto app = installable.toApp(*evalState).resolve(evalStore, store); Strings programArgs{app.program}; // Propagate arguments from the CLI for (auto &i : args) { programArgs.push_back(i); } runProgramInStore(store, UseSearchPath::DontUse, app.program, programArgs); }; }; static auto r2 = registerCommand("fmt");