@@ -7,83 +7,100 @@ use super::super::slice::directory::get_latest_slices_from_slice_root_directory;
7
7
use super :: super :: slice:: section:: Kind ;
8
8
9
9
pub struct MakeCommand < ' a > {
10
- pub layer : String ,
10
+ pub layer : String ,
11
11
pub os : String ,
12
- pub slice_root_directory : & ' a Path
12
+ pub slice_root_directory : & ' a Path ,
13
13
}
14
14
15
15
impl < ' a > MakeCommand < ' a > {
16
- fn find_main_slice ( & self , slices : & ' a Vec < Slice > ) -> & ' a Slice {
17
- slices. iter ( ) . find ( |slice| {
18
- slice. name . contains ( & self . layer ) && slice. get_os_list ( ) . contains ( & self . os )
19
- } ) . unwrap ( )
20
- }
21
-
22
- fn add_code_for_slice ( current_code : & mut String , slice : & Slice , available_slices : & mut Vec < & Slice > ) {
23
- if let Some ( dep_section) = slice. sections . iter ( ) . find ( |section| section. kind == Kind :: Dep ) {
24
- for dependency in & dep_section. items {
25
- let dependency_position = available_slices. iter ( ) . position ( |slice| slice. name == * dependency) ;
26
- if let Some ( dependency_position) = dependency_position {
27
- let dependency = available_slices. remove ( dependency_position) ;
28
- MakeCommand :: add_code_for_slice ( current_code, & dependency, available_slices) ;
29
- }
30
- }
31
- }
32
- let run_section = slice. sections . iter ( ) . find ( |section| section. kind == Kind :: Run ) . unwrap ( ) ;
33
- for item in & run_section. items {
34
- current_code. push_str ( & item) ;
35
- current_code. push ( '\n' ) ;
36
- }
37
- }
38
-
39
- fn get_code_for_latest_slice ( & self ) -> Result < String , String > {
40
- match get_latest_slices_from_slice_root_directory ( & self . slice_root_directory ) {
41
- Ok ( slices) => {
42
- let mut available_slices: Vec < & Slice > = Vec :: new ( ) ;
43
- for slice in & slices {
44
- available_slices. push ( & slice) ;
45
- }
46
- let main_layer = self . find_main_slice ( & slices) ;
47
- let mut string = String :: new ( ) ;
48
- MakeCommand :: add_code_for_slice ( & mut string, & main_layer, & mut available_slices) ;
49
- Ok ( string)
50
- } ,
51
- Err ( error) => Err ( error)
52
- }
53
- }
16
+ fn find_main_slice ( & self , slices : & ' a Vec < Slice > ) -> & ' a Slice {
17
+ slices. iter ( )
18
+ . find ( |slice| {
19
+ slice. name . contains ( & self . layer ) && slice. get_os_list ( ) . contains ( & self . os )
20
+ } )
21
+ . unwrap ( )
22
+ }
23
+
24
+ fn add_code_for_slice ( current_code : & mut String ,
25
+ slice : & Slice ,
26
+ available_slices : & mut Vec < & Slice > ) {
27
+ if let Some ( dep_section) = slice. sections . iter ( ) . find ( |section| section. kind == Kind :: Dep ) {
28
+ for dependency in & dep_section. items {
29
+ let dependency_position = available_slices. iter ( ) . position ( |slice| {
30
+ slice. name == * dependency
31
+ } ) ;
32
+ if let Some ( dependency_position) = dependency_position {
33
+ let dependency = available_slices. remove ( dependency_position) ;
34
+ MakeCommand :: add_code_for_slice ( current_code, & dependency, available_slices) ;
35
+ }
36
+ }
37
+ }
38
+ let run_section = slice. sections . iter ( ) . find ( |section| section. kind == Kind :: Run ) . unwrap ( ) ;
39
+ for item in & run_section. items {
40
+ current_code. push_str ( & item) ;
41
+ current_code. push ( '\n' ) ;
42
+ }
43
+ }
44
+
45
+ fn get_code_for_latest_slice ( & self ) -> Result < String , String > {
46
+ match get_latest_slices_from_slice_root_directory ( & self . slice_root_directory ) {
47
+ Ok ( slices) => {
48
+ let mut available_slices: Vec < & Slice > = Vec :: new ( ) ;
49
+ for slice in & slices {
50
+ available_slices. push ( & slice) ;
51
+ }
52
+ let main_layer = self . find_main_slice ( & slices) ;
53
+ let mut string = String :: new ( ) ;
54
+ MakeCommand :: add_code_for_slice ( & mut string, & main_layer, & mut available_slices) ;
55
+ Ok ( string)
56
+ }
57
+ Err ( error) => Err ( error) ,
58
+ }
59
+ }
54
60
}
55
61
56
62
impl < ' a > Command for MakeCommand < ' a > {
57
- fn run ( & mut self ) {
58
- match self . get_code_for_latest_slice ( ) {
59
- Ok ( code) => println ! ( "Code = {}" , code) ,
60
- Err ( error) => println ! ( "Error = {}" , error)
61
- }
62
- }
63
+ fn run ( & mut self ) {
64
+ match self . get_code_for_latest_slice ( ) {
65
+ Ok ( code) => println ! ( "Code = {}" , code) ,
66
+ Err ( error) => println ! ( "Error = {}" , error) ,
67
+ }
68
+ }
63
69
}
64
70
65
71
#[ test]
66
72
fn test_make_command ( ) {
67
- let expected_code = "apt-get update -y
68
- apt-get install libc6-dev libssl-dev make build-essential libssl-dev libreadline6-dev zlib1g-dev libyaml-dev libz-dev -y
73
+ let expected_code = "apt-get update -y
74
+ apt-get install libc6-dev libssl-dev make \
75
+ build-essential libssl-dev libreadline6-dev zlib1g-dev libyaml-dev \
76
+ libz-dev -y
69
77
apt-get upgrade -y
70
78
apt-get install wget -y
71
79
cd /tmp
72
- wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz
73
- tar xvzf ruby-2.2.3.tar.gz
80
+ wget \
81
+ https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz
82
+ tar xvzf \
83
+ ruby-2.2.3.tar.gz
74
84
cd ruby-2.2.3
75
85
./configure --prefix=/usr/local
76
86
make
77
- make install
87
+ \
88
+ make install
78
89
cd ..
79
90
wget https://rubygems.org/rubygems/rubygems-2.4.8.tgz
80
- tar xvzf rubygems-2.4.8.tgz
91
+ \
92
+ tar xvzf rubygems-2.4.8.tgz
81
93
cd rubygems-2.4.8
82
94
ruby setup.rb
83
- gem install jekyll -v '3.0.0.pre.beta9'
95
+ gem install \
96
+ jekyll -v '3.0.0.pre.beta9'
84
97
" ;
85
- let slice_root_directory = get_slice_root_directory ( ) ;
86
- let command = MakeCommand { layer : "jekyll" . to_string ( ) , os : "debian" . to_string ( ) , slice_root_directory : & slice_root_directory } ;
87
- let returned_code = command. get_code_for_latest_slice ( ) . unwrap ( ) ;
88
- assert_eq ! ( returned_code, expected_code) ;
89
- }
98
+ let slice_root_directory = get_slice_root_directory ( ) ;
99
+ let command = MakeCommand {
100
+ layer : "jekyll" . to_string ( ) ,
101
+ os : "debian" . to_string ( ) ,
102
+ slice_root_directory : & slice_root_directory,
103
+ } ;
104
+ let returned_code = command. get_code_for_latest_slice ( ) . unwrap ( ) ;
105
+ assert_eq ! ( returned_code, expected_code) ;
106
+ }
0 commit comments