indentation'ın ağzına iki tokat vurasım var.
This commit is contained in:
+45
-45
@@ -12,69 +12,69 @@ from sys import exit
|
|||||||
import pisiconfig
|
import pisiconfig
|
||||||
|
|
||||||
class FetchError (Exception):
|
class FetchError (Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class Fetcher:
|
class Fetcher:
|
||||||
"""Yet another Pisi tool for fetching files from various sources.."""
|
"""Yet another Pisi tool for fetching files from various sources.."""
|
||||||
def __init__(self, uri):
|
def __init__(self, uri):
|
||||||
self.uri = uri
|
self.uri = uri
|
||||||
self.filedest = pisiconfig.archives_dir
|
self.filedest = pisiconfig.archives_dir
|
||||||
self.scheme = "file"
|
self.scheme = "file"
|
||||||
self.netloc = ""
|
self.netloc = ""
|
||||||
self.filepath = ""
|
self.filepath = ""
|
||||||
self.filename = ""
|
self.filename = ""
|
||||||
|
|
||||||
def fetch (self):
|
def fetch (self):
|
||||||
from string import split
|
from string import split
|
||||||
u = urlparse.urlparse(self.uri)
|
u = urlparse.urlparse(self.uri)
|
||||||
self.scheme, self.netloc, self.filepath = u[0], u[1], u[2]
|
self.scheme, self.netloc, self.filepath = u[0], u[1], u[2]
|
||||||
self.filename = split(self.filepath, "/")[-1:][0]
|
self.filename = split(self.filepath, "/")[-1:][0]
|
||||||
|
|
||||||
if self.filename == "":
|
if self.filename == "":
|
||||||
self.err("filename error")
|
self.err("filename error")
|
||||||
|
|
||||||
if os.access(self.filedest, os.W_OK) == False:
|
if os.access(self.filedest, os.W_OK) == False:
|
||||||
self.err("no perm to write destination")
|
self.err("no perm to write destination")
|
||||||
|
|
||||||
scheme_err = lambda: self.err("unexpected scheme (expecting file, http or ftp)")
|
scheme_err = lambda: self.err("unexpected scheme (expecting file, http or ftp)")
|
||||||
|
|
||||||
actions = {
|
actions = {
|
||||||
'file': self.fetchLocalFile,
|
'file': self.fetchLocalFile,
|
||||||
'http': self.fetchRemoteFile,
|
'http': self.fetchRemoteFile,
|
||||||
'ftp' : self.fetchRemoteFile
|
'ftp' : self.fetchRemoteFile
|
||||||
}; actions.get(self.scheme, scheme_err)()
|
}; actions.get(self.scheme, scheme_err)()
|
||||||
|
|
||||||
def fetchLocalFile (self):
|
def fetchLocalFile (self):
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
|
||||||
if os.access(self.filepath, os.F_OK) == False:
|
if os.access(self.filepath, os.F_OK) == False:
|
||||||
self.err("no such file or no perm to read")
|
self.err("no such file or no perm to read")
|
||||||
|
|
||||||
copyfile(self.filepath, self.filedest + "/" + self.filename)
|
copyfile(self.filepath, self.filedest + "/" + self.filename)
|
||||||
|
|
||||||
def fetchRemoteFile (self):
|
def fetchRemoteFile (self):
|
||||||
try:
|
try:
|
||||||
file = urllib.urlopen(self.uri)
|
file = urllib.urlopen(self.uri)
|
||||||
|
|
||||||
except IOError, e:
|
except IOError, e:
|
||||||
self.err(e.strerror[1])
|
self.err(e.strerror[1])
|
||||||
|
|
||||||
dest = open(self.filedest + "/" + self.filename , "w")
|
dest = open(self.filedest + "/" + self.filename , "w")
|
||||||
dest.write(file.read())
|
dest.write(file.read())
|
||||||
|
|
||||||
def err (self, error):
|
def err (self, error):
|
||||||
raise FetchError, error
|
raise FetchError, error
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
print "Usage: %s URI" % argv[0]
|
print "Usage: %s URI" % argv[0]
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if len(argv) != 2:
|
if len(argv) != 2:
|
||||||
usage()
|
usage()
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
f = Fetcher(argv[1])
|
f = Fetcher(argv[1])
|
||||||
f.fetch()
|
f.fetch()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
Reference in New Issue
Block a user