@@ -15,56 +15,48 @@ import (
15
15
"github.com/manifoldco/promptui"
16
16
)
17
17
18
- type ISessionHandler interface {
19
- NewSession (ctx context.Context ) error
20
- GrabExistingSession (ctx context.Context ) error
21
- CreateNewProjectSession (ctx context.Context ) error
22
- DeleteProjectSession (ctx context.Context ) error
23
- }
24
-
25
18
type SessionHandler struct {
26
- c IConfigParser
27
- p IPathResolver
19
+ config * Config
20
+ pathResolver * PathResolver
21
+ projectNameFullPathMap map [string ]string
22
+ projectExpressionNameMap map [string ]string
28
23
}
29
24
30
- func NewSessionHandler (configParser IConfigParser , pathResolver IPathResolver ) ISessionHandler {
25
+ func NewSessionHandler (config * Config , pathResolver * PathResolver ,
26
+ projectNameFullPathMap , projectExpressionNameMap map [string ]string ) ISessionHandler {
31
27
return & SessionHandler {
32
- c : configParser ,
33
- p : pathResolver ,
28
+ config : config ,
29
+ pathResolver : pathResolver ,
30
+ projectNameFullPathMap : projectNameFullPathMap ,
31
+ projectExpressionNameMap : projectExpressionNameMap ,
34
32
}
35
33
}
36
34
37
35
func (sh * SessionHandler ) NewSession (ctx context.Context ) error {
38
- config := sh .c .ReadConfig ()
39
- if config == nil {
40
- return errors .New ("failed to create new project from projects" )
41
- }
42
36
/*build fzf input and build hashmap to retrieve filepath from entry's name.*/
43
37
var input bytes.Buffer
44
- projectNameFullPathMap , projectExpressionNameMap := make (map [string ]string , 0 ), make (map [string ]string , 0 )
45
- for _ , project := range config .Projects {
46
- replaced , err := sh .p .ReplaceHomeDir (project .filepath )
38
+ for _ , project := range sh .config .Projects {
39
+ replaced , err := sh .pathResolver .ReplaceHomeDir (project .filepath )
47
40
if err != nil {
48
41
return errors .New ("failed to replace home directory to ~" )
49
42
}
50
43
input .WriteString (replaced + "\n " )
51
- projectNameFullPathMap [project .name ] = project .filepath
52
- projectExpressionNameMap [replaced ] = project .name
53
44
}
54
45
fzfOut , err := sh .toFzf (input )
55
46
if err != nil {
56
47
return fmt .Errorf ("failed to create new project from projects: %w" , err )
57
48
}
58
- sessionName := projectExpressionNameMap [strings .Trim (fzfOut .String (), "\n " )]
49
+
50
+ sessionName := sh .projectExpressionNameMap [strings .Trim (fzfOut .String (), "\n " )]
59
51
if sh .isInSession () {
60
- return sh .switchToNewClient (sessionName , projectNameFullPathMap [sessionName ])
52
+ return sh .switchToNewClient (sessionName , sh . projectNameFullPathMap [sessionName ])
61
53
}
62
54
if sh .sessionExists (sessionName ) {
63
55
return sh .attach (sessionName )
64
56
}
65
57
if err := sh .newTmuxCmd (
66
58
"tmux" , "new-session" , "-s" ,
67
- sessionName , "-c" , projectNameFullPathMap [sessionName ]).Run (); err != nil {
59
+ sessionName , "-c" , sh . projectNameFullPathMap [sessionName ]).Run (); err != nil {
68
60
return fmt .Errorf ("failed to create new session %w: " , err )
69
61
}
70
62
return nil
@@ -106,7 +98,7 @@ func (sh *SessionHandler) CreateNewProjectSession(ctx context.Context) error {
106
98
if err != nil {
107
99
return fmt .Errorf ("faield to get new project information interactively: %w" , err )
108
100
}
109
- newProjectPath , err := sh .p .ExpandPath (filepath .Join (parentDir , fmt .Sprintf ("%v/" , newProjectName )))
101
+ newProjectPath , err := sh .pathResolver .ExpandPath (filepath .Join (parentDir , fmt .Sprintf ("%v/" , newProjectName )))
110
102
if err != nil {
111
103
return fmt .Errorf ("failed to expand path: %w" , err )
112
104
}
@@ -212,7 +204,7 @@ func (sh *SessionHandler) buildParentDirSet() (map[string]struct{}, error) {
212
204
var configFiles = []string {"./.tmux-sessionizer" , "~/.tmux-sessionizer" }
213
205
parentDirSet := make (map [string ]struct {}, 0 )
214
206
for _ , configFile := range configFiles {
215
- path , err := sh .p .ExpandPath (configFile )
207
+ path , err := sh .pathResolver .ExpandPath (configFile )
216
208
if err != nil {
217
209
return nil , fmt .Errorf ("failed to expand path: %w" , err )
218
210
}
0 commit comments