source: lliurex-moving-core/trunk/fuentes/bin/llx-moving-cmd @ 714

Last change on this file since 714 was 714, checked in by jrpelegrina, 4 years ago

First release to xenial

  • Property svn:executable set to *
File size: 4.8 KB
Line 
1#!/usr/bin/python
2
3import sys
4import os
5import shutil
6import net.Lliurex.Classroom.MovingProfiles
7
8
9def print_usage():
10
11        print("")
12        print("Usage: llx-moving-cmd <command>")
13        print("")
14        print("Available commands:")
15        print("load                     loads profiles from server")
16        print("save                     save profiles to server")
17        print("show                     show rules")
18        print("match                    list matched files")
19        print("test (load|save)         performs a test without copying or deleting anything")
20        print("purge (local|remote)     purges either local or remote sync files")
21        print("backup NAME              creates a profile backup")
22        print("help                     print this help")
23       
24
25def main():
26
27        ret=0
28
29        if (len(sys.argv)<2):
30                print_usage()
31        else:
32                if(sys.argv[1]=="load"):
33                        mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
34                        mp.LoadSession()
35                       
36                       
37                elif(sys.argv[1]=="save"):
38                        mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
39                        mp.SaveSession()
40                       
41                elif(sys.argv[1]=="show"):
42                        mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
43                       
44                        print("Include:")
45                        for name in mp.cfg["include"]:
46                                value=mp.cfg["include"][name]
47                                tab=" "*(32-len(name))
48                                print("* "+name+tab+"["+value+"]")
49                               
50                        print("")
51                        print("Exclude:")
52                        for name in mp.cfg["exclude"]:
53                                value=mp.cfg["exclude"][name]
54                                tab=" "*(32-len(name))
55                                print("* "+name+tab+"["+value+"]")
56                       
57                elif(sys.argv[1]=="match"):     
58                        mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
59                       
60                        home=os.path.expanduser("~")
61                       
62                        print("Matched files:")
63                       
64                        for fname in os.listdir(home):
65                                if(mp.Match(fname)):
66                                        print("->"+fname)
67                       
68                elif(sys.argv[1]=="test" and len(sys.argv)>2):
69                        if(sys.argv[2]=="load"):
70                                mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
71                                home=os.path.expanduser("~")
72                                moving_path=mp.GetProfilePath()
73                               
74                                profile_files=os.listdir(moving_path)
75                               
76                                update_files=[]
77                                delete_files=[]
78                                append_files=[]
79                               
80                                for fname in os.listdir(home):
81                                        if mp.Match(fname):
82                                                if fname not in profile_files:
83                                                        delete_files.append(fname)
84                                                else:
85                                                        update_files.append(fname)
86
87                                home_files=os.listdir(home)
88                       
89                                for fname in profile_files:
90                                        if(mp.Match(fname)):
91                                                if (not fname in home_files):
92                                                        append_files.append(fname)
93                                       
94                                                       
95                                print("Local files updated:")
96                               
97                                for fname in update_files:
98                                        print("->"+fname)
99                                       
100                                print("Local files deleted:")
101                               
102                                for fname in delete_files:
103                                        print("->"+fname)
104                               
105                                print("Local files appended:")
106
107                                for fname in append_files:
108                                        print("->"+fname)                               
109
110
111                        elif(sys.argv[2]=="save"):
112                                mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
113                                home=os.path.expanduser("~")
114                                moving_path=mp.GetProfilePath()
115                               
116                                home_files=os.listdir(home)
117                               
118                                update_files=[]
119                                delete_files=[]
120                                append_files=[]
121                               
122                                for fname in os.listdir(moving_path):
123                                        if not fname in home_files:
124                                                delete_files.append(fname)
125                                        else:
126                                                if(mp.Match(fname)):
127                                                        update_files.append(fname)
128                                                else:
129                                                        delete_files.append(fname)
130
131                                profile_files=os.listdir(moving_path)
132                                for fname in home_files:
133                                        if (mp.Match(fname)):
134                                                if not fname in profile_files:
135                                                        append_files.append(fname)
136
137
138                                print("Remote files updated:")
139                               
140                                for fname in update_files:
141                                        print("->"+fname)
142                                       
143                                print("Remote files deleted:")
144                               
145                                for fname in delete_files:
146                                        print("->"+fname)
147
148                                print("Remote files appended:")
149                               
150                                for fname in append_files:
151                                        print("->"+fname)
152                               
153                               
154                       
155                        else:
156                                print_usage()
157                               
158                elif(sys.argv[1]=="purge" and len(sys.argv)>2):
159               
160                        if(sys.argv[2]=="local"):
161                                mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
162                                home=os.path.expanduser("~")
163                                                               
164                                print("Removing local files:")
165                       
166                                for fname in os.listdir(home):
167                                        if(mp.Match(fname)):
168                                                fpath = home+os.path.sep+fname
169                               
170                                                print("-> "+fpath)                             
171                               
172                                                if(os.path.isdir(fpath)):
173                                                        shutil.rmtree(fpath)
174                               
175                                                if(os.path.isfile(fpath)):
176                                                        os.remove(fpath)
177               
178                                print("done")
179                       
180                        elif(sys.argv[2]=="remote"):
181                                mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
182                                moving_path=mp.GetProfilePath()
183                               
184                                profile_files=os.listdir(moving_path)
185
186                                print("Removing remote files:")
187                       
188                                for fname in profile_files:
189                                        fpath = moving_path+os.path.sep+fname
190                               
191                                        print("-> "+fpath)                             
192                               
193                                        if(os.path.isdir(fpath)):
194                                                shutil.rmtree(fpath)
195                               
196                                        if(os.path.isfile(fpath)):
197                                                os.remove(fpath)
198               
199                                print("done")
200                       
201                        else:
202                                print_usage()
203               
204                elif(sys.argv[1]=="backup" and len(sys.argv)>2):
205                        mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
206                        mp.Backup(sys.argv[2]) 
207
208                elif(sys.argv[1]=="help"):
209                        print_usage()
210                else:
211                        print("Unknown command :"+sys.argv[1])
212                        print_usage()
213                        ret=1 #exit with error status
214       
215                       
216                       
217        sys.exit(ret)
218
219
220if __name__=="__main__":
221        main()
Note: See TracBrowser for help on using the repository browser.