All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] scripts/layer-overview: improve layer detection
@ 2022-01-19 21:20 Ross Burton
  2022-01-19 21:20 ` [PATCH 2/6] scripts/machine-summary: harvest more patch data Ross Burton
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Ross Burton @ 2022-01-19 21:20 UTC (permalink / raw)
  To: meta-arm

Refactor the script somewhat, and detect whether the starting directory
is a single layer, or a collection of layers.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 scripts/layer-overview.py | 60 ++++++++++++++++++++++++++-------------
 1 file changed, 41 insertions(+), 19 deletions(-)

diff --git a/scripts/layer-overview.py b/scripts/layer-overview.py
index 24a9a5b6..326470e6 100755
--- a/scripts/layer-overview.py
+++ b/scripts/layer-overview.py
@@ -6,31 +6,24 @@ Print an overview of the layer to help writing release notes.
 Output includes sublayers, machines, recipes.
 """
 
+import argparse
+import sys
+
 # TODO:
 # - More human-readable output
 # - Diff mode, give two revisions and list the changes
-# - Support finding no sublayers, meaning the path is a single layer
-
-import argparse
-parser = argparse.ArgumentParser()
-parser.add_argument("repository")
-parser.add_argument("revision", nargs="?")
-args = parser.parse_args()
 
-if args.revision:
-    import gitpathlib
-    base = gitpathlib.GitPath(args.repository, args.revision)
-else:
-    import pathlib
-    base = pathlib.Path(args.repository)
+def is_layer(path):
+    """
+    Determine if this path looks like a layer (is a directory and contains conf/layer.conf).
+    """
+    return path.is_dir() and (path / "conf" / "layer.conf").exists()
 
-print("Sub-Layers")
-sublayers = sorted(p for p in base.glob("meta-*") if p.is_dir())
-for l in sublayers:
-    print(f" {l.name}")
-print()
 
-for layer in sublayers:
+def print_layer(layer):
+    """
+    Print a summary of the layer.
+    """
     print(layer.name)
 
     machines = sorted(p for p in layer.glob("conf/machine/*.conf"))
@@ -50,3 +43,32 @@ for layer in sublayers:
             else:
                 print(f"  {r.stem}")
         print()
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument("repository")
+parser.add_argument("revision", nargs="?")
+args = parser.parse_args()
+
+if args.revision:
+    import gitpathlib
+    base = gitpathlib.GitPath(args.repository, args.revision)
+else:
+    import pathlib
+    base = pathlib.Path(args.repository)
+
+if is_layer(base):
+    print_layer(base)
+else:
+    sublayers = sorted(p for p in base.glob("meta-*") if is_layer(p))
+    if sublayers:
+        print("Sub-Layers")
+        for l in sublayers:
+            print(f" {l.name}")
+        print()
+
+        for layer in sublayers:
+            print_layer(layer)
+    else:
+        print(f"No layers found in {base}", file=sys.stderr)
+        sys.exit(1)
-- 
2.25.1



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

end of thread, other threads:[~2022-01-20  3:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-19 21:20 [PATCH 1/6] scripts/layer-overview: improve layer detection Ross Burton
2022-01-19 21:20 ` [PATCH 2/6] scripts/machine-summary: harvest more patch data Ross Burton
2022-01-19 21:20 ` [PATCH 3/6] scripts/machine-summary: refactor output to classes Ross Burton
2022-01-19 21:20 ` [PATCH 4/6] scripts/machine-summary: put more version information into the context Ross Burton
2022-01-19 21:20 ` [PATCH 5/6] scripts/machine-summary: write per-machine reports with more details Ross Burton
2022-01-19 21:20 ` [PATCH 6/6] CI: update for changes to machine-summary Ross Burton
2022-01-20  3:50 ` [PATCH 1/6] scripts/layer-overview: improve layer detection Jon Mason

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.