Добавлено чтение из конфигурационного файла набора правил для отслеживания файлов
This commit is contained in:
parent
5797e83f07
commit
aa4260cdb9
2 changed files with 39 additions and 1 deletions
12
snag.json
12
snag.json
|
@ -10,5 +10,15 @@
|
||||||
"postsnag": [
|
"postsnag": [
|
||||||
"/usr/bin/ls",
|
"/usr/bin/ls",
|
||||||
"/usr/local/bin/script.sh"
|
"/usr/local/bin/script.sh"
|
||||||
]
|
],
|
||||||
|
"rules": {
|
||||||
|
"tracking": [
|
||||||
|
"/etc/*.conf"
|
||||||
|
],
|
||||||
|
"ignore": [
|
||||||
|
"/usr/exit/.gitignore",
|
||||||
|
"/usr/exit/dd",
|
||||||
|
"/file1"
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@ import std.file;
|
||||||
import std.path;
|
import std.path;
|
||||||
import std.string;
|
import std.string;
|
||||||
import snag.lib;
|
import snag.lib;
|
||||||
|
import std.algorithm;
|
||||||
|
import std.array;
|
||||||
|
|
||||||
import snag.config.exception;
|
import snag.config.exception;
|
||||||
|
|
||||||
|
@ -13,6 +15,8 @@ class SnagConfig {
|
||||||
private string _project;
|
private string _project;
|
||||||
private string _email;
|
private string _email;
|
||||||
private string _author;
|
private string _author;
|
||||||
|
private string[] _tracking;
|
||||||
|
private string[] _ignore;
|
||||||
|
|
||||||
this(string configFile) {
|
this(string configFile) {
|
||||||
string jsonText;
|
string jsonText;
|
||||||
|
@ -93,10 +97,34 @@ class SnagConfig {
|
||||||
throw new SnagConfigException(
|
throw new SnagConfigException(
|
||||||
"The \"author\" parameter must contain an author name"
|
"The \"author\" parameter must contain an author name"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ("rules" in jsonData) {
|
||||||
|
if (jsonData["rules"].type != JSONType.object)
|
||||||
|
throw new SnagConfigException(
|
||||||
|
"The \"rules\" parameter must be an object"
|
||||||
|
);
|
||||||
|
auto rules = jsonData["rules"];
|
||||||
|
if ("tracking" in rules) {
|
||||||
|
if (rules["tracking"].type != JSONType.array)
|
||||||
|
throw new SnagConfigException(
|
||||||
|
"The \"tracking\" parameter must be an array containing a set of paths to tracked files"
|
||||||
|
);
|
||||||
|
_tracking = rules["tracking"].array.map!(item => item.str).array;
|
||||||
|
}
|
||||||
|
if ("ignore" in rules) {
|
||||||
|
if (rules["ignore"].type != JSONType.array)
|
||||||
|
throw new SnagConfigException(
|
||||||
|
"The \"ignore\" parameter must contain a gitignore rule"
|
||||||
|
);
|
||||||
|
_ignore = rules["ignore"].array.map!(item => item.str).array;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@property string git() const { return _git; }
|
@property string git() const { return _git; }
|
||||||
@property string project() const { return _project; }
|
@property string project() const { return _project; }
|
||||||
@property string email() const { return _email; }
|
@property string email() const { return _email; }
|
||||||
@property string author() const { return _author; }
|
@property string author() const { return _author; }
|
||||||
|
@property const(string[]) tracking() const { return _tracking; }
|
||||||
|
@property const(string[]) ignore() const { return _ignore; }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue