diff --git a/src/clippy/clippy.cpp b/src/clippy/clippy.cpp index c5a4317..b961ccd 100644 --- a/src/clippy/clippy.cpp +++ b/src/clippy/clippy.cpp @@ -75,7 +75,11 @@ Clippy::TargetPtr Clippy::GetScriptTarget( } auto cfg = p->GetConfig(); - return cfg.GetTarget(args[1]); + auto result = cfg.GetTarget(args[1]); + if (enable_aliases_) { + result->PushFront("shopt -s expand_aliases"); + } + return result; } void Clippy::LoadProjects() { diff --git a/src/clippy/clippy.hpp b/src/clippy/clippy.hpp index 42c1d3e..7dc83f0 100644 --- a/src/clippy/clippy.hpp +++ b/src/clippy/clippy.hpp @@ -9,6 +9,8 @@ class Clippy { public: + Clippy(bool enable_aliases = true) : enable_aliases_(enable_aliases) {} + void Run(const std::vector& args); using TargetPtr = std::unique_ptr; @@ -18,5 +20,6 @@ class Clippy { void LoadProjects(); + bool enable_aliases_; std::optional projects_; }; diff --git a/src/clippy/config.cpp b/src/clippy/config.cpp index ce58288..c0becba 100644 --- a/src/clippy/config.cpp +++ b/src/clippy/config.cpp @@ -17,7 +17,7 @@ std::string Strip(std::string s) { return s; } -std::unique_ptr Config::GetTarget( +std::unique_ptr Config::GetTarget( const std::string& target) { std::ifstream in(path_); @@ -48,6 +48,5 @@ std::unique_ptr Config::GetTarget( return nullptr; } - return std::make_unique( - std::move(target_commands)); + return std::make_unique(target_commands); } diff --git a/src/clippy/config.hpp b/src/clippy/config.hpp index e522bee..01f9b27 100644 --- a/src/clippy/config.hpp +++ b/src/clippy/config.hpp @@ -7,6 +7,7 @@ namespace clippy::targets { class Target; +class RunShellScript; } class Config { @@ -16,7 +17,7 @@ class Config { void Edit() { utils::OpenEditor(path_); } - std::unique_ptr GetTarget(const std::string& target); + std::unique_ptr GetTarget(const std::string& target); private: std::string path_; diff --git a/src/clippy/target.hpp b/src/clippy/target.hpp index 2184833..5ed303b 100644 --- a/src/clippy/target.hpp +++ b/src/clippy/target.hpp @@ -6,9 +6,7 @@ #include #include -#define SIGPIPE_ALWAYS_IGNORE #include -#undef SIGPIPE_ALWAYS_IGNORE #include @@ -59,8 +57,16 @@ class CreateProjectConfig : public Target { class RunShellScript : public Target { public: - RunShellScript(std::vector commands) - : commands_(std::move(commands)) {} + template