1
+ use crate :: app:: constants:: YAML_EXTENSIONS ;
1
2
use crate :: types:: RequirementsFile ;
3
+ use crate :: utils:: get_files;
2
4
use anyhow:: { Context , Result } ;
3
5
use common:: types:: Requirement ;
4
6
use serde_yaml;
@@ -16,63 +18,6 @@ pub fn validate_requirements_file(requirement_path: &PathBuf) -> Result<()> {
16
18
Ok ( ( ) )
17
19
}
18
20
19
- /// Get the requirements from the files.
20
- pub fn get_requirements_from_files ( requirement_dirs : & Vec < PathBuf > ) -> Result < Vec < Requirement > > {
21
- let requirement_files = get_requirements_files ( & requirement_dirs) . context ( format ! (
22
- "Failed to get the requirement files: {:?}" ,
23
- requirement_dirs
24
- ) ) ?;
25
- let mut all_requirements: Vec < Requirement > = vec ! [ ] ;
26
- for requirement_file in requirement_files {
27
- let requirements = get_requirements_from_file ( & requirement_file) . context ( format ! (
28
- "Failed to validate the requirement: {:?}" ,
29
- requirement_file
30
- ) ) ?;
31
- all_requirements. extend ( requirements) ;
32
- }
33
- Ok ( all_requirements)
34
- }
35
-
36
- /// Get the requirements from a file.
37
- pub fn get_requirements_from_file ( requirement_path : & PathBuf ) -> Result < Vec < Requirement > > {
38
- let requirement = std:: fs:: read_to_string ( & requirement_path) . context ( format ! (
39
- "Failed to read the requirement file: {:?}" ,
40
- requirement_path
41
- ) ) ?;
42
- let requirements_file =
43
- serde_yaml:: from_str :: < RequirementsFile > ( & requirement) . context ( format ! (
44
- "Failed to deserialize the requirement: {:?}" ,
45
- requirement_path
46
- ) ) ?;
47
- Ok ( requirements_file. requirements )
48
- }
49
-
50
- /// Get the requirements file paths.
51
- pub fn get_requirements_files ( requirement_dirs : & Vec < PathBuf > ) -> Result < Vec < PathBuf > > {
52
- let mut requirements_files: Vec < PathBuf > = vec ! [ ] ;
53
- for requirement_dir in requirement_dirs {
54
- let requirement_files = std:: fs:: read_dir ( & requirement_dir) . context ( format ! (
55
- "Failed to read the requirement directory: {:?}" ,
56
- requirement_dir
57
- ) ) ?;
58
- for requirement_file in requirement_files {
59
- let requirement_file = requirement_file. context ( format ! (
60
- "Failed to read the entry in the requirement directory: {:?}" ,
61
- requirement_dir
62
- ) ) ?;
63
- let requirement_path = requirement_file. path ( ) ;
64
- requirements_files. push ( requirement_path) ;
65
- }
66
- }
67
- if requirements_files. is_empty ( ) {
68
- return Err ( anyhow:: anyhow!( format!(
69
- "No requirement files found: {:#?}" ,
70
- requirement_dirs
71
- ) ) ) ;
72
- }
73
- Ok ( requirements_files)
74
- }
75
-
76
21
#[ cfg( test) ]
77
22
mod test_validate_requirement {
78
23
use super :: * ;
@@ -111,3 +56,34 @@ mod test_validate_requirement {
111
56
assert ! ( validate_requirements_file( & requirement_path) . is_err( ) ) ;
112
57
}
113
58
}
59
+
60
+ /// Get the requirements from the files.
61
+ pub fn get_requirements_from_files ( requirement_dirs : & Vec < PathBuf > ) -> Result < Vec < Requirement > > {
62
+ let requirement_files = get_files ( & requirement_dirs, & YAML_EXTENSIONS ) . context ( format ! (
63
+ "Failed to get the requirement files: {:?}" ,
64
+ requirement_dirs
65
+ ) ) ?;
66
+ let mut all_requirements: Vec < Requirement > = vec ! [ ] ;
67
+ for requirement_file in requirement_files {
68
+ let requirements = get_requirements_from_file ( & requirement_file) . context ( format ! (
69
+ "Failed to validate the requirement: {:?}" ,
70
+ requirement_file
71
+ ) ) ?;
72
+ all_requirements. extend ( requirements) ;
73
+ }
74
+ Ok ( all_requirements)
75
+ }
76
+
77
+ /// Get the requirements from a file.
78
+ pub fn get_requirements_from_file ( requirement_path : & PathBuf ) -> Result < Vec < Requirement > > {
79
+ let requirement = std:: fs:: read_to_string ( & requirement_path) . context ( format ! (
80
+ "Failed to read the requirement file: {:?}" ,
81
+ requirement_path
82
+ ) ) ?;
83
+ let requirements_file =
84
+ serde_yaml:: from_str :: < RequirementsFile > ( & requirement) . context ( format ! (
85
+ "Failed to deserialize the requirement: {:?}" ,
86
+ requirement_path
87
+ ) ) ?;
88
+ Ok ( requirements_file. requirements )
89
+ }
0 commit comments