Skip to content

Commit 166cd70

Browse files
committed
fix: improve filesystem error handling and logging throughout setup
- Add error handling when checking if a config file or directory exists - Ensure prompt folder existence checks also handle errors, with proper logging on failure - Update Git hook installation and uninstallation to check file existence with error handling Signed-off-by: appleboy <[email protected]>
1 parent dbd9a3f commit 166cd70

File tree

2 files changed

+44
-9
lines changed

2 files changed

+44
-9
lines changed

cmd/cmd.go

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,12 @@ func initConfig() {
7171
if cfgFile != "" {
7272
// Use config file from the flag.
7373
viper.SetConfigFile(cfgFile)
74-
if !file.IsFile(cfgFile) {
74+
exists, err := file.IsFile(cfgFile)
75+
if err != nil {
76+
// Config file status could not be determined; handle or ignore as needed
77+
// Optionally: log.Fatalf("failed to check if config file %s is a file: %v", cfgFile, err)
78+
}
79+
if !exists {
7580
// Config file not found; ignore error if desired
7681
_, err := os.Create(cfgFile)
7782
if err != nil {
@@ -90,7 +95,11 @@ func initConfig() {
9095
viper.SetConfigName(".codegpt")
9196
cfgFile = path.Join(configFolder, ".codegpt.yaml")
9297

93-
if !file.IsDir(configFolder) {
98+
isDir, err := file.IsDir(configFolder)
99+
if err != nil {
100+
log.Fatalf("failed to check if config folder %s is a directory: %v", configFolder, err)
101+
}
102+
if !isDir {
94103
if err := os.MkdirAll(configFolder, os.ModePerm); err != nil {
95104
log.Fatal(err)
96105
}
@@ -127,11 +136,19 @@ func initConfig() {
127136
case promptFolder != "":
128137
// If a prompt folder is specified by the promptFolder variable,
129138
// check if it is a file. If it is, log a fatal error.
130-
if file.IsFile(promptFolder) {
139+
isFile, err := file.IsFile(promptFolder)
140+
if err != nil {
141+
log.Fatalf("failed to check if prompt folder %s is a file: %v", promptFolder, err)
142+
}
143+
if isFile {
131144
log.Fatalf("prompt folder %s is a file", promptFolder)
132145
}
133146
// If the prompt folder does not exist, create it.
134-
if !file.IsDir(promptFolder) {
147+
isDir, err := file.IsDir(promptFolder)
148+
if err != nil {
149+
log.Fatalf("failed to check if prompt folder %s is a directory: %v", promptFolder, err)
150+
}
151+
if !isDir {
135152
if err := os.MkdirAll(promptFolder, os.ModePerm); err != nil {
136153
log.Fatal(err)
137154
}
@@ -142,11 +159,19 @@ func initConfig() {
142159
// If the prompt folder is specified in the configuration,
143160
// retrieve it and check if it is a file. If it is, log a fatal error.
144161
promptFolder = viper.GetString("prompt.folder")
145-
if file.IsFile(promptFolder) {
162+
isFile, err := file.IsFile(promptFolder)
163+
if err != nil {
164+
log.Fatalf("failed to check if prompt folder %s is a file: %v", promptFolder, err)
165+
}
166+
if isFile {
146167
log.Fatalf("prompt folder %s is a file", promptFolder)
147168
}
148169
// If the prompt folder does not exist, create it.
149-
if !file.IsDir(promptFolder) {
170+
isDir, err := file.IsDir(promptFolder)
171+
if err != nil {
172+
log.Fatalf("failed to check if prompt folder %s is a directory: %v", promptFolder, err)
173+
}
174+
if !isDir {
150175
if err := os.MkdirAll(promptFolder, os.ModePerm); err != nil {
151176
log.Fatal(err)
152177
}
@@ -157,7 +182,11 @@ func initConfig() {
157182
home, err := os.UserHomeDir()
158183
cobra.CheckErr(err)
159184
targetFolder := path.Join(home, ".config", "codegpt", "prompt")
160-
if !file.IsDir(targetFolder) {
185+
isDir, err := file.IsDir(targetFolder)
186+
if err != nil {
187+
log.Fatalf("failed to check if target folder %s is a directory: %v", targetFolder, err)
188+
}
189+
if !isDir {
161190
if err := os.MkdirAll(targetFolder, os.ModePerm); err != nil {
162191
log.Fatal(err)
163192
}

git/git.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,9 @@ func (c *Command) InstallHook() error {
189189
}
190190

191191
target := path.Join(strings.TrimSpace(string(hookPath)), HookPrepareCommitMessageTemplate)
192-
if file.IsFile(target) {
192+
if exists, err := file.IsFile(target); err != nil {
193+
return err
194+
} else if exists {
193195
return errors.New("hook file prepare-commit-msg exist")
194196
}
195197

@@ -211,7 +213,11 @@ func (c *Command) UninstallHook() error {
211213
}
212214

213215
target := path.Join(strings.TrimSpace(string(hookPath)), HookPrepareCommitMessageTemplate)
214-
if !file.IsFile(target) {
216+
exists, err := file.IsFile(target)
217+
if err != nil {
218+
return err
219+
}
220+
if !exists {
215221
return errors.New("hook file prepare-commit-msg is not exist")
216222
}
217223
return os.Remove(target)

0 commit comments

Comments
 (0)