diff mbox series

support/scripts/pkg-stats: add tilde '~' expansion for pathes

Message ID 20200307103704.20524-1-heiko.thiery@gmail.com
State Accepted
Headers show
Series support/scripts/pkg-stats: add tilde '~' expansion for pathes | expand

Commit Message

Heiko Thiery March 7, 2020, 10:37 a.m. UTC
The script arguments 'nvd-path', 'json' and 'html' currently does not
allow to have '~' in path for user home directory. With this patch
this '~' is expanded to the real user home directory.

Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
---
 support/scripts/pkg-stats | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Thomas Petazzoni March 7, 2020, 2:56 p.m. UTC | #1
On Sat,  7 Mar 2020 11:37:05 +0100
Heiko Thiery <heiko.thiery@gmail.com> wrote:

> The script arguments 'nvd-path', 'json' and 'html' currently does not
> allow to have '~' in path for user home directory. With this patch
> this '~' is expanded to the real user home directory.
> 
> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>

Isn't ~ supposed to be expanded by your shell before calling pkg-stats
? Here, pkg-stats --html ~/toto.html works perfectly fine without your
patch.

Best regards,

Thomas
Heiko Thiery March 7, 2020, 9 p.m. UTC | #2
Hi Thomas,

Am Sa., 7. März 2020 um 15:56 Uhr schrieb Thomas Petazzoni
<thomas.petazzoni@bootlin.com>:
>
> On Sat,  7 Mar 2020 11:37:05 +0100
> Heiko Thiery <heiko.thiery@gmail.com> wrote:
>
> > The script arguments 'nvd-path', 'json' and 'html' currently does not
> > allow to have '~' in path for user home directory. With this patch
> > this '~' is expanded to the real user home directory.
> >
> > Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
>
> Isn't ~ supposed to be expanded by your shell before calling pkg-stats
> ? Here, pkg-stats --html ~/toto.html works perfectly fine without your
> patch.
>
Indeed I didn't thought about that and you're right the shell should
expand that. But I saw that it was not.

I rechecked that and found out that there is a difference between
setting the argument of the option with or without a '='.

Without '=' the '~' is expanded by the shell (pkg-stats --html ~/out.html).
Wit '=' the '~' is not expanded by the shell (pkg-stats --html=~/out.html).


> Best regards,
>
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com

Heiko
Thomas Petazzoni April 12, 2020, 12:56 p.m. UTC | #3
On Sat,  7 Mar 2020 11:37:05 +0100
Heiko Thiery <heiko.thiery@gmail.com> wrote:

> The script arguments 'nvd-path', 'json' and 'html' currently does not
> allow to have '~' in path for user home directory. With this patch
> this '~' is expanded to the real user home directory.
> 
> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
> ---
>  support/scripts/pkg-stats | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)

Applied to master with an improved commit log to explain the difference
between --html=~/foo and --html ~/foo.

Thanks!

Thomas
diff mbox series

Patch

diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats
index 8a67e509e1..bfe3a3f8d4 100755
--- a/support/scripts/pkg-stats
+++ b/support/scripts/pkg-stats
@@ -861,12 +861,16 @@  def dump_json(packages, stats, date, commit, output):
         f.write('\n')
 
 
+def resolvepath(path):
+        return os.path.abspath(os.path.expanduser(path))
+
+
 def parse_args():
     parser = argparse.ArgumentParser()
     output = parser.add_argument_group('output', 'Output file(s)')
-    output.add_argument('--html', dest='html', action='store',
+    output.add_argument('--html', dest='html', type=resolvepath,
                         help='HTML output file')
-    output.add_argument('--json', dest='json', action='store',
+    output.add_argument('--json', dest='json', type=resolvepath,
                         help='JSON output file')
     packages = parser.add_mutually_exclusive_group()
     packages.add_argument('-n', dest='npackages', type=int, action='store',
@@ -874,7 +878,7 @@  def parse_args():
     packages.add_argument('-p', dest='packages', action='store',
                           help='List of packages (comma separated)')
     parser.add_argument('--nvd-path', dest='nvd_path',
-                        help='Path to the local NVD database')
+                        help='Path to the local NVD database', type=resolvepath)
     args = parser.parse_args()
     if not args.html and not args.json:
         parser.error('at least one of --html or --json (or both) is required')