@@ -19,92 +19,114 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.*/
1919
2020'use strict' ;
2121
22- var child_process = require ( 'child_process' ) ;
23-
24- module . exports . dockerComposeUp = function ( dir , options , success , error ) {
25- var command = 'docker-compose up' ;
26-
27- if ( options ) {
28- command += ' ' + options ;
29- }
30-
31- _execCommand ( command , success , error , {
32- cwd : dir
22+ var cmd = require ( './cmd/cmd' ) ;
23+
24+ module . exports = {
25+ dockerComposeUp : dockerComposeUp ,
26+ dockerComposeDown : dockerComposeDown ,
27+ dockerComposeStop : dockerComposeStop ,
28+ dockerComposeStart : dockerComposeStart ,
29+ dockerExec : dockerExec ,
30+ dockerInspectIPAddressOfContainer : dockerInspectIPAddressOfContainer ,
31+ dockerInspectPortOfContainer : dockerInspectPortOfContainer
32+ } ;
33+
34+ function dockerComposeUp ( file , options ) {
35+ return new Promise ( ( resolve , reject ) => {
36+ options = options ? options : [ ] ;
37+ var command = 'docker-compose' ;
38+ var arg = [ '-f' , file , 'up' , '-d' ] . concat ( options ) ;
39+
40+ cmd . execCommand ( command , arg ) . then ( child => {
41+ child . stdout . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
42+ child . stderr . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
43+ child . stdout . on ( 'close' , code => { if ( ! code ) resolve ( ) ; else reject ( code ) ; } ) ;
44+ } ) ;
3345 } ) ;
3446}
3547
36- module . exports . dockerComposeDown = function ( dir , options , success , error ) {
37- var command = 'docker-compose down' ;
38-
39- if ( options ) {
40- command += ' ' + options ;
41- }
42-
43- _execCommand ( command , success , error , {
44- cwd : dir
48+ function dockerComposeDown ( file , options ) {
49+ return new Promise ( ( resolve , reject ) => {
50+ options = options ? options : [ ] ;
51+ var command = 'docker-compose' ;
52+ var arg = [ '-f' , file , 'down' ] . concat ( options ) ;
53+
54+ cmd . execCommand ( command , arg ) . then ( child => {
55+ child . stdout . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
56+ child . stderr . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
57+ child . stdout . on ( 'close' , code => { if ( ! code ) resolve ( ) ; else reject ( code ) ; } ) ;
58+ } ) ;
4559 } ) ;
46-
4760}
4861
49- module . exports . dockerComposeStop = function ( dir , success , error ) {
50- var command = 'docker-compose stop' ;
51-
52- _execCommand ( command , success , error , {
53- cwd : dir
62+ function dockerComposeStop ( file , options ) {
63+ return new Promise ( ( resolve , reject ) => {
64+ options = options ? options : [ ] ;
65+ var command = 'docker-compose' ;
66+ var arg = [ '-f' , file , 'stop' ] . concat ( options ) ;
67+
68+ cmd . execCommand ( command , arg ) . then ( child => {
69+ child . stdout . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
70+ child . stderr . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
71+ child . stdout . on ( 'close' , code => { if ( ! code ) resolve ( ) ; else reject ( code ) ; } ) ;
72+ } ) ;
5473 } ) ;
55-
5674}
5775
58- module . exports . dockerComposeStart = function ( dir , success , error ) {
59- var command = 'docker-compose start' ;
60-
61- _execCommand ( command , success , error , {
62- cwd : dir
76+ function dockerComposeStart ( file , options ) {
77+ return new Promise ( ( resolve , reject ) => {
78+ options = options ? options : [ ] ;
79+ var command = 'docker-compose' ;
80+ var arg = [ '-f' , file , 'start' ] . concat ( options ) ;
81+
82+ cmd . execCommand ( command , arg ) . then ( child => {
83+ child . stdout . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
84+ child . stderr . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
85+ child . stdout . on ( 'close' , code => { if ( ! code ) resolve ( ) ; else reject ( code ) ; } ) ;
86+ } ) ;
6387 } ) ;
64-
65- }
66-
67- module . exports . dockerExec = function ( container , exec_command , options , success , error ) {
68- var command = 'docker exec' ;
69-
70- if ( options ) {
71- for ( option in options ) {
72- command += ' ' + options [ option ] ;
73- }
74- }
75-
76- command += ' ' + container ;
77-
78- command += ' ' + exec_command ;
79-
80- _execCommand ( command , success , error ) ;
81-
8288}
8389
84- module . exports . dockerInspectIPAddressOfContainer = function ( container , options ) {
85- var command = "docker inspect --format '{{.NetworkSettings.Networks." + options . network + ".IPAddress}}' " + container ;
86-
87- return child_process . execSync ( command ) . toString ( 'utf-8' ) . replace ( / (?: \r \n | \r | \n ) / g, '' ) . replace ( / ' / ig, '' ) ;
90+ function dockerExec ( container , exec_command , options ) {
91+ return new Promise ( ( resolve , reject ) => {
92+ options = options ? options : [ ] ;
93+ var command = 'docker' ;
94+ var arg = [ 'exec' ] . concat ( options ) . concat ( container ) . concat ( exec_command ) ;
95+
96+ cmd . execCommand ( command , arg ) . then ( child => {
97+ child . stdout . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
98+ child . stderr . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
99+ child . stdout . on ( 'close' , code => { if ( ! code ) resolve ( ) ; else reject ( code ) ; } ) ;
100+ } ) ;
101+ } ) ;
88102}
89103
90- module . exports . dockerInspectPortOfContainer = function ( container , options ) {
91- var command = "docker inspect --format '{{.NetworkSettings.Ports}}' " + container ;
92-
93- return child_process . execSync ( command ) . toString ( 'utf-8' ) . replace ( / (?: \r \n | \r | \n ) / g, '' ) . split ( "[" ) [ 1 ] . split ( "/" ) [ 0 ] . replace ( / ' / ig, '' ) ;
104+ function dockerInspectIPAddressOfContainer ( container , options ) {
105+ return new Promise ( ( resolve , reject ) => {
106+ options = options ? options : [ ] ;
107+ var command = 'docker' ;
108+ var arg = [ 'inspect' , '--format' , "'{{.NetworkSettings.Networks." + options . network + ".IPAddress}}'" , container ] ;
109+
110+ var ip ;
111+ cmd . execCommand ( command , arg ) . then ( child => {
112+ child . stdout . on ( 'data' , data => ip = data . toString ( 'utf-8' ) . replace ( / (?: \r \n | \r | \n ) / g, '' ) . replace ( / ' / ig, '' ) ) ;
113+ child . stderr . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
114+ child . stdout . on ( 'close' , code => { if ( ! code ) resolve ( ip ) ; else reject ( code ) ; } ) ;
115+ } ) ;
116+ } ) ;
94117}
95118
96- function _execCommand ( command , success , error , options ) {
97-
98- child_process . exec ( command , options , function ( err , stdout , stderr ) {
99- if ( ! err ) {
100- if ( success )
101- success ( stdout , stderr ) ;
102- } else {
103- if ( error )
104- error ( err , stderr ) ;
105- }
119+ function dockerInspectPortOfContainer ( container ) {
120+ return new Promise ( ( resolve , reject ) => {
121+ // options = options ? options : [];
122+ var command = 'docker' ;
123+ var arg = [ 'inspect' , '--format' , "'{{.NetworkSettings.Ports}}'" , container ] ;
124+
125+ var port ;
126+ cmd . execCommand ( command , arg ) . then ( child => {
127+ child . stdout . on ( 'data' , data => port = data . toString ( 'utf-8' ) . replace ( / (?: \r \n | \r | \n ) / g, '' ) . split ( "[" ) [ 1 ] . split ( "/" ) [ 0 ] . replace ( / ' / ig, '' ) ) ;
128+ child . stderr . on ( 'data' , data => console . log ( data . toString ( ) ) ) ;
129+ child . stdout . on ( 'close' , code => { if ( ! code ) resolve ( port ) ; else reject ( code ) ; } ) ;
130+ } ) ;
106131 } ) ;
107-
108132}
109-
110- module . exports . execCommand = _execCommand ;
0 commit comments