Skip to content

Commit 4ef003a

Browse files
Merge pull request #8 from dineshba/create-dot-tmuxp-dir-if-not-present
Create ~/.tmuxp dir if not present
2 parents efb0e81 + c0eb729 commit 4ef003a

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-0
lines changed

pkg/filesystem/filesystem.go

+9
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ type FileSystem interface {
1313
HomeDir() (string, error)
1414
Open(file string) (io.Reader, error)
1515
Create(file string) (io.Writer, error)
16+
CreateDirIfNotExist(dir string) error
1617
}
1718

1819
// Default represents the Operating System's filesystem
@@ -55,3 +56,11 @@ func (d *Default) Create(file string) (io.Writer, error) {
5556

5657
return writer, nil
5758
}
59+
60+
// CreateDirIfNotExist creates a new directory if it already exists
61+
func (d *Default) CreateDirIfNotExist(dir string) error {
62+
if _, err := os.Stat(dir); os.IsNotExist(err) {
63+
return os.Mkdir(dir, 0755)
64+
}
65+
return nil
66+
}

pkg/internal/mock/filesystem.go

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/tmuxp/tmuxp.go

+4
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ func NewConfig(sessionName string, windows Windows, environment Environment, fs
6060
}
6161
tmuxpCfgsDir := path.Join(home, ".tmuxp")
6262

63+
err = fs.CreateDirIfNotExist(tmuxpCfgsDir)
64+
if err != nil {
65+
return nil, err
66+
}
6367
return &Config{
6468
SessionName: sessionName,
6569
Windows: windows,

pkg/tmuxp/tmuxp_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ func TestNewConfig(t *testing.T) {
1818

1919
mockFS := mock.NewFileSystem(ctrl)
2020
mockFS.EXPECT().HomeDir().Return("/Users/test", nil)
21+
mockFS.EXPECT().CreateDirIfNotExist(gomock.Eq("/Users/test/.tmuxp")).Return(nil)
2122
tmuxpCfg, err := tmuxp.NewConfig("session", tmuxp.Windows{}, tmuxp.Environment{}, mockFS)
2223

2324
assert.Nil(t, err)
@@ -34,6 +35,18 @@ func TestNewConfig(t *testing.T) {
3435

3536
assert.EqualError(t, err, "some error")
3637
})
38+
39+
t.Run("should return error in create .tmuxp dir is failed", func(t *testing.T) {
40+
ctrl := gomock.NewController(t)
41+
defer ctrl.Finish()
42+
43+
mockFS := mock.NewFileSystem(ctrl)
44+
mockFS.EXPECT().HomeDir().Return("/Users/test", nil)
45+
mockFS.EXPECT().CreateDirIfNotExist(gomock.Eq("/Users/test/.tmuxp")).Return(fmt.Errorf("error creating .tmuxp dir"))
46+
_, err := tmuxp.NewConfig("session", tmuxp.Windows{}, tmuxp.Environment{}, mockFS)
47+
48+
assert.EqualError(t, err, "error creating .tmuxp dir")
49+
})
3750
}
3851

3952
func TestTmuxpConfigsDir(t *testing.T) {
@@ -42,6 +55,7 @@ func TestTmuxpConfigsDir(t *testing.T) {
4255

4356
mockFS := mock.NewFileSystem(ctrl)
4457
mockFS.EXPECT().HomeDir().Return("/Users/test", nil)
58+
mockFS.EXPECT().CreateDirIfNotExist(gomock.Eq("/Users/test/.tmuxp")).Return(nil)
4559
tmuxpCfg, _ := tmuxp.NewConfig("session", tmuxp.Windows{}, tmuxp.Environment{}, mockFS)
4660

4761
assert.Equal(t, "/Users/test/.tmuxp", tmuxpCfg.TmuxpConfigsDir())
@@ -55,6 +69,7 @@ func TestSave(t *testing.T) {
5569
mockFS := mock.NewFileSystem(ctrl)
5670
mockFS.EXPECT().HomeDir().Return("/Users/test", nil)
5771
var writer bytes.Buffer
72+
mockFS.EXPECT().CreateDirIfNotExist(gomock.Eq("/Users/test/.tmuxp")).Return(nil)
5873
mockFS.EXPECT().Create("tmuxp-config.yaml").Return(&writer, nil)
5974
tmuxpCfg, _ := tmuxp.NewConfig("session", tmuxp.Windows{{Name: "window"}}, tmuxp.Environment{"TEST_ENV": "value", "ANOTHER_TEST_ENV": "another-value"}, mockFS)
6075

@@ -79,6 +94,7 @@ environment:
7994

8095
mockFS := mock.NewFileSystem(ctrl)
8196
mockFS.EXPECT().HomeDir().Return("/Users/test", nil)
97+
mockFS.EXPECT().CreateDirIfNotExist(gomock.Eq("/Users/test/.tmuxp")).Return(nil)
8298
mockFS.EXPECT().Create("tmuxp-config.yaml").Return(nil, fmt.Errorf("some error"))
8399
tmuxpCfg, _ := tmuxp.NewConfig("session", tmuxp.Windows{{Name: "window"}}, tmuxp.Environment{"TEST_ENV": "value", "ANOTHER_TEST_ENV": "another-value"}, mockFS)
84100

0 commit comments

Comments
 (0)