From cc85cdec78976ceca5b0bbe0e2510b65df8c32ce Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Mon, 26 May 2025 03:09:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=BD=D0=B0=D0=BB=D0=B8=D1=87=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=BE=20git=20=D0=B2=20=D1=81=D0=B8=D1=81?= =?UTF-8?q?=D1=82=D0=B5=D0=BC=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/app.d | 8 +++++++- source/snag/lib/lib.d | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/source/app.d b/source/app.d index 26110bb..55f9e4a 100644 --- a/source/app.d +++ b/source/app.d @@ -1,6 +1,7 @@ import snag; import commandr; import std.file; +import std.stdio : writeln; import core.stdc.stdlib : EXIT_SUCCESS, EXIT_FAILURE; @@ -8,6 +9,11 @@ private string programName = "snag"; int main(string[] args) { + if (!checkGit()) { + "Using snag requires Git to be installed".writeln; + return EXIT_FAILURE; + } + auto argumets = new Program(programName, snagVersion) .add(new Command("init", "Initializing the repository for storing snapshots")) .add(new Command("status", "Checking the status of tracked files")) @@ -83,7 +89,7 @@ int main(string[] args) } auto snag = new Snag(config); - import std.stdio; + try { argumets .on("init", init => diff --git a/source/snag/lib/lib.d b/source/snag/lib/lib.d index 3277d0e..902691d 100644 --- a/source/snag/lib/lib.d +++ b/source/snag/lib/lib.d @@ -1,6 +1,7 @@ module snag.lib.lib; import std.regex; +import std.process; bool isValidHash(string hash) { auto hashPattern = ctRegex!r"^[a-fA-F0-9]{7}$"; @@ -11,3 +12,8 @@ bool isValidEmail(string email) { auto emailPattern = ctRegex!r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"; return !matchFirst(email, emailPattern).empty; } + +bool checkGit() { + auto result = execute(["which", "git"]); + return !result.status; +}