Fixed Syncthing folder status events and exec command.
[src/xds/xds-agent.git] / lib / agent / project-pathmap.go
1 package agent
2
3 // IPROJECT interface implementation for native/path mapping projects
4
5 // PathMap .
6 type PathMap struct {
7         *Context
8         server *XdsServer
9         folder *XdsFolderConfig
10 }
11
12 // NewProjectPathMap Create a new instance of PathMap
13 func NewProjectPathMap(ctx *Context, svr *XdsServer) *PathMap {
14         p := PathMap{
15                 Context: ctx,
16                 server:  svr,
17                 folder:  &XdsFolderConfig{},
18         }
19         return &p
20 }
21
22 // Add a new project
23 func (p *PathMap) Add(cfg ProjectConfig) (*ProjectConfig, error) {
24         var err error
25
26         // SEB TODO: check local/server directory access
27
28         err = p.server.FolderAdd(p.server.ProjectToFolder(cfg), p.folder)
29         if err != nil {
30                 return nil, err
31         }
32
33         return p.GetProject(), nil
34 }
35
36 // Delete a project
37 func (p *PathMap) Delete() error {
38         return p.server.FolderDelete(p.folder.ID)
39 }
40
41 // GetProject Get public part of project config
42 func (p *PathMap) GetProject() *ProjectConfig {
43         prj := p.server.FolderToProject(*p.folder)
44         prj.ServerID = p.server.ID
45         return &prj
46 }
47
48 // UpdateProject Set project config
49 func (p *PathMap) UpdateProject(prj ProjectConfig) (*ProjectConfig, error) {
50         p.folder = p.server.ProjectToFolder(prj)
51         np := p.GetProject()
52         if err := p.events.Emit(EVTProjectChange, np); err != nil {
53                 return np, err
54         }
55         return np, nil
56 }
57
58 // GetServer Get the XdsServer that holds this project
59 func (p *PathMap) GetServer() *XdsServer {
60         return p.server
61 }
62
63 // Sync Force project files synchronization
64 func (p *PathMap) Sync() error {
65         return nil
66 }
67
68 // IsInSync Check if project files are in-sync
69 func (p *PathMap) IsInSync() (bool, error) {
70         return true, nil
71 }