#pragma once #include "cmd/cmd_base.hpp" #include #include #include #include namespace fsh { class CmdTruncate : public Command { protected: virtual void register_flags() override { ArgFactory& factory = get_factory(); factory.add_rule(1); } virtual void run(std::istream& in, std::ostream& out, ArgManager& args) override { std::string filename = args.get(0).value(); if(!std::ifstream(filename, std::ios_base::in)) { throw util::FileExistsError(); } if(!std::ofstream(filename, std::ios_base::out)) { throw util::CmdError("Failed to truncate"); } } }; }