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

Last change on this file since 3142 was 3142, checked in by hectorgh, 3 years ago

ignoring load exception

  • Property svn:executable set to *
File size: 4.9 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                        try:
34                                mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
35                                mp.LoadSession()
36                        except:
37                                #Ignore for now
38                                pass
39                       
40                       
41                elif(sys.argv[1]=="save"):
42                        mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
43                        mp.SaveSession()
44                       
45                elif(sys.argv[1]=="show"):
46                        mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
47                       
48                        print("Include:")
49                        for name in mp.cfg["include"]:
50                                value=mp.cfg["include"][name]
51                                tab=" "*(32-len(name))
52                                print("* "+name+tab+"["+value+"]")
53                               
54                        print("")
55                        print("Exclude:")
56                        for name in mp.cfg["exclude"]:
57                                value=mp.cfg["exclude"][name]
58                                tab=" "*(32-len(name))
59                                print("* "+name+tab+"["+value+"]")
60                       
61                elif(sys.argv[1]=="match"):     
62                        mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
63                       
64                        home=os.path.expanduser("~")
65                       
66                        print("Matched files:")
67                       
68                        for fname in os.listdir(home):
69                                if(mp.Match(fname)):
70                                        print("->"+fname)
71                       
72                elif(sys.argv[1]=="test" and len(sys.argv)>2):
73                        if(sys.argv[2]=="load"):
74                                mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
75                                home=os.path.expanduser("~")
76                                moving_path=mp.GetProfilePath()
77                               
78                                profile_files=os.listdir(moving_path)
79                               
80                                update_files=[]
81                                delete_files=[]
82                                append_files=[]
83                               
84                                for fname in os.listdir(home):
85                                        if mp.Match(fname):
86                                                if fname not in profile_files:
87                                                        delete_files.append(fname)
88                                                else:
89                                                        update_files.append(fname)
90
91                                home_files=os.listdir(home)
92                       
93                                for fname in profile_files:
94                                        if(mp.Match(fname)):
95                                                if (not fname in home_files):
96                                                        append_files.append(fname)
97                                       
98                                                       
99                                print("Local files updated:")
100                               
101                                for fname in update_files:
102                                        print("->"+fname)
103                                       
104                                print("Local files deleted:")
105                               
106                                for fname in delete_files:
107                                        print("->"+fname)
108                               
109                                print("Local files appended:")
110
111                                for fname in append_files:
112                                        print("->"+fname)                               
113
114
115                        elif(sys.argv[2]=="save"):
116                                mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
117                                home=os.path.expanduser("~")
118                                moving_path=mp.GetProfilePath()
119                               
120                                home_files=os.listdir(home)
121                               
122                                update_files=[]
123                                delete_files=[]
124                                append_files=[]
125                               
126                                for fname in os.listdir(moving_path):
127                                        if not fname in home_files:
128                                                delete_files.append(fname)
129                                        else:
130                                                if(mp.Match(fname)):
131                                                        update_files.append(fname)
132                                                else:
133                                                        delete_files.append(fname)
134
135                                profile_files=os.listdir(moving_path)
136                                for fname in home_files:
137                                        if (mp.Match(fname)):
138                                                if not fname in profile_files:
139                                                        append_files.append(fname)
140
141
142                                print("Remote files updated:")
143                               
144                                for fname in update_files:
145                                        print("->"+fname)
146                                       
147                                print("Remote files deleted:")
148                               
149                                for fname in delete_files:
150                                        print("->"+fname)
151
152                                print("Remote files appended:")
153                               
154                                for fname in append_files:
155                                        print("->"+fname)
156                               
157                               
158                       
159                        else:
160                                print_usage()
161                               
162                elif(sys.argv[1]=="purge" and len(sys.argv)>2):
163               
164                        if(sys.argv[2]=="local"):
165                                mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
166                                home=os.path.expanduser("~")
167                                                               
168                                print("Removing local files:")
169                       
170                                for fname in os.listdir(home):
171                                        if(mp.Match(fname)):
172                                                fpath = home+os.path.sep+fname
173                               
174                                                print("-> "+fpath)                             
175                               
176                                                if(os.path.isdir(fpath)):
177                                                        shutil.rmtree(fpath)
178                               
179                                                if(os.path.isfile(fpath)):
180                                                        os.remove(fpath)
181               
182                                print("done")
183                       
184                        elif(sys.argv[2]=="remote"):
185                                mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
186                                moving_path=mp.GetProfilePath()
187                               
188                                profile_files=os.listdir(moving_path)
189
190                                print("Removing remote files:")
191                       
192                                for fname in profile_files:
193                                        fpath = moving_path+os.path.sep+fname
194                               
195                                        print("-> "+fpath)                             
196                               
197                                        if(os.path.isdir(fpath)):
198                                                shutil.rmtree(fpath)
199                               
200                                        if(os.path.isfile(fpath)):
201                                                os.remove(fpath)
202               
203                                print("done")
204                       
205                        else:
206                                print_usage()
207               
208                elif(sys.argv[1]=="backup" and len(sys.argv)>2):
209                        mp = net.Lliurex.Classroom.MovingProfiles.MovingProfiles("")
210                        mp.Backup(sys.argv[2]) 
211
212                elif(sys.argv[1]=="help"):
213                        print_usage()
214                else:
215                        print("Unknown command :"+sys.argv[1])
216                        print_usage()
217                        ret=1 #exit with error status
218       
219                       
220                       
221        sys.exit(ret)
222
223
224if __name__=="__main__":
225        main()
Note: See TracBrowser for help on using the repository browser.