MCPcopy Index your code
hub / github.com/perkeep/perkeep / installHook

Method installHook

dev/devcam/hook.go:40–80  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

38}
39
40func (c *hookCmd) installHook() error {
41 root, err := repoRoot()
42 if err != nil {
43 return err
44 }
45 hookDir := filepath.Join(root, hookPath)
46 if _, err := os.Stat(hookDir); err != nil {
47 if !os.IsNotExist(err) {
48 return err
49 }
50 if err := os.MkdirAll(hookDir, 0700); err != nil {
51 return err
52 }
53 }
54 for _, hookFile := range hookFiles {
55 filename := filepath.Join(hookDir, hookFile)
56 hookContent := fmt.Sprintf(hookScript, hookFile)
57 // If hook file exists, assume it is okay.
58 _, err := os.Stat(filename)
59 if err == nil {
60 if c.verbose {
61 data, err := os.ReadFile(filename)
62 if err != nil {
63 c.verbosef("reading hook: %v", err)
64 } else if string(data) != hookContent {
65 c.verbosef("unexpected hook content in %s", filename)
66 }
67 }
68 continue
69 }
70
71 if !os.IsNotExist(err) {
72 return fmt.Errorf("checking hook: %v", err)
73 }
74 c.verbosef("installing %s hook", hookFile)
75 if err := os.WriteFile(filename, []byte(hookContent), 0700); err != nil {
76 return fmt.Errorf("writing hook: %v", err)
77 }
78 }
79 return nil
80}
81
82var hookScript = `#!/bin/sh
83exec devcam hook %s "$@"

Callers 1

RunCommandMethod · 0.95

Calls 4

verbosefMethod · 0.95
repoRootFunction · 0.85
StatMethod · 0.65
MkdirAllMethod · 0.65

Tested by

no test coverage detected