All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Refactor and improve full help output from tools
@ 2021-08-13 16:24 Paul Barker
  2021-08-13 16:24 ` [PATCH v2 1/2] tools: Refactor full help printing Paul Barker
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Paul Barker @ 2021-08-13 16:24 UTC (permalink / raw)
  To: Simon Glass, u-boot; +Cc: Paul Barker

Sorry this took so long to get back to! Got there in the end though :)

Changes from v1:
  * Collected the full help printing code from patman, buildman & binman into a
    single function so that when support for PAGER containing arguments is added
    it applies to all the relevant tools.

Paul Barker (2):
  tools: Refactor full help printing
  tools: Handle PAGER containing arguments

 tools/binman/control.py   |  9 +++------
 tools/buildman/control.py | 10 ++++------
 tools/patman/main.py      | 12 ++++--------
 tools/patman/tools.py     | 14 ++++++++++++++
 4 files changed, 25 insertions(+), 20 deletions(-)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] tools: Refactor full help printing
  2021-08-13 16:24 [PATCH v2 0/2] Refactor and improve full help output from tools Paul Barker
@ 2021-08-13 16:24 ` Paul Barker
  2021-08-13 16:25 ` [PATCH v2 2/2] tools: Handle PAGER containing arguments Paul Barker
  2021-08-27 11:20 ` [PATCH v2 0/2] Refactor and improve full help output from tools Paul Barker
  2 siblings, 0 replies; 5+ messages in thread
From: Paul Barker @ 2021-08-13 16:24 UTC (permalink / raw)
  To: Simon Glass, u-boot; +Cc: Paul Barker

Collect the code for printing the full help message of patman, buildman
and binman into a single function in patman.tools.

Signed-off-by: Paul Barker <paul.barker@sancloud.com>
---
 tools/binman/control.py   |  9 +++------
 tools/buildman/control.py | 10 ++++------
 tools/patman/main.py      | 12 ++++--------
 tools/patman/tools.py     | 13 +++++++++++++
 4 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/tools/binman/control.py b/tools/binman/control.py
index dcba02ff7f..0dbcbc28e9 100644
--- a/tools/binman/control.py
+++ b/tools/binman/control.py
@@ -565,12 +565,9 @@ def Binman(args):
     global state
 
     if args.full_help:
-        pager = os.getenv('PAGER')
-        if not pager:
-            pager = 'more'
-        fname = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])),
-                            'README.rst')
-        command.Run(pager, fname)
+        tools.PrintFullHelp(
+            os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), 'README.rst')
+        )
         return 0
 
     # Put these here so that we can import this module without libfdt
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index a98d1b4c06..fd9664c85d 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -16,6 +16,7 @@ from patman import command
 from patman import gitutil
 from patman import patchstream
 from patman import terminal
+from patman import tools
 from patman.terminal import Print
 
 def GetPlural(count):
@@ -133,12 +134,9 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
     global builder
 
     if options.full_help:
-        pager = os.getenv('PAGER')
-        if not pager:
-            pager = 'more'
-        fname = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])),
-                             'README')
-        command.Run(pager, fname)
+        tools.PrintFullHelp(
+            os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), 'README')
+        )
         return 0
 
     gitutil.Setup()
diff --git a/tools/patman/main.py b/tools/patman/main.py
index 04e37a5931..e5be28e331 100755
--- a/tools/patman/main.py
+++ b/tools/patman/main.py
@@ -28,6 +28,7 @@ from patman import settings
 from patman import terminal
 from patman import test_util
 from patman import test_checkpatch
+from patman import tools
 
 epilog = '''Create patches from commits in a branch, check them and email them
 as specified by tags you place in the commits. Use -n to do a dry run first.'''
@@ -170,14 +171,9 @@ elif args.cmd == 'send':
         fd.close()
 
     elif args.full_help:
-        pager = os.getenv('PAGER')
-        if not pager:
-            pager = shutil.which('less')
-        if not pager:
-            pager = 'more'
-        fname = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])),
-                             'README')
-        command.Run(pager, fname)
+        tools.PrintFullHelp(
+            os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), 'README')
+        )
 
     else:
         # If we are not processing tags, no need to warning about bad ones
diff --git a/tools/patman/tools.py b/tools/patman/tools.py
index 877e37cd8d..96882264a2 100644
--- a/tools/patman/tools.py
+++ b/tools/patman/tools.py
@@ -581,3 +581,16 @@ def ToHexSize(val):
         hex value of size, or 'None' if the value is None
     """
     return 'None' if val is None else '%#x' % len(val)
+
+def PrintFullHelp(fname):
+    """Print the full help message for a tool using an appropriate pager.
+
+    Args:
+        fname: Path to a file containing the full help message
+    """
+    pager = os.getenv('PAGER')
+    if not pager:
+        pager = shutil.which('less')
+    if not pager:
+        pager = 'more'
+    command.Run(pager, fname)
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] tools: Handle PAGER containing arguments
  2021-08-13 16:24 [PATCH v2 0/2] Refactor and improve full help output from tools Paul Barker
  2021-08-13 16:24 ` [PATCH v2 1/2] tools: Refactor full help printing Paul Barker
@ 2021-08-13 16:25 ` Paul Barker
  2021-09-01 23:24   ` Tom Rini
  2021-08-27 11:20 ` [PATCH v2 0/2] Refactor and improve full help output from tools Paul Barker
  2 siblings, 1 reply; 5+ messages in thread
From: Paul Barker @ 2021-08-13 16:25 UTC (permalink / raw)
  To: Simon Glass, u-boot; +Cc: Paul Barker

When printing full help output from a tool, we should be able to handle
a PAGER variable which includes arguments, e.g. PAGER='less -F'.

Signed-off-by: Paul Barker <paul.barker@sancloud.com>
---
 tools/patman/tools.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/tools/patman/tools.py b/tools/patman/tools.py
index 96882264a2..92e3240470 100644
--- a/tools/patman/tools.py
+++ b/tools/patman/tools.py
@@ -5,6 +5,7 @@
 
 import glob
 import os
+import shlex
 import shutil
 import struct
 import sys
@@ -588,9 +589,9 @@ def PrintFullHelp(fname):
     Args:
         fname: Path to a file containing the full help message
     """
-    pager = os.getenv('PAGER')
+    pager = shlex.split(os.getenv('PAGER'))
     if not pager:
-        pager = shutil.which('less')
+        pager = [shutil.which('less')]
     if not pager:
-        pager = 'more'
-    command.Run(pager, fname)
+        pager = ['more']
+    command.Run(*pager, fname)
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/2] Refactor and improve full help output from tools
  2021-08-13 16:24 [PATCH v2 0/2] Refactor and improve full help output from tools Paul Barker
  2021-08-13 16:24 ` [PATCH v2 1/2] tools: Refactor full help printing Paul Barker
  2021-08-13 16:25 ` [PATCH v2 2/2] tools: Handle PAGER containing arguments Paul Barker
@ 2021-08-27 11:20 ` Paul Barker
  2 siblings, 0 replies; 5+ messages in thread
From: Paul Barker @ 2021-08-27 11:20 UTC (permalink / raw)
  To: Simon Glass, u-boot

[-- Attachment #1: Type: text/plain, Size: 883 bytes --]

On Fri, 13 Aug 2021 17:24:58 +0100
Paul Barker <paul.barker@sancloud.com> wrote:

> Sorry this took so long to get back to! Got there in the end though :)
> 
> Changes from v1:
>   * Collected the full help printing code from patman, buildman & binman into a
>     single function so that when support for PAGER containing arguments is added
>     it applies to all the relevant tools.
> 
> Paul Barker (2):
>   tools: Refactor full help printing
>   tools: Handle PAGER containing arguments
> 
>  tools/binman/control.py   |  9 +++------
>  tools/buildman/control.py | 10 ++++------
>  tools/patman/main.py      | 12 ++++--------
>  tools/patman/tools.py     | 14 ++++++++++++++
>  4 files changed, 25 insertions(+), 20 deletions(-)
> 

Sending a quick ping on these patches as it's been 2 weeks.

-- 
Paul Barker
Principal Software Engineer
SanCloud Ltd

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 2/2] tools: Handle PAGER containing arguments
  2021-08-13 16:25 ` [PATCH v2 2/2] tools: Handle PAGER containing arguments Paul Barker
@ 2021-09-01 23:24   ` Tom Rini
  0 siblings, 0 replies; 5+ messages in thread
From: Tom Rini @ 2021-09-01 23:24 UTC (permalink / raw)
  To: Paul Barker; +Cc: Simon Glass, u-boot

[-- Attachment #1: Type: text/plain, Size: 368 bytes --]

On Fri, Aug 13, 2021 at 05:25:00PM +0100, Paul Barker wrote:

> When printing full help output from a tool, we should be able to handle
> a PAGER variable which includes arguments, e.g. PAGER='less -F'.
> 
> Signed-off-by: Paul Barker <paul.barker@sancloud.com>

This results in this CI failure:
https://source.denx.de/u-boot/u-boot/-/jobs/316664

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-09-01 23:24 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-13 16:24 [PATCH v2 0/2] Refactor and improve full help output from tools Paul Barker
2021-08-13 16:24 ` [PATCH v2 1/2] tools: Refactor full help printing Paul Barker
2021-08-13 16:25 ` [PATCH v2 2/2] tools: Handle PAGER containing arguments Paul Barker
2021-09-01 23:24   ` Tom Rini
2021-08-27 11:20 ` [PATCH v2 0/2] Refactor and improve full help output from tools Paul Barker

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.