12 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f8dc8ee6d1 | |||
| 75faf02232 | |||
| 7eb15f2477 | |||
| b1d4e20295 | |||
| d50a33d9ab | |||
| 53ba9e6fbe | |||
| 4274a71c62 | |||
| f175f9d5c9 | |||
| 0be02c7154 | |||
| 18467a6500 | |||
| f7cc364be2 | |||
| 2e69639362 |
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
| f8dc8ee6d1 |
jw.pkg.lib.util.run_cmd(): Honour env in PTY mode
The evironment passed to run_cmd() via env is currently not honoured with mode:interactive. Fix that. Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| 75faf02232 |
jw.pkg.lib.util.run_cmd(): Add title parameter
Allow the caller to choose which title should be used for the command's logging output box. Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| 7eb15f2477 |
jw.pkg.lib: Don't log {e}
Don't log an Exception as {e} but as str(e) producing nicer output. Or as repr(e) if a backtrace is requested, because to people who can read backtraces, type info might be of interest. Also, remove pointless time stamps, those belong into the logging framework. Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| b1d4e20295 |
jw.pkg.util: Add sudo()
Move the body of BackendCmd.sudo() into a function. The rationale behind that is that its functionality is independent of the calling object for the most part, so having it in a function instead of a method is the more modular pattern. Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| d50a33d9ab |
jw.pkg.cmds.lib.Cmd: Define run()
Define run(), which calls _run() in the abstract base class Cmd, not in lib.Cmd. Otherwise lib.Cmd is not abstract, which will predictably confuse including code outside of jw-pkg. Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| 53ba9e6fbe |
lib.App: Stay functional without autocomplete
If Python's autocomplete is not installed, jw-pkg.py fails to run commands. Fix that in order stay compatible with minimal excecution environments. Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| 4274a71c62 |
lib.util.run_cmd(): Rewrite it to be async
run_cmd() is synchronous. Now that all commands are asynchronous, we can await it, so rewrite it to be asynchronous, too. Other changes: - Make it return stderr as well in case its needed - Drop into a pseuto-tty if
- cmd_input == "mode:interactive" or
- cmd_input == "mode:auto" and stdin is a TTY - Add argument env, defaulting to None. If it's a dict, it will be
the environment the command is run in This entails making all functions using run_cmd() async, too, including run_curl(), get_username() and get_password(). Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| f175f9d5c9 |
lib.Cmd: Add argument "parent" to __init__()
During __init__(), commands have no idea of their parent. This is not a problem as of now, but is easy to fix, and it's architecturally desirable to be prepared just in case, so add the parent argument to the ctor before more commands are added. Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| 0be02c7154 |
lib.App, .Cmd: Add modules
Add App and Cmd as generic base classes for multi-command applications. The code is taken from jw-python: The exising jw.pkg.App is very similar to the more capable jwutils.Cmds class, so, to avoid code duplication, add it here to allow for jwutils.Cmds and jw.pkg.App to derive from it at some point in the future. Both had to be slightly modified to work within jw-pkg's less equipped context, and will need futher code cleanup. Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| 18467a6500 |
lib.Types: Add module
Types is a container for types, notably classes, which are dynamically loaded from other modules. Which modules are loaded is based on the following criteria passed to its constructor: - mod_names: A list of modules to load and investigate - type_name_filter: A regular filter expression or None (default).
If it's None, all types pass this filter. - type_filter: A list of types the returned types must match.
Defaults to [], in which case all types pass this filter Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| f7cc364be2 |
lib.log: Add module
A dedicated logging module is currently provided by jw-python, but since it's often needed also in jw-pkg, and it's relatively small and maintainable, it seems justified to move it into jw-pkg. Signed-off-by: Jan Lindemann <jan@janware.com> |
|||
| 2e69639362 |
jw.pkg.build.lib: Move to jw.pkg.lib
In preparation of reorganizing the tree below cmds, move the lib subdirectory a level up. Signed-off-by: Jan Lindemann <jan@janware.com> |