MCPcopy Create free account
hub / github.com/containers/image / parseDefFile

Function parseDefFile

sif/load.go:22–57  ·  view source on GitHub ↗

parseDefFile parses a SIF definition file from reader, and returns non-trivial contents of the %environment and %runscript sections.

(reader io.Reader)

Source from the content-addressed store, hash-verified

20// parseDefFile parses a SIF definition file from reader,
21// and returns non-trivial contents of the %environment and %runscript sections.
22func parseDefFile(reader io.Reader) ([]string, []string, error) {
23 type parserState int
24 const (
25 parsingOther parserState = iota
26 parsingEnvironment
27 parsingRunscript
28 )
29
30 environment := []string{}
31 runscript := []string{}
32
33 state := parsingOther
34 scanner := bufio.NewScanner(reader)
35 for scanner.Scan() {
36 s := strings.TrimSpace(scanner.Text())
37 switch {
38 case s == `%environment`:
39 state = parsingEnvironment
40 case s == `%runscript`:
41 state = parsingRunscript
42 case strings.HasPrefix(s, "%"):
43 state = parsingOther
44 case state == parsingEnvironment:
45 if s != "" && !strings.HasPrefix(s, "#") {
46 environment = append(environment, s)
47 }
48 case state == parsingRunscript:
49 runscript = append(runscript, s)
50 default: // parsingOther: ignore the line
51 }
52 }
53 if err := scanner.Err(); err != nil {
54 return nil, nil, fmt.Errorf("reading lines from SIF definition file object: %w", err)
55 }
56 return environment, runscript, nil
57}
58
59// generateInjectedScript generates a shell script based on
60// SIF definition file %environment and %runscript data, and returns it.

Callers 2

TestParseDefFileFunction · 0.85
processDefFileFunction · 0.85

Calls

no outgoing calls

Tested by 1

TestParseDefFileFunction · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…