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

Side by Side Diff: deploytool/cmd/luci_deploy/build.go

Issue 2963503003: [errors] Greatly simplify common/errors package. (Closed)
Patch Set: fix nits Created 3 years, 5 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 | « deploytool/cmd/luci_deploy/appengine.go ('k') | deploytool/cmd/luci_deploy/checkout.go » ('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 package main 5 package main
6 6
7 import ( 7 import (
8 "fmt" 8 "fmt"
9 "strings" 9 "strings"
10 10
(...skipping 17 matching lines...) Expand all
28 }, v) 28 }, v)
29 } 29 }
30 30
31 // buildComponent runs the varuous build scripts defined by the specified 31 // buildComponent runs the varuous build scripts defined by the specified
32 // deployment component. 32 // deployment component.
33 // 33 //
34 // After running the build scripts, variable substitution will occur on "c" 34 // After running the build scripts, variable substitution will occur on "c"
35 // to update its directory. 35 // to update its directory.
36 func buildComponent(w *work, c *layoutDeploymentComponent, root *managedfs.Dir) error { 36 func buildComponent(w *work, c *layoutDeploymentComponent, root *managedfs.Dir) error {
37 if src := c.source(); !src.Source.RunScripts { 37 if src := c.source(); !src.Source.RunScripts {
38 » » return errors.Reason("refusing to run scripts (run_scripts is fa lse for %(source)q)"). 38 » » return errors.Reason("refusing to run scripts (run_scripts is fa lse for %q)", src.title).Err()
39 » » » D("source", src.title).Err()
40 } 39 }
41 40
42 // Create our build directories and map them to variables. 41 // Create our build directories and map them to variables.
43 c.buildDirs = make(map[string]string, len(c.Build)) 42 c.buildDirs = make(map[string]string, len(c.Build))
44 dirs := make([]*managedfs.Dir, len(c.Build)) 43 dirs := make([]*managedfs.Dir, len(c.Build))
45 for i, b := range c.Build { 44 for i, b := range c.Build {
46 if _, has := c.buildDirs[b.DirKey]; has { 45 if _, has := c.buildDirs[b.DirKey]; has {
47 » » » return errors.Reason("duplicate build key [%(key)s]").D( "key", b.DirKey).Err() 46 » » » return errors.Reason("duplicate build key [%s]", b.DirKe y).Err()
48 } 47 }
49 48
50 dir, err := root.EnsureDirectory(fmt.Sprintf("%d_%s", i, flatten VarToDir(b.DirKey))) 49 dir, err := root.EnsureDirectory(fmt.Sprintf("%d_%s", i, flatten VarToDir(b.DirKey)))
51 if err != nil { 50 if err != nil {
52 » » » return errors.Annotate(err).Reason("failed to create bui ld directory").Err() 51 » » » return errors.Annotate(err, "failed to create build dire ctory").Err()
53 } 52 }
54 53
55 dirs[i] = dir 54 dirs[i] = dir
56 c.buildDirs[b.DirKey] = dir.String() 55 c.buildDirs[b.DirKey] = dir.String()
57 } 56 }
58 57
59 // Apply build directories. 58 // Apply build directories.
60 if err := c.expandPaths(); err != nil { 59 if err := c.expandPaths(); err != nil {
61 » » return errors.Annotate(err).Reason("failed to expand component p aths").Err() 60 » » return errors.Annotate(err, "failed to expand component paths"). Err()
62 } 61 }
63 62
64 // Run all of our build scripts in parallel. 63 // Run all of our build scripts in parallel.
65 err := w.RunMulti(func(workC chan<- func() error) { 64 err := w.RunMulti(func(workC chan<- func() error) {
66 for i, b := range c.Build { 65 for i, b := range c.Build {
67 i, b := i, b 66 i, b := i, b
68 workC <- func() error { 67 workC <- func() error {
69 return runComponentBuild(w, c, b, dirs[i]) 68 return runComponentBuild(w, c, b, dirs[i])
70 } 69 }
71 } 70 }
72 }) 71 })
73 if err != nil { 72 if err != nil {
74 » » return errors.Annotate(err).Reason("failed to run component buil ds").Err() 73 » » return errors.Annotate(err, "failed to run component builds").Er r()
75 } 74 }
76 return nil 75 return nil
77 } 76 }
78 77
79 func runComponentBuild(w *work, c *layoutDeploymentComponent, b *deploy.Componen t_Build, root *managedfs.Dir) error { 78 func runComponentBuild(w *work, c *layoutDeploymentComponent, b *deploy.Componen t_Build, root *managedfs.Dir) error {
80 switch t := b.Operation.(type) { 79 switch t := b.Operation.(type) {
81 case *deploy.Component_Build_PythonScript_: 80 case *deploy.Component_Build_PythonScript_:
82 ps := t.PythonScript 81 ps := t.PythonScript
83 82
84 python, err := w.python() 83 python, err := w.python()
85 if err != nil { 84 if err != nil {
86 return err 85 return err
87 } 86 }
88 87
89 src := c.source() 88 src := c.source()
90 scriptPath := src.pathTo(ps.Path, c.comp.Path) 89 scriptPath := src.pathTo(ps.Path, c.comp.Path)
91 buildDir := root.String() 90 buildDir := root.String()
92 91
93 args := append(make([]string, 0, 2+len(ps.ExtraArgs)), 92 args := append(make([]string, 0, 2+len(ps.ExtraArgs)),
94 src.checkoutPath(), 93 src.checkoutPath(),
95 buildDir) 94 buildDir)
96 args = append(args, ps.ExtraArgs...) 95 args = append(args, ps.ExtraArgs...)
97 96
98 if err := python.exec(scriptPath, args...).cwd(buildDir).check(w ); err != nil { 97 if err := python.exec(scriptPath, args...).cwd(buildDir).check(w ); err != nil {
99 » » » return errors.Annotate(err).Reason("failed to execute [% (scriptPath)s]").D("scriptPath", scriptPath).Err() 98 » » » return errors.Annotate(err, "failed to execute [%s]", sc riptPath).Err()
100 } 99 }
101 return nil 100 return nil
102 101
103 default: 102 default:
104 » » return errors.Reason("unknown build type %(type)T").D("type", t) .Err() 103 » » return errors.Reason("unknown build type %T", t).Err()
105 } 104 }
106 } 105 }
OLDNEW
« no previous file with comments | « deploytool/cmd/luci_deploy/appengine.go ('k') | deploytool/cmd/luci_deploy/checkout.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698