import repository from arizona
[raven.git] / apps / mprepo / repoclassify.py
1 import os
2
3 def isPubkey(filename):
4    """
5    <Purpose>
6       Determines if the filename passed in is a publickey
7
8    <Arguments>
9       filename: A string containing the file name of origin.
10
11    <Exceptions>
12       None.
13
14    <Side Effects>
15       None.
16
17    <Returns>
18       True if the file has .tpfile in the name, false if not.
19    """
20    return filename.endswith(".publickey")
21
22 def isTPFile(filename):
23    """
24    <Purpose>
25       Determines if the filename passed in is a tpfile
26
27    <Arguments>
28       filename: A string containing the file name of origin.
29
30    <Exceptions>
31       None.
32
33    <Side Effects>
34       None.
35
36    <Returns>
37       True if the file has .tpfile in the name, false if not.
38    """
39    return filename.endswith(".tpfile")
40
41 def isPackage(filename):
42    """
43    <Purpose>
44       Determines if the filename passed in is a package file by checking common package extensions
45
46    <Arguments>
47       filename: A string containing the file name of origin.
48
49    <Exceptions>
50       None.
51
52    <Side Effects>
53       None.
54
55    <Returns>
56       True if the file is a pacakge file
57    """
58    return filename.endswith(".rpm") or filename.endswith(".tar") or \
59           filename.endswith(".tar.gz") or filename.endswith("tar.bz2") or \
60           filename.endswith(".tgz") or filename.endswith(".metadata")
61
62 def isConfFile(filename):
63    """
64    <Purpose>
65       Determines if the filename passed in is a configuration file by testing for the .conf extension.
66
67    <Arguments>
68       filename: A string containing the file name of origin.
69
70    <Exceptions>
71       None.
72
73    <Side Effects>
74       None.
75
76    <Returns>
77       True if the file has .conf in the name, false if not.
78    """
79    return filename.endswith(".conf")
80
81 def isPacmanFile(filename):
82    """
83    <Purpose>
84       Determines if the filename passed in is a pacman file by testing for either packages.pacman or groups.pacman
85       in the file name.
86
87    <Arguments>
88       filename: A string containing the file name of origin.
89
90    <Exceptions>
91       None.
92
93    <Side Effects>
94       None.
95
96    <Returns>
97       True if the file has either groups.pacman or packages.pacman in the name, false if not.
98    """
99    return filename.endswith(".packages.pacman") or filename.endswith(".groups.pacman")
100
101 def getFiletype(filename):
102    """
103    <Purpose>
104       Examines a filename to see what kind of file it is.
105
106    <Arguments>
107       filename: A string containing the file name of origin.
108
109    <Exceptions>
110       None.
111
112    <Side Effects>
113       None.
114
115    <Returns>
116       "package", "conf", "pacman", "trustedpackage", "pubkey", or "other"
117    """
118    if isPackage(filename):
119       return 'package'
120    elif isConfFile(filename):
121       return 'conf'
122    elif isPacmanFile(filename):
123       return 'pacman'
124    elif isTPFile(filename):
125       return 'trustedpackage'
126    elif isPubkey(filename):
127       return 'pubkey'
128    else:
129       return 'other'
130
131 def signedFileType(filename):
132     """
133     <Purpose>
134        Looks inside of a signed file to see what type of file it is.
135
136     <Arguments>
137        filename: name of the file
138
139     <Exceptions>
140        None.
141
142     <Side Effects>
143        None.
144
145     <Returns>
146        "pacman", "trustedpackage", or "other"
147     """
148     if not os.path.isfile(filename):\r
149         print "error: "+filename+" is not a file."\r
150         sys.exit(1)\r
151 \r
152     #open the file up\r
153     file = open(filename, 'r')\r
154     filestring = file.read()\r
155 \r
156     # check and make sure it is a signed file\r
157     if not ("/SIGNED_FILE" in filestring):\r
158         return "unsigned"\r
159 \r
160     if "/TRUSTEDPACKAGES" in filestring:\r
161         return "trustedpackage"\r
162     elif "/PACKAGES" in filestring:\r
163         return "pacman"\r
164     elif "/GROUPS" in filestring:\r
165         return "pacman"\r
166     else:\r
167         return "other"
168
169