File tree 2 files changed +39
-0
lines changed
2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ import inquirer from 'inquirer' ;
2
+
3
+ import { StackConfig , StackManager } from 'stacker-core' ;
4
+
5
+
6
+ async function getServiceName ( stack ) {
7
+ const choices = stack . services . values ( ) . filter ( service => service . shell ) . map ( service => service . name ) ;
8
+ const answers = await inquirer . prompt ( {
9
+ type : 'list' ,
10
+ name : 'service' ,
11
+ message : 'Select service' ,
12
+ choices,
13
+ } ) ;
14
+ return answers . service ;
15
+ }
16
+
17
+ async function handle ( args , options , logger ) {
18
+ const config = await StackConfig . loadRecursive ( process . cwd ( ) ) ;
19
+ const manager = new StackManager ( config ) ;
20
+ const service = args . service || await getServiceName ( manager . stack ) ;
21
+
22
+ try {
23
+ manager . shell ( service ) ;
24
+ } catch ( error ) {
25
+ logger . info ( error . message ) ;
26
+ }
27
+ }
28
+
29
+ function register ( program ) {
30
+ program
31
+ . command ( 'shell' , 'Open shell' )
32
+ . alias ( 'sh' )
33
+ . argument ( '[service]' , 'Service name' )
34
+ . action ( handle ) ;
35
+ }
36
+
37
+ export default { register } ;
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ import run from './commands/run';
15
15
import start from './commands/start' ;
16
16
import stop from './commands/stop' ;
17
17
import unlink from './commands/unlink' ;
18
+ import shell from './commands/shell' ;
18
19
19
20
20
21
// caporal hack
@@ -39,5 +40,6 @@ run.register(program);
39
40
start . register ( program ) ;
40
41
stop . register ( program ) ;
41
42
unlink . register ( program ) ;
43
+ shell . register ( program ) ;
42
44
43
45
program . parse ( process . argv ) ;
You can’t perform that action at this time.
0 commit comments