Le projet CaliÉc consiste à documenter et automatiser une procédure pour réaliser, en utilisant des données libres (OpenStreetMap) et avec le logiciel libre QGIS, des cartes d’orientation très détaillées, à échelle rapprochée, pour de multiples usages.
http://www.linux-alpes.org/caliec/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.4 KiB
111 lines
3.4 KiB
#!/usr/bin/env python |
|
# coding=utf-8 |
|
"""This script uploads a plugin package to the plugin repository. |
|
Authors: A. Pasotti, V. Picavet |
|
git sha : $TemplateVCSFormat |
|
""" |
|
|
|
import sys |
|
import getpass |
|
import xmlrpc.client |
|
from optparse import OptionParser |
|
|
|
standard_library.install_aliases() |
|
|
|
# Configuration |
|
PROTOCOL = 'https' |
|
SERVER = 'plugins.qgis.org' |
|
PORT = '443' |
|
ENDPOINT = '/plugins/RPC2/' |
|
VERBOSE = False |
|
|
|
|
|
def main(parameters, arguments): |
|
"""Main entry point. |
|
|
|
:param parameters: Command line parameters. |
|
:param arguments: Command line arguments. |
|
""" |
|
address = "{protocol}://{username}:{password}@{server}:{port}{endpoint}".format( |
|
protocol=PROTOCOL, |
|
username=parameters.username, |
|
password=parameters.password, |
|
server=parameters.server, |
|
port=parameters.port, |
|
endpoint=ENDPOINT) |
|
print("Connecting to: %s" % hide_password(address)) |
|
|
|
server = xmlrpc.client.ServerProxy(address, verbose=VERBOSE) |
|
|
|
try: |
|
with open(arguments[0], 'rb') as handle: |
|
plugin_id, version_id = server.plugin.upload( |
|
xmlrpc.client.Binary(handle.read())) |
|
print("Plugin ID: %s" % plugin_id) |
|
print("Version ID: %s" % version_id) |
|
except xmlrpc.client.ProtocolError as err: |
|
print("A protocol error occurred") |
|
print("URL: %s" % hide_password(err.url, 0)) |
|
print("HTTP/HTTPS headers: %s" % err.headers) |
|
print("Error code: %d" % err.errcode) |
|
print("Error message: %s" % err.errmsg) |
|
except xmlrpc.client.Fault as err: |
|
print("A fault occurred") |
|
print("Fault code: %d" % err.faultCode) |
|
print("Fault string: %s" % err.faultString) |
|
|
|
|
|
def hide_password(url, start=6): |
|
"""Returns the http url with password part replaced with '*'. |
|
|
|
:param url: URL to upload the plugin to. |
|
:type url: str |
|
|
|
:param start: Position of start of password. |
|
:type start: int |
|
""" |
|
start_position = url.find(':', start) + 1 |
|
end_position = url.find('@') |
|
return "%s%s%s" % ( |
|
url[:start_position], |
|
'*' * (end_position - start_position), |
|
url[end_position:]) |
|
|
|
|
|
if __name__ == "__main__": |
|
parser = OptionParser(usage="%prog [options] plugin.zip") |
|
parser.add_option( |
|
"-w", "--password", dest="password", |
|
help="Password for plugin site", metavar="******") |
|
parser.add_option( |
|
"-u", "--username", dest="username", |
|
help="Username of plugin site", metavar="user") |
|
parser.add_option( |
|
"-p", "--port", dest="port", |
|
help="Server port to connect to", metavar="80") |
|
parser.add_option( |
|
"-s", "--server", dest="server", |
|
help="Specify server name", metavar="plugins.qgis.org") |
|
options, args = parser.parse_args() |
|
if len(args) != 1: |
|
print("Please specify zip file.\n") |
|
parser.print_help() |
|
sys.exit(1) |
|
if not options.server: |
|
options.server = SERVER |
|
if not options.port: |
|
options.port = PORT |
|
if not options.username: |
|
# interactive mode |
|
username = getpass.getuser() |
|
print("Please enter user name [%s] :" % username, end=' ') |
|
|
|
res = input() |
|
if res != "": |
|
options.username = res |
|
else: |
|
options.username = username |
|
if not options.password: |
|
# interactive mode |
|
options.password = getpass.getpass() |
|
main(options, args)
|
|
|