Добавлено чтение из конфигурационного файла набора правил для отслеживания файлов
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