diff piecrust/commands/builtin/info.py @ 164:4534ccbdd2a3

find: Fix the `find` command, add more options. The `--endpoint` option doesn't make any sense anymore since page sources could have non-file-system endpoints. This was replaced with `--name` to match source names instead. Also added `--include-theme`, with filtering out theme pages by default, and `--exact` to explicitely match the given pattern, with matching anything that contains the pattern by default.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 01 Jan 2015 21:34:06 -0800
parents 6d23473fab41
children 56d6b17e057b
line wrap: on
line diff
--- a/piecrust/commands/builtin/info.py	Thu Jan 01 21:21:00 2015 -0800
+++ b/piecrust/commands/builtin/info.py	Thu Jan 01 21:34:06 2015 -0800
@@ -112,12 +112,11 @@
     def setupParser(self, parser, app):
         parser.add_argument(
                 'pattern',
-                help="The pattern to match with page slugs",
+                help="The pattern to match with page filenames",
                 nargs='?')
         parser.add_argument(
-                '--endpoint',
-                help="The endpoint(s) to look into",
-                nargs='+')
+                '-n', '--name',
+                help="Limit the search to sources matching this name")
         parser.add_argument(
                 '--full-path',
                 help="Return full paths instead of root-relative paths",
@@ -126,14 +125,28 @@
                 '--metadata',
                 help="Return metadata about the page instead of just the path",
                 action='store_true')
+        parser.add_argument(
+                '--include-theme',
+                help="Include theme pages to the search",
+                action='store_true')
+        parser.add_argument(
+                '--exact',
+                help=("Match the exact given pattern, instead of any page "
+                      "containing the pattern"),
+                action='store_true')
 
     def run(self, ctx):
         pattern = ctx.args.pattern
         sources = list(ctx.app.sources)
-        if ctx.args.endpoint:
-            endpoints = ctx.args.endpoint
-            sources = [s for s in sources if s.endpoint in endpoints]
+        if not ctx.args.exact:
+            pattern = '*%s*' % pattern
+
         for src in sources:
+            if not ctx.args.include_theme and src.is_theme_source:
+                continue
+            if ctx.args.name and not fnmatch.fnmatch(src.name, ctx.args.name):
+                continue
+
             page_facs = src.getPageFactories()
             for pf in page_facs:
                 name = os.path.relpath(pf.path, ctx.app.root_dir)