Split 'result' plugin type into 'location' and 'feedback'
> 'location' plugins generate locations the resource can be accessed > 'feedback' plugins present that location in some way that's useful to the human user Also don't user relative imports in default plugins
This commit is contained in:
parent
6a310b8ca9
commit
6d549d27c5
8 changed files with 43 additions and 23 deletions
2
examples
2
examples
|
@ -1 +1 @@
|
||||||
Subproject commit 1466438938c98442aa6de55065b7e6a06a7e8d50
|
Subproject commit 92bb65a049942b127ee6108bff5812c110acfe12
|
|
@ -26,7 +26,6 @@ from sshare.plugin import Plugin
|
||||||
from sshare.plugin import PluginManager
|
from sshare.plugin import PluginManager
|
||||||
from sshare.version import version
|
from sshare.version import version
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
arg_parser = argparse.ArgumentParser(
|
arg_parser = argparse.ArgumentParser(
|
||||||
prog="sshare",
|
prog="sshare",
|
||||||
|
@ -63,7 +62,7 @@ def main():
|
||||||
command_line = Plugin.internal(INTERNAL_PLUGIN_LOCATION, "command_line", config.get("plugins", dict()))
|
command_line = Plugin.internal(INTERNAL_PLUGIN_LOCATION, "command_line", config.get("plugins", dict()))
|
||||||
logger = Logger(command_line=command_line)
|
logger = Logger(command_line=command_line)
|
||||||
plugins = PluginManager(
|
plugins = PluginManager(
|
||||||
[ "logger", "source", "name", "upload", "result" ],
|
[ "logger", "source", "name", "upload", "location", "feedback" ],
|
||||||
logger,
|
logger,
|
||||||
config.get("plugins", dict()),
|
config.get("plugins", dict()),
|
||||||
arg_parser,
|
arg_parser,
|
||||||
|
@ -74,7 +73,8 @@ def main():
|
||||||
"current_time",
|
"current_time",
|
||||||
"append_type",
|
"append_type",
|
||||||
"ssh",
|
"ssh",
|
||||||
"log_result",
|
"uri",
|
||||||
|
"print_location",
|
||||||
)
|
)
|
||||||
sys.dont_write_bytecode = True
|
sys.dont_write_bytecode = True
|
||||||
plugins.add_from(
|
plugins.add_from(
|
||||||
|
@ -94,8 +94,6 @@ def main():
|
||||||
sources = []
|
sources = []
|
||||||
for plugin in plugins.source.active:
|
for plugin in plugins.source.active:
|
||||||
sources.append(plugin.get_source())
|
sources.append(plugin.get_source())
|
||||||
if len(sources) == 0:
|
|
||||||
logger.error("Error: No sources provided. Must activate at least one source plugin.")
|
|
||||||
|
|
||||||
for index, source in enumerate(sources):
|
for index, source in enumerate(sources):
|
||||||
name = ""
|
name = ""
|
||||||
|
@ -107,8 +105,12 @@ def main():
|
||||||
for plugin in plugins.upload.active:
|
for plugin in plugins.upload.active:
|
||||||
plugin.upload(name, source)
|
plugin.upload(name, source)
|
||||||
|
|
||||||
for name, _ in sources:
|
for index, (name, _) in enumerate(sources):
|
||||||
for plugin in plugins.result.active:
|
for plugin in plugins.location.active:
|
||||||
plugin.result(name)
|
sources[index] = plugin.get_location(name)
|
||||||
|
|
||||||
|
for location in sources:
|
||||||
|
for plugin in plugins.feedback.active:
|
||||||
|
sources[index] = plugin.give_feedback(location)
|
||||||
|
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
# You should have received a copy of the GNU General Public License along with
|
# You should have received a copy of the GNU General Public License along with
|
||||||
# SSHare. If not, see <https://www.gnu.org/licenses/>.
|
# SSHare. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from ..source import File
|
from sshare.plugins.source import File
|
||||||
from ..source import Raw
|
from sshare.plugins.source import Raw
|
||||||
|
|
||||||
plugin_type = "name"
|
plugin_type = "name"
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from ..config import Argument
|
from sshare.plugins.config import Argument
|
||||||
from ..source import File
|
from sshare.plugins.source import File
|
||||||
|
|
||||||
plugin_type = "name"
|
plugin_type = "name"
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,9 @@
|
||||||
# You should have received a copy of the GNU General Public License along with
|
# You should have received a copy of the GNU General Public License along with
|
||||||
# SSHare. If not, see <https://www.gnu.org/licenses/>.
|
# SSHare. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from ..config import Argument
|
from sshare.plugins.config import Argument
|
||||||
from ..config import NoDefault
|
from sshare.plugins.config import NoDefault
|
||||||
from ..source import File
|
from sshare.plugins.source import File
|
||||||
|
|
||||||
plugin_type = "source"
|
plugin_type = "source"
|
||||||
|
|
||||||
|
|
18
src/sshare/plugins/default/print_location.py
Normal file
18
src/sshare/plugins/default/print_location.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# This file is part of SSHare.
|
||||||
|
#
|
||||||
|
# SSHare is free software: you can redistribute it and/or modify it under the terms of
|
||||||
|
# the GNU General Public License as published by the Free Software Foundation,
|
||||||
|
# either version 3 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# SSHare is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
# more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along with
|
||||||
|
# SSHare. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
plugin_type = "feedback"
|
||||||
|
|
||||||
|
def give_feedback(location):
|
||||||
|
logger.info(f"Uploaded to '{location}'")
|
|
@ -15,9 +15,9 @@
|
||||||
import getpass
|
import getpass
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from ..config import NoDefault
|
from sshare.plugins.config import NoDefault
|
||||||
from ..source import File
|
from sshare.plugins.source import File
|
||||||
from ..source import Raw
|
from sshare.plugins.source import Raw
|
||||||
|
|
||||||
plugin_type = "upload"
|
plugin_type = "upload"
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,9 @@
|
||||||
# You should have received a copy of the GNU General Public License along with
|
# You should have received a copy of the GNU General Public License along with
|
||||||
# SSHare. If not, see <https://www.gnu.org/licenses/>.
|
# SSHare. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from ..config import NoDefault
|
from sshare.plugins.config import NoDefault
|
||||||
|
|
||||||
plugin_type = "result"
|
plugin_type = "location"
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
"protocol": "https",
|
"protocol": "https",
|
||||||
|
@ -23,9 +23,9 @@ config = {
|
||||||
"path": "",
|
"path": "",
|
||||||
}
|
}
|
||||||
|
|
||||||
def result(name):
|
def get_location(name):
|
||||||
if config.port:
|
if config.port:
|
||||||
config.port = f":{config.port}"
|
config.port = f":{config.port}"
|
||||||
else:
|
else:
|
||||||
config.port = ""
|
config.port = ""
|
||||||
logger.info(f"Uploaded to '{config.protocol}://{config.host}{config.port}{config.path}/{name}'")
|
return f"{config.protocol}://{config.host}{config.port}{config.path}/{name}"
|
Loading…
Reference in a new issue