-
Notifications
You must be signed in to change notification settings - Fork 0
/
filesystem.go
73 lines (64 loc) · 1.71 KB
/
filesystem.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package main
import( "fmt"
"io/ioutil"
"os"
"github.com/Crackerz/fsUtils"
)
func initFileSystem(folder string) {
fmt.Printf("Configuring Directory \"%s/\"...\n",folder)
dir,err:=ioutil.ReadDir(folder)
if err!=nil {
panic("Directory Not Found Error: "+err.Error())
}
dirNames:=[]string{pendingDir,processingDir,completedDir,resultsDir}
dirFound:=[]bool{false,false,false,false}
for _,file := range dir {
for i,name := range dirNames {
if file.Name()==name&&file.IsDir() {
fmt.Printf("Found %s...\n",name)
dirFound[i]=true
}
}
}
var permissions os.FileMode
permissions = os.ModeDir | os.ModePerm
for i,file := range dirNames {
if !dirFound[i] {
fmt.Printf("Creating %s...\n",file)
os.Mkdir(folder+"/"+file,permissions)
}
}
}
func SetRootDir(folder string) {
Server.RootDir = folder
slash := folder+"/"
initFileSystem(folder)
SetProgram(slash+program)
//Begin Monitoring for Changes
var monitor fsUtils.Monitor
go monitor.Directory(slash+pendingDir,fileAdd,nil)
}
func fileAdd(filename string) {
fmt.Println("Detected new file: "+filename)
Server.pendingJobs <-filename
}
func markProcessing(filename string) {
src:=Server.RootDir+"/"+pendingDir+"/"+filename
dst:=Server.RootDir+"/"+processingDir+"/"+filename
fmt.Println("Moving from: ",src," to ",dst)
err:=os.Rename(src,dst)
if err!=nil {
fmt.Println(err.Error())
}
}
func markComplete(filename string, result []byte) {
src:=Server.RootDir+"/"+processingDir+"/"+filename
dst:=Server.RootDir+"/"+completedDir+"/"+filename
fmt.Println("Moving from: ",src," to ",dst)
err:=os.Rename(src,dst)
if err!=nil {
fmt.Println(err.Error())
}
out:=Server.RootDir+"/"+resultsDir+"/"+filename
ioutil.WriteFile(out,result,os.ModePerm)
}