Skip to content

Commit 2e4bc69

Browse files
committed
feat: write to aliases file in create command
1 parent d5c74c2 commit 2e4bc69

4 files changed

Lines changed: 69 additions & 3 deletions

File tree

cmd/create.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,24 @@ func RunCreateCmd(fs afero.Fs, cp CreatePrompts) error {
175175
return jsonErr
176176
}
177177

178-
writeFileErr := afero.WriteFile(fs, configFilePath, j, 0o644)
179-
if writeFileErr != nil {
180-
return writeFileErr
178+
writeConfigFileErr := afero.WriteFile(fs, configFilePath, j, 0o644)
179+
if writeConfigFileErr != nil {
180+
return writeConfigFileErr
181+
}
182+
183+
var aliasFile string
184+
for _, a := range c.Aliases {
185+
aliasFile += a.String()
186+
}
187+
188+
aliasFilePath, aliasFilePathErr := config.AliasFilePath()
189+
if aliasFilePathErr != nil {
190+
return aliasFilePathErr
191+
}
192+
193+
writeAliasesFileErr := afero.WriteFile(fs, aliasFilePath, []byte(aliasFile), 0o644)
194+
if writeAliasesFileErr != nil {
195+
return writeAliasesFileErr
181196
}
182197

183198
return nil

cmd/create_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cmd
22

33
import (
44
"encoding/json"
5+
"strings"
56
"testing"
67

78
"github.com/jaytyrrell13/pal/internal/alias"
@@ -74,6 +75,15 @@ func TestRunCreateCmd(t *testing.T) {
7475
assertAliasMatches(t, "cd /foo/Code/project-two", c.Aliases[2].Command)
7576
assertAliasMatches(t, "ept", c.Aliases[3].Name)
7677
assertAliasMatches(t, "cd /foo/Code/project-two && nvim", c.Aliases[3].Command)
78+
79+
assertAliasFileContains(t, fs, "po")
80+
assertAliasFileContains(t, fs, "cd /foo/Code/project-one")
81+
assertAliasFileContains(t, fs, "epo")
82+
assertAliasFileContains(t, fs, "cd /foo/Code/project-one && nvim")
83+
assertAliasFileContains(t, fs, "pt")
84+
assertAliasFileContains(t, fs, "cd /foo/Code/project-two")
85+
assertAliasFileContains(t, fs, "ept")
86+
assertAliasFileContains(t, fs, "cd /foo/Code/project-two && nvim")
7787
})
7888

7989
t.Run("when category is 'directory'", func(t *testing.T) {
@@ -105,6 +115,9 @@ func TestRunCreateCmd(t *testing.T) {
105115

106116
assertAliasMatches(t, "wn", c.Aliases[0].Name)
107117
assertAliasMatches(t, "cd /foo/Documents/work/notes", c.Aliases[0].Command)
118+
119+
assertAliasFileContains(t, fs, "wn")
120+
assertAliasFileContains(t, fs, "cd /foo/Documents/work/notes")
108121
})
109122

110123
t.Run("when category is 'action'", func(t *testing.T) {
@@ -134,6 +147,9 @@ func TestRunCreateCmd(t *testing.T) {
134147

135148
assertAliasMatches(t, "ll", c.Aliases[0].Name)
136149
assertAliasMatches(t, "ls -lah", c.Aliases[0].Command)
150+
151+
assertAliasFileContains(t, fs, "ll")
152+
assertAliasFileContains(t, fs, "ls -lah")
137153
})
138154

139155
t.Run("when config does not exist", func(t *testing.T) {
@@ -184,8 +200,26 @@ func writeConfigFile(t *testing.T, fs afero.Fs) {
184200
}
185201

186202
func makeDirAll(t *testing.T, fs afero.Fs, path string) {
203+
t.Helper()
204+
187205
mkDirErr := fs.MkdirAll(path, 0o755)
188206
if mkDirErr != nil {
189207
t.Error(mkDirErr)
190208
}
191209
}
210+
211+
func assertAliasFileContains(t *testing.T, fs afero.Fs, expected string) {
212+
t.Helper()
213+
214+
aliasFilePath, aliasFilePathErr := config.AliasFilePath()
215+
if aliasFilePathErr != nil {
216+
t.Error(aliasFilePathErr)
217+
}
218+
b, readFileErr := afero.ReadFile(fs, aliasFilePath)
219+
if readFileErr != nil {
220+
t.Error(readFileErr)
221+
}
222+
223+
str := string(b)
224+
strings.Contains(str, expected)
225+
}

internal/alias/alias.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package alias
22

3+
import (
4+
"fmt"
5+
)
6+
37
type Alias struct {
48
Name string
59
Command string
@@ -17,3 +21,7 @@ func (a Alias) ForEditCmd() Alias {
1721

1822
return a
1923
}
24+
25+
func (a Alias) String() string {
26+
return fmt.Sprintf("alias %s=\"%s\"\n", a.Name, a.Command)
27+
}

internal/config/config.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,12 @@ func ReadConfigFile(fs afero.Fs) (Config, error) {
6464

6565
return c, nil
6666
}
67+
68+
func AliasFilePath() (string, error) {
69+
path, err := ConfigDirPath()
70+
if err != nil {
71+
return "", err
72+
}
73+
74+
return path + "/aliases", err
75+
}

0 commit comments

Comments
 (0)