Compare commits
No commits in common. "82b4d8de7c8835f5c97d80e7cf5867550405f758" and "f0f49cce183040312d5c6b7c558fc100f21d27c6" have entirely different histories.
82b4d8de7c
...
f0f49cce18
10 changed files with 13 additions and 85 deletions
|
@ -1,5 +0,0 @@
|
||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
for i in range(0, 10000):
|
|
||||||
print(f"\033[{(i % 7) + 30}mHello World!")
|
|
||||||
print(f"\033[{(i % 7) + 90}mHello World!")
|
|
|
@ -29,8 +29,3 @@ sshare-validate = "sshare.validator:main"
|
||||||
|
|
||||||
[tool.setuptools_scm]
|
[tool.setuptools_scm]
|
||||||
version_file = "src/sshare/version.py"
|
version_file = "src/sshare/version.py"
|
||||||
|
|
||||||
[tool.pytest.ini_options]
|
|
||||||
addopts = [
|
|
||||||
"--import-mode=importlib"
|
|
||||||
]
|
|
||||||
|
|
|
@ -12,8 +12,6 @@
|
||||||
# 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/>.
|
||||||
|
|
||||||
import argparse
|
|
||||||
|
|
||||||
class NoDefault: pass
|
class NoDefault: pass
|
||||||
|
|
||||||
def Flag(name=None, help=None):
|
def Flag(name=None, help=None):
|
||||||
|
@ -35,8 +33,6 @@ class Argument:
|
||||||
self._short = None
|
self._short = None
|
||||||
self._long = name
|
self._long = name
|
||||||
|
|
||||||
self._is_remainder = kwargs.get("nargs", None) == argparse.REMAINDER
|
|
||||||
|
|
||||||
if not "default" in kwargs:
|
if not "default" in kwargs:
|
||||||
kwargs["default"] = NoDefault
|
kwargs["default"] = NoDefault
|
||||||
kwargs["default"] = _None(kwargs["default"])
|
kwargs["default"] = _None(kwargs["default"])
|
||||||
|
@ -47,8 +43,6 @@ class Argument:
|
||||||
if self._long == None:
|
if self._long == None:
|
||||||
self._long = argument
|
self._long = argument
|
||||||
self._kwargs["metavar"] = argument
|
self._kwargs["metavar"] = argument
|
||||||
if self._is_remainder:
|
|
||||||
self._long = self.dest()
|
|
||||||
|
|
||||||
def set_flags(self, short, long):
|
def set_flags(self, short, long):
|
||||||
if short != None:
|
if short != None:
|
||||||
|
@ -81,13 +75,11 @@ class Argument:
|
||||||
|
|
||||||
def add(self, arg_parser):
|
def add(self, arg_parser):
|
||||||
flags = []
|
flags = []
|
||||||
kwargs = self._kwargs
|
|
||||||
if self._is_remainder:
|
|
||||||
flags.append(self._long)
|
|
||||||
else:
|
|
||||||
if self._short != None: flags.append(f"-{self._short}")
|
if self._short != None: flags.append(f"-{self._short}")
|
||||||
if self._long != None: flags.append(f"--{self._long}")
|
if self._long != None: flags.append(f"--{self._long}")
|
||||||
kwargs["dest"] = self.dest()
|
kwargs = self._kwargs | {
|
||||||
|
"dest": self.dest()
|
||||||
|
}
|
||||||
arg_parser.add_argument(
|
arg_parser.add_argument(
|
||||||
*flags,
|
*flags,
|
||||||
**kwargs
|
**kwargs
|
||||||
|
|
|
@ -14,9 +14,6 @@
|
||||||
|
|
||||||
import importlib
|
import importlib
|
||||||
import importlib.util
|
import importlib.util
|
||||||
import sys
|
|
||||||
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
from sshare.plugin.config import Flag
|
from sshare.plugin.config import Flag
|
||||||
from sshare.plugin.config import NoDefault
|
from sshare.plugin.config import NoDefault
|
||||||
|
@ -35,7 +32,6 @@ class PluginLoader:
|
||||||
in ([ "command_line" ] if command_line else []) + [
|
in ([ "command_line" ] if command_line else []) + [
|
||||||
"file",
|
"file",
|
||||||
"stdin",
|
"stdin",
|
||||||
"wrap_command",
|
|
||||||
"current_time",
|
"current_time",
|
||||||
"append_type",
|
"append_type",
|
||||||
"ssh",
|
"ssh",
|
||||||
|
@ -53,9 +49,9 @@ class PluginLoader:
|
||||||
]
|
]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def at(*args, logger=None, config=dict(), flags=dict()):
|
def at(logger=None, config=dict(), flags=dict(), *args):
|
||||||
return [
|
return [
|
||||||
Plugin.external(Path(plugin), logger, config, flags)
|
Plugin.external(plugin, logger, config, flags)
|
||||||
for plugin
|
for plugin
|
||||||
in args
|
in args
|
||||||
]
|
]
|
||||||
|
|
|
@ -21,7 +21,7 @@ plugin_type = "source"
|
||||||
|
|
||||||
activate = { "stdin" }
|
activate = { "stdin" }
|
||||||
config = {
|
config = {
|
||||||
"suffix": "txt",
|
"suffix": "txt"
|
||||||
}
|
}
|
||||||
args = {
|
args = {
|
||||||
"stdin": Flag(help="Upload from stdin")
|
"stdin": Flag(help="Upload from stdin")
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
# 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/>.
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import locale
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
from sshare.plugin.config import Argument
|
|
||||||
from sshare.plugin.source import Raw
|
|
||||||
|
|
||||||
plugin_type = "source"
|
|
||||||
|
|
||||||
activate = { "command" }
|
|
||||||
config = {
|
|
||||||
"suffix": "txt",
|
|
||||||
}
|
|
||||||
args = {
|
|
||||||
"command": Argument(
|
|
||||||
nargs=argparse.REMAINDER,
|
|
||||||
help="Upload the contents of the wrapped command",
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
def init():
|
|
||||||
config.command = config.command[1:]
|
|
||||||
|
|
||||||
def get_source():
|
|
||||||
output = b""
|
|
||||||
with subprocess.Popen(
|
|
||||||
config.command,
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
stderr=subprocess.STDOUT,
|
|
||||||
bufsize=0,
|
|
||||||
) as process:
|
|
||||||
for line in process.stdout:
|
|
||||||
print(line.decode(locale.getpreferredencoding()), end="")
|
|
||||||
output += line
|
|
||||||
|
|
||||||
return Raw(config.suffix, output)
|
|
|
@ -113,7 +113,7 @@ def main():
|
||||||
arg_parser.add_argument(
|
arg_parser.add_argument(
|
||||||
"plugins",
|
"plugins",
|
||||||
nargs="*",
|
nargs="*",
|
||||||
help="plugin(s) to be validated (Default: all external plugins)",
|
help="plugin(s) to be validated",
|
||||||
)
|
)
|
||||||
arguments = arg_parser.parse_args()
|
arguments = arg_parser.parse_args()
|
||||||
if arguments.dev:
|
if arguments.dev:
|
||||||
|
|
4
test_out.py
Executable file
4
test_out.py
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
for i in range(0, 5):
|
||||||
|
print("\033[91mHello World!")
|
|
@ -1,4 +0,0 @@
|
||||||
from src.sshare.plugin.config import Argument
|
|
||||||
|
|
||||||
def test_foo():
|
|
||||||
assert True
|
|
Loading…
Reference in a new issue