diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 400e7c1..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - // Используйте IntelliSense, чтобы узнать о возможных атрибутах. - // Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов. - // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "code-d", - "request": "launch", - "dubBuild": true, - "name": "Build & Debug DUB project", - "cwd": "${command:dubWorkingDirectory}", - "program": "bin/${command:dubTarget}" - } - ] -} \ No newline at end of file diff --git a/snapd.json b/snapd.json index d8b0536..1dc307f 100644 --- a/snapd.json +++ b/snapd.json @@ -1,5 +1,4 @@ { - "git": "/var/lib/snapd", - "project": "/", - "email": "user@site.domain" + "git": "/var/lib/snapd", + "project": "/" } diff --git a/source/app.d b/source/app.d index 3ac5b7a..b452dbf 100644 --- a/source/app.d +++ b/source/app.d @@ -2,9 +2,7 @@ import snapd; import commandr; import std.file; -import std.stdio : writeln; - -import core.stdc.stdlib : EXIT_SUCCESS, EXIT_FAILURE; +import core.stdc.stdlib : EXIT_SUCCESS; private string programName = "snapd"; @@ -20,16 +18,10 @@ int main(string[] args) ) .parse(args); - string configFile = argumets.option("config", "snapd.json"); + string configFile = "snapd.json"; + configFile = argumets.option("config", configFile); - SnapdConfig config; - - try { - config = new SnapdConfig(configFile); - } catch (SnapdConfigException e) { - e.print(); - return EXIT_FAILURE; - } + auto sc = new SnapdConfig(configFile); return EXIT_SUCCESS; } diff --git a/source/snapd/config.d b/source/snapd/config.d new file mode 100644 index 0000000..d093331 --- /dev/null +++ b/source/snapd/config.d @@ -0,0 +1,20 @@ +module snapd.config; + +import std.json; +import std.file; +import std.stdio : writeln; + +class SnapdConfig { + private string _git; + private string _project; + + this(string configFile) { + string jsonText = readText(configFile); + + auto jsonData = parseJSON(jsonText); + if ("gits" !in jsonData) + writeln("Ключ отсутствует"); + writeln(jsonData["git"].str); + writeln(jsonData["project"].str); + } +} diff --git a/source/snapd/config/config.d b/source/snapd/config/config.d deleted file mode 100644 index 5822758..0000000 --- a/source/snapd/config/config.d +++ /dev/null @@ -1,93 +0,0 @@ -module snapd.config.config; - -import std.json; -import std.file; -import std.path; -import std.regex; -import std.string; - -import snapd.config.exception; - -class SnapdConfig { - private string _git; - private string _project; - private string _email; - - private 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; - } - - this(string configFile) { - string jsonText; - JSONValue jsonData; - - try { - jsonText = readText(configFile); - jsonData = parseJSON(jsonText); - } catch (Exception e) { - throw new SnapdConfigException( - "An error occurred while reading the configuration file:\n\t" - ~ e.msg - ); - } - - if ("git" !in jsonData) - throw new SnapdConfigException( - "The configuration file is missing the \"git\" parameter" - ); - - _git = jsonData["git"].str; - - if (!_git.length) - throw new SnapdConfigException( - "The \"git\" parameter must contain the path to the directory" - ); - - if (!_git.isAbsolute) - throw new SnapdConfigException( - "The \"git\" parameter must be an absolute path to the directory:\n\t" - ~ _git - ); - - if ("project" !in jsonData) - throw new SnapdConfigException( - "The configuration file is missing the \"project\" parameter" - ); - - _project = jsonData["project"].str; - - if (!_project.length) - throw new SnapdConfigException( - "The \"project\" parameter must contain the path to the directory" - ); - - if (!_project.isAbsolute) - throw new SnapdConfigException( - "The \"project\" parameter must be an absolute path to the directory:\n\t" - ~ _project - ); - - if ("email" !in jsonData) - throw new SnapdConfigException( - "The configuration file is missing the \"email\" parameter" - ); - - _email = jsonData["email"].str; - - if (!_email.length) - throw new SnapdConfigException( - "The \"email\" parameter must contain an email address" - ); - - if (!isValidEmail(_email)) - throw new SnapdConfigException( - "Invalid email address provided in the \"email\" parameter:\n\t" - ~ _email - ); - } - - @property string git() const { return _git; } - @property string project() const { return _project; } - @property string email() const { return _email; } -} diff --git a/source/snapd/config/exception.d b/source/snapd/config/exception.d deleted file mode 100644 index 1abc0e5..0000000 --- a/source/snapd/config/exception.d +++ /dev/null @@ -1,14 +0,0 @@ -module snapd.config.exception; - -import std.exception; -import std.stdio : writeln; - -class SnapdConfigException : Exception { - this(string msg, string file = __FILE__, size_t line = __LINE__) { - super(msg, file, line); - } - - void print() { - writeln(msg); - } -} diff --git a/source/snapd/config/package.d b/source/snapd/config/package.d deleted file mode 100644 index 5dd2aed..0000000 --- a/source/snapd/config/package.d +++ /dev/null @@ -1,4 +0,0 @@ -module snapd.config; - -public import snapd.config.exception; -public import snapd.config.config; diff --git a/source/snapd/version_.d b/source/snapd/version_.d index 98d0114..e09faec 100644 --- a/source/snapd/version_.d +++ b/source/snapd/version_.d @@ -1,3 +1,3 @@ module snapd.version_; -enum snapdVersion = "0.0.2"; +enum snapdVersion = "0.0.1";