Mercurial > piecrust2
annotate piecrust/commands/builtin/info.py @ 787:f6f9a284a5f3
routing: Simplify how route functions are declared and handled.
* Site config now only has to declare the function name.
* Simply code for running route functions.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 01 Sep 2016 23:00:58 -0700 |
parents | f9d926669d7a |
children | 58ebf50235a5 |
rev | line source |
---|---|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
1 import os.path |
1
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 import logging |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
3 import fnmatch |
1
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 from piecrust.commands.base import ChefCommand |
107
10fc9c8bf682
Better support for times in YAML interop.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
5 from piecrust.configuration import ConfigurationDumper |
1
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
8 logger = logging.getLogger(__name__) |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
11 class RootCommand(ChefCommand): |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 def __init__(self): |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 super(RootCommand, self).__init__() |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
14 self.name = 'root' |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 self.description = "Gets the root directory of the current website." |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
17 def setupParser(self, parser, app): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
18 pass |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
19 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
20 def run(self, ctx): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
21 logger.info(ctx.app.root_dir) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
22 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
23 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
24 class ShowConfigCommand(ChefCommand): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
25 def __init__(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
26 super(ShowConfigCommand, self).__init__() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
27 self.name = 'showconfig' |
755
f9d926669d7a
chef: Make all the commands descriptions fit in one line.
Ludovic Chabant <ludovic@chabant.com>
parents:
731
diff
changeset
|
28 self.description = ("Shows the website's configuration.") |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
29 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
30 def setupParser(self, parser, app): |
161
516db87a04d4
cosmetic: pep8 compliance.
Ludovic Chabant <ludovic@chabant.com>
parents:
107
diff
changeset
|
31 parser.add_argument( |
516db87a04d4
cosmetic: pep8 compliance.
Ludovic Chabant <ludovic@chabant.com>
parents:
107
diff
changeset
|
32 'path', |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
33 help="The path to a config section or value", |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
34 nargs='?') |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
35 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
36 def run(self, ctx): |
567
a65f04ddbea2
showconfig: Don't crash when the whole config should be shown.
Ludovic Chabant <ludovic@chabant.com>
parents:
340
diff
changeset
|
37 if ctx.args.path: |
a65f04ddbea2
showconfig: Don't crash when the whole config should be shown.
Ludovic Chabant <ludovic@chabant.com>
parents:
340
diff
changeset
|
38 show = ctx.app.config.get(ctx.args.path) |
a65f04ddbea2
showconfig: Don't crash when the whole config should be shown.
Ludovic Chabant <ludovic@chabant.com>
parents:
340
diff
changeset
|
39 else: |
a65f04ddbea2
showconfig: Don't crash when the whole config should be shown.
Ludovic Chabant <ludovic@chabant.com>
parents:
340
diff
changeset
|
40 show = ctx.app.config.getAll() |
a65f04ddbea2
showconfig: Don't crash when the whole config should be shown.
Ludovic Chabant <ludovic@chabant.com>
parents:
340
diff
changeset
|
41 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
42 if show is not None: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
43 if isinstance(show, (dict, list)): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
44 import yaml |
107
10fc9c8bf682
Better support for times in YAML interop.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
45 out = yaml.dump(show, default_flow_style=False, |
10fc9c8bf682
Better support for times in YAML interop.
Ludovic Chabant <ludovic@chabant.com>
parents:
5
diff
changeset
|
46 Dumper=ConfigurationDumper) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
47 logger.info(out) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
48 else: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
49 logger.info(show) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
50 elif ctx.args.path: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
51 logger.error("No such configuration path: %s" % ctx.args.path) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
52 ctx.result = 1 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
53 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
54 |
163
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
55 class ShowSourcesCommand(ChefCommand): |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
56 def __init__(self): |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
57 super(ShowSourcesCommand, self).__init__() |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
58 self.name = 'sources' |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
59 self.description = "Shows the sources defined for this website." |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
60 |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
61 def setupParser(self, parser, app): |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
62 pass |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
63 |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
64 def run(self, ctx): |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
65 for src in ctx.app.sources: |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
66 logger.info("%s:" % src.name) |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
67 logger.info(" type: %s" % src.config.get('type')) |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
68 logger.info(" class: %s" % type(src)) |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
69 |
6d23473fab41
sources: Add `chef sources` command to list page sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
162
diff
changeset
|
70 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
71 class ShowRoutesCommand(ChefCommand): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
72 def __init__(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
73 super(ShowRoutesCommand, self).__init__() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
74 self.name = 'routes' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
75 self.description = "Shows the routes defined for this website." |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
76 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
77 def setupParser(self, parser, app): |
1
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
78 pass |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
79 |
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
80 def run(self, ctx): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
81 for route in ctx.app.routes: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
82 logger.info("%s:" % route.uri_pattern) |
711
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
567
diff
changeset
|
83 logger.info(" source: %s" % (route.source_name or '')) |
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
567
diff
changeset
|
84 logger.info(" generator: %s" % (route.generator_name or '')) |
168
56d6b17e057b
routes: Show regex patterns for routes.
Ludovic Chabant <ludovic@chabant.com>
parents:
164
diff
changeset
|
85 logger.info(" regex: %s" % route.uri_re.pattern) |
731
dafb7d76c2ba
routes: Show the route template function.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
86 logger.info(" function: %s(%s)" % ( |
787
f6f9a284a5f3
routing: Simplify how route functions are declared and handled.
Ludovic Chabant <ludovic@chabant.com>
parents:
755
diff
changeset
|
87 route.func_name, |
f6f9a284a5f3
routing: Simplify how route functions are declared and handled.
Ludovic Chabant <ludovic@chabant.com>
parents:
755
diff
changeset
|
88 ', '.join(route.func_parameters))) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
89 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
90 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
91 class ShowPathsCommand(ChefCommand): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
92 def __init__(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
93 super(ShowPathsCommand, self).__init__() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
94 self.name = 'paths' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
95 self.description = "Shows the paths that this website is using." |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
96 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
97 def setupParser(self, parser, app): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
98 pass |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
99 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
100 def run(self, ctx): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
101 app = ctx.app |
307
869a206facd5
internal: Remove mentions of plugins directories and sources.
Ludovic Chabant <ludovic@chabant.com>
parents:
168
diff
changeset
|
102 paths = ['theme_dir', 'templates_dirs', 'cache_dir'] |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
103 for p in paths: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
104 value = getattr(app, p) |
162
c4b155b08b52
paths: properly format lists of paths.
Ludovic Chabant <ludovic@chabant.com>
parents:
161
diff
changeset
|
105 if isinstance(value, list): |
c4b155b08b52
paths: properly format lists of paths.
Ludovic Chabant <ludovic@chabant.com>
parents:
161
diff
changeset
|
106 logging.info("%s:" % p) |
c4b155b08b52
paths: properly format lists of paths.
Ludovic Chabant <ludovic@chabant.com>
parents:
161
diff
changeset
|
107 for v in value: |
c4b155b08b52
paths: properly format lists of paths.
Ludovic Chabant <ludovic@chabant.com>
parents:
161
diff
changeset
|
108 logging.info(" - %s" % v) |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
109 else: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
110 logging.info("%s: %s" % (p, value)) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
111 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
112 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
113 class FindCommand(ChefCommand): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
114 def __init__(self): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
115 super(FindCommand, self).__init__() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
116 self.name = 'find' |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
117 self.description = "Find pages in the website." |
1
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
118 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
119 def setupParser(self, parser, app): |
161
516db87a04d4
cosmetic: pep8 compliance.
Ludovic Chabant <ludovic@chabant.com>
parents:
107
diff
changeset
|
120 parser.add_argument( |
516db87a04d4
cosmetic: pep8 compliance.
Ludovic Chabant <ludovic@chabant.com>
parents:
107
diff
changeset
|
121 'pattern', |
164
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
122 help="The pattern to match with page filenames", |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
123 nargs='?') |
161
516db87a04d4
cosmetic: pep8 compliance.
Ludovic Chabant <ludovic@chabant.com>
parents:
107
diff
changeset
|
124 parser.add_argument( |
164
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
125 '-n', '--name', |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
126 help="Limit the search to sources matching this name") |
161
516db87a04d4
cosmetic: pep8 compliance.
Ludovic Chabant <ludovic@chabant.com>
parents:
107
diff
changeset
|
127 parser.add_argument( |
516db87a04d4
cosmetic: pep8 compliance.
Ludovic Chabant <ludovic@chabant.com>
parents:
107
diff
changeset
|
128 '--full-path', |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
129 help="Return full paths instead of root-relative paths", |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
130 action='store_true') |
161
516db87a04d4
cosmetic: pep8 compliance.
Ludovic Chabant <ludovic@chabant.com>
parents:
107
diff
changeset
|
131 parser.add_argument( |
516db87a04d4
cosmetic: pep8 compliance.
Ludovic Chabant <ludovic@chabant.com>
parents:
107
diff
changeset
|
132 '--metadata', |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
133 help="Return metadata about the page instead of just the path", |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
134 action='store_true') |
164
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
135 parser.add_argument( |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
136 '--include-theme', |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
137 help="Include theme pages to the search", |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
138 action='store_true') |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
139 parser.add_argument( |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
140 '--exact', |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
141 help=("Match the exact given pattern, instead of any page " |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
142 "containing the pattern"), |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
143 action='store_true') |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
144 |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
145 def run(self, ctx): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
146 pattern = ctx.args.pattern |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
147 sources = list(ctx.app.sources) |
340
794b047c9726
find: Don't change the pattern when there's none.
Ludovic Chabant <ludovic@chabant.com>
parents:
334
diff
changeset
|
148 if not ctx.args.exact and pattern is not None: |
164
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
149 pattern = '*%s*' % pattern |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
150 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
151 for src in sources: |
164
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
152 if not ctx.args.include_theme and src.is_theme_source: |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
153 continue |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
154 if ctx.args.name and not fnmatch.fnmatch(src.name, ctx.args.name): |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
155 continue |
4534ccbdd2a3
find: Fix the `find` command, add more options.
Ludovic Chabant <ludovic@chabant.com>
parents:
163
diff
changeset
|
156 |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
157 page_facs = src.getPageFactories() |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
158 for pf in page_facs: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
159 name = os.path.relpath(pf.path, ctx.app.root_dir) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
160 if pattern is None or fnmatch.fnmatch(name, pattern): |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
161 if ctx.args.full_path: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
162 name = pf.path |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
163 if ctx.args.metadata: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
164 logger.info("path:%s" % pf.path) |
5 | 165 for key, val in pf.metadata.items(): |
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
166 logger.info("%s:%s" % (key, val)) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
167 logger.info("---") |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
168 else: |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
169 logger.info(name) |
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
170 |