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; +}