1
0
Fork 0

Delete history file if RQLITE_HISTFILESIZE is zero (#1146)

Delete history file if RQLITE_HISTFILESIZE is zero

Fixes https://github.com/rqlite/rqlite/issues/1145.
master
Philip O'Toole 2 years ago committed by GitHub
parent 6d76ff8d6f
commit 8acc0d8ff7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,3 +1,7 @@
## 7.13.1 (unreleased)
### Implementation changes and bug fixes
- [PR #1146](https://github.com/rqlite/rqlite/pull/1146): Delete history file if RQLITE_HISTFILESIZE is zero. Fixes [issue #1145](https://github.com/rqlite/rqlite/issues/1145). Thanks @jamielinux
## 7.13.0 (December 15th 2022)
### New features
- [PR #1141](https://github.com/rqlite/rqlite/pull/1141): Store and load CLI history across sessions.

@ -5,19 +5,16 @@ package history
import (
"io"
"os"
"path/filepath"
)
const historyFile = ".rqlite_history"
// Reader returns a reader of the history file.
func Reader() io.ReadCloser {
hdir, err := os.UserHomeDir()
p, err := Path()
if err != nil {
return nil
}
f, err := os.Open(filepath.Join(hdir, historyFile))
f, err := os.Open(p)
if err != nil {
return nil
}
@ -26,12 +23,12 @@ func Reader() io.ReadCloser {
// Writer returns a writer for the history file.
func Writer() io.WriteCloser {
hdir, err := os.UserHomeDir()
p, err := Path()
if err != nil {
return nil
}
f, err := os.OpenFile(filepath.Join(hdir, historyFile), os.O_RDWR|os.O_CREATE, 0755)
f, err := os.OpenFile(p, os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
return nil
}

@ -0,0 +1,39 @@
package history
import (
"errors"
"io/fs"
"os"
"testing"
)
func Test_Delete(t *testing.T) {
w := Writer()
if w == nil {
t.Fatal("failed to create history writer")
}
p, err := Path()
if err != nil {
t.Fatalf("failed to get history file path: %s", err.Error())
}
if !exists(p) {
t.Fatal("history file does not exist")
}
w.Close()
if err := Delete(); err != nil {
t.Fatalf("failed to delete history file: %s", err.Error())
}
if exists(p) {
t.Fatal("history file exists after deletion")
}
}
func exists(path string) bool {
if _, err := os.Stat(path); err != nil {
return !errors.Is(err, fs.ErrNotExist)
}
return true
}

@ -3,12 +3,9 @@ package history
import (
"io"
"os"
"path/filepath"
"syscall"
)
const historyFile = "rqlite_history"
func setHidden(path string) error {
filenameW, err := syscall.UTF16PtrFromString(path)
if err != nil {
@ -25,12 +22,12 @@ func setHidden(path string) error {
// Reader returns a reader of the history file.
func Reader() io.ReadCloser {
hdir, err := os.UserHomeDir()
p, err := Path()
if err != nil {
return nil
}
f, err := os.Open(filepath.Join(hdir, historyFile))
f, err := os.Open(p)
if err != nil {
return nil
}
@ -39,16 +36,15 @@ func Reader() io.ReadCloser {
// Writer returns a writer for the history file.
func Writer() io.WriteCloser {
hdir, err := os.UserHomeDir()
p, err := Path()
if err != nil {
return nil
}
path := filepath.Join(hdir, historyFile)
f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0755)
f, err := os.OpenFile(p, os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
return nil
}
setHidden(path) // best effort
setHidden(p) // best effort
return f
}

@ -0,0 +1,26 @@
package history
import (
"os"
"path/filepath"
)
const historyFile = ".rqlite_history"
// Path returns the full path to the history file.
func Path() (string, error) {
hdir, err := os.UserHomeDir()
if err != nil {
return "", err
}
return filepath.Join(hdir, historyFile), nil
}
// Delete deletes the history file.
func Delete() error {
p, err := Path()
if err != nil {
return err
}
return os.Remove(p)
}

@ -208,9 +208,11 @@ func main() {
}
hw := history.Writer()
if hw != nil {
history.Write(term.History, history.Size(), hw)
hw.Close()
sz := history.Size()
history.Write(term.History, sz, hw)
hw.Close()
if sz <= 0 {
history.Delete()
}
ctx.String("bye~\n")
return nil

Loading…
Cancel
Save