@@ -15,17 +15,18 @@ var (
15
15
version = "dev"
16
16
helpMsg = `Rem - Get some rem sleep knowing your files are safe
17
17
Rem is a CLI Trash
18
- Usage: rem [-h/--help | -v/--version | -d/--directory | -l/--list | --t/--set-trash | `
18
+ Usage: rem [<option>]
19
+ rem fileToTrash
20
+ rem -u/--undo fileToRestore
21
+ Options:
22
+ -h/--help | -v/--version | -d/--directory | -l/--list | --t/--set-trash`
19
23
home , _ = os .UserHomeDir ()
20
24
trashDir = home + "/.remTrash"
21
25
logFileName = ".trash.log"
22
26
logSeparator = " ==> "
23
27
)
24
28
25
29
func main () {
26
- //for key, value := range parseLogFile() {
27
- // fmt.Println("Key:", key, "Value:", value)
28
- //}
29
30
if len (os .Args ) == 1 {
30
31
handleErrStr ("too few arguments" )
31
32
fmt .Println (helpMsg )
@@ -59,7 +60,7 @@ func main() {
59
60
}
60
61
if hasOption , _ := argsHaveOptionLong ("empty-trash" ); hasOption {
61
62
color .Red ("Warning, permanently deleting these files in trash: " )
62
- fmt . Println (listFilesInTrash ())
63
+ printFormattedList (listFilesInTrash ())
63
64
if promptBool ("Confirm delete?" ) {
64
65
emptyTrash ()
65
66
}
@@ -98,24 +99,6 @@ func main() {
98
99
}
99
100
100
101
func listFilesInTrash () []string {
101
- //file, err := os.Open(trashDir)
102
- //if err != nil {
103
- // handleErrStr("Could not open " + trashDir)
104
- // handleErr(err)
105
- // return nil
106
- //}
107
- //defer func() {
108
- // err = file.Close()
109
- // if err != nil {
110
- // handleErr(err)
111
- // }
112
- //}()
113
- //list, err := file.Readdirnames(0) // >=0 to read all files and folders
114
- //if err != nil {
115
- // handleErrStr("An error occurred while trying to list files in " + trashDir)
116
- // handleErr(err)
117
- //}
118
- //return list
119
102
m := parseLogFile ()
120
103
s := make ([]string , 0 , 10 )
121
104
for key , _ := range m {
@@ -129,13 +112,13 @@ func emptyTrash() {
129
112
}
130
113
131
114
func parseLogFile () map [string ]string {
115
+ ensureTrashDir ()
132
116
file , err := os .OpenFile (trashDir + "/" + logFileName , os .O_CREATE | os .O_RDONLY , 0644 )
133
117
if err != nil {
134
118
handleErr (err )
135
119
return nil
136
120
}
137
121
defer file .Close ()
138
- //var lines map[string]string
139
122
lines := make (map [string ]string )
140
123
scanner := bufio .NewScanner (file )
141
124
for scanner .Scan () {
@@ -149,12 +132,9 @@ func parseLogFile() map[string]string {
149
132
}
150
133
151
134
func setLogFile (m map [string ]string ) {
152
- //err := os.Truncate(trashDir+"/"+logFileName, 0)
153
- //if err != nil {
154
- // handleErr(err)
155
- // return
156
- //}
157
- f , err := os .OpenFile (trashDir + "/" + logFileName , os .O_TRUNC | os .O_CREATE | os .O_WRONLY , 0644 ) // truncate to empty, create if not exist, write only
135
+ //f, err := os.OpenFile(trashDir+"/"+logFileName, os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0644) // truncate to empty, create if not exist, write only
136
+ ensureTrashDir ()
137
+ f , err := os .Create (trashDir + "/" + logFileName )
158
138
if err != nil {
159
139
handleErr (err )
160
140
return
@@ -205,12 +185,10 @@ func trashFile(path string) {
205
185
return
206
186
}
207
187
if _ , err = os .Stat (path ); os .IsNotExist (err ) {
208
- // file specified does not exist
209
188
handleErrStr (color .YellowString (path ) + " does not exist" )
210
189
return
211
190
}
212
191
if i , err := os .Stat (toMoveTo ); ! (os .IsNotExist (err )) {
213
- // file of same name in trash
214
192
handleErrStr ("file with name " + color .YellowString (i .Name ()) + " already in ~/.remTrash at " + color .YellowString (toMoveTo )) // as helpful as possible
215
193
return
216
194
}
@@ -219,20 +197,10 @@ func trashFile(path string) {
219
197
handleErr (err )
220
198
return
221
199
}
222
- //f, err := os.OpenFile(trashDir+"/"+logFileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
223
- //if err != nil {
224
- // handleErr(err)
225
- // return
226
- //}
227
- //defer f.Close()
228
- //if _, err = f.WriteString(path + logSeparator + toMoveTo + "\n"); err != nil {
229
- // handleErr(err)
230
- // return
231
- //}
232
200
m := parseLogFile ()
233
201
m [path ] = toMoveTo // logfile format is path where it came from ==> path in trash
234
202
setLogFile (m )
235
- fmt .Println ("Trashed " + color .YellowString (path ) + " to " + color . YellowString ( toMoveTo ) + " \n Undo using " + color .YellowString ("rem --undo " + path ))
203
+ fmt .Println ("Trashed " + color .YellowString (path ) + "\n Undo using " + color .YellowString ("rem --undo " + path ))
236
204
}
237
205
238
206
func ensureTrashDir () {
@@ -244,6 +212,15 @@ func ensureTrashDir() {
244
212
}
245
213
}
246
214
215
+ func ensureLogFile () {
216
+ if _ , err := os .Stat (trashDir + "/" + logFileName ); os .IsNotExist (err ) {
217
+ _ , err = os .Create (trashDir + "/" + logFileName )
218
+ if err != nil {
219
+ handleErr (err )
220
+ }
221
+ }
222
+ }
223
+
247
224
func permanentlyDeleteFile (fileName string ) {
248
225
err := os .RemoveAll (fileName )
249
226
if err != nil {
0 commit comments