Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: recipe_engine/depgraph.py

Issue 2848443003: [recipes.py] add missing helpstrings, merge test subcommands into main parser. (Closed)
Patch Set: rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « recipe_engine/bundle.py ('k') | recipe_engine/doc.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2016 The LUCI Authors. All rights reserved. 1 # Copyright 2016 The LUCI Authors. All rights reserved.
2 # Use of this source code is governed under the Apache License, Version 2.0 2 # Use of this source code is governed under the Apache License, Version 2.0
3 # that can be found in the LICENSE file. 3 # that can be found in the LICENSE file.
4 4
5 from __future__ import print_function 5 from __future__ import print_function
6 6
7 import sys 7 import sys
8 8
9 from . import loader 9 from . import loader
10 10
11 from . import env 11 from . import env
12 12
13 import argparse # this is vendored 13 import argparse # this is vendored
14 14
15 15
16 _GRAPH_HEADER = """strict digraph { 16 _GRAPH_HEADER = """strict digraph {
17 concentrate = true; 17 concentrate = true;
18 ranksep = 2; 18 ranksep = 2;
19 nodesep = 0.25; 19 nodesep = 0.25;
20 """ 20 """
21 21
22 _GRAPH_FOOTER = """} 22 _GRAPH_FOOTER = """}
23 """ 23 """
24 24
25 25
26 def add_subparser(parser): 26 def add_subparser(parser):
27 depgraph_p = parser.add_parser( 27 depgraph_p = parser.add_parser(
28 'depgraph', 28 'depgraph',
29 description=( 29 help='Produce graphviz graph of recipe and recipe module dependencies.',
30 'Produce graph of recipe and recipe module dependencies. Example: ' 30 description=(
31 './recipes.py --package infra/config/recipes.cfg depgraph | tred | ' 31 'Produce graphviz graph of recipe and recipe module dependencies. '
32 'dot -Tpdf > graph.pdf')) 32 'Example: ./recipes.py --package infra/config/recipes.cfg depgraph | '
33 'tred | dot -Tpdf > graph.pdf'))
33 depgraph_p.add_argument( 34 depgraph_p.add_argument(
34 '--output', type=argparse.FileType('w'), default=sys.stdout, 35 '--output', type=argparse.FileType('w'), default=sys.stdout,
35 help='The file to write output to') 36 help='The file to write output to')
36 depgraph_p.add_argument( 37 depgraph_p.add_argument(
37 '--ignore-package', action='append', default=[], 38 '--ignore-package', action='append', default=[],
38 dest='ignore_packages', 39 dest='ignore_packages',
39 help='Ignore a recipe package (e.g. recipe_engine). Can be passed ' 40 help=(
40 'multiple times') 41 'Ignore a recipe package (e.g. recipe_engine). Can be passed '
42 'multiple times'))
41 depgraph_p.add_argument( 43 depgraph_p.add_argument(
42 '--recipe-filter', default='', 44 '--recipe-filter', default='',
43 help='A recipe substring to examine. If present, the depgraph will ' 45 help=(
44 'include a recipe section containing recipes whose names contain ' 46 'A recipe substring to examine. If present, the depgraph will '
45 'this substring. It will also filter all nodes of the graph to only ' 47 'include a recipe section containing recipes whose names contain '
46 'include modules touched by the filtered recipes.') 48 'this substring. It will also filter all nodes of the graph to only '
49 'include modules touched by the filtered recipes.'))
47 50
48 depgraph_p.set_defaults(command='depgraph', func=main) 51 depgraph_p.set_defaults(command='depgraph', func=main)
49 52
50 53
51 def main(package_deps, args): 54 def main(package_deps, args):
52 universe = loader.RecipeUniverse(package_deps, args.package) 55 universe = loader.RecipeUniverse(package_deps, args.package)
53 own_package = package_deps.root_package 56 own_package = package_deps.root_package
54 57
55 module_to_package = {} 58 module_to_package = {}
56 59
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 print(' subgraph "cluster_%s" { label="%s"; %s; }' % ( 142 print(' subgraph "cluster_%s" { label="%s"; %s; }' % (
140 package, package, '; '.join(modules)), file=args.output) 143 package, package, '; '.join(modules)), file=args.output)
141 144
142 if args.recipe_filter and recipe_to_package: 145 if args.recipe_filter and recipe_to_package:
143 recipe_names = [ 146 recipe_names = [
144 '"recipe %s"' % name for name in recipe_to_package.keys()] 147 '"recipe %s"' % name for name in recipe_to_package.keys()]
145 print(' subgraph "cluster_recipes" { label="recipes"; %s; }' % ( 148 print(' subgraph "cluster_recipes" { label="recipes"; %s; }' % (
146 '; '.join(recipe_names)), file=args.output) 149 '; '.join(recipe_names)), file=args.output)
147 150
148 print(_GRAPH_FOOTER, file=args.output) 151 print(_GRAPH_FOOTER, file=args.output)
OLDNEW
« no previous file with comments | « recipe_engine/bundle.py ('k') | recipe_engine/doc.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698