You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

docker.go 1.1KB

12345678910111213141516171819202122232425262728293031
  1. package d
  2. import (
  3. . "github.com/alecthomas/chroma" // nolint
  4. "github.com/alecthomas/chroma/lexers/b"
  5. "github.com/alecthomas/chroma/lexers/internal"
  6. "github.com/alecthomas/chroma/lexers/j"
  7. )
  8. // Docker lexer.
  9. var Docker = internal.Register(MustNewLexer(
  10. &Config{
  11. Name: "Docker",
  12. Aliases: []string{"docker", "dockerfile"},
  13. Filenames: []string{"Dockerfile", "*.docker"},
  14. MimeTypes: []string{"text/x-dockerfile-config"},
  15. CaseInsensitive: true,
  16. },
  17. Rules{
  18. "root": {
  19. {`#.*`, Comment, nil},
  20. {`(ONBUILD)((?:\s*\\?\s*))`, ByGroups(Keyword, Using(b.Bash)), nil},
  21. {`(HEALTHCHECK)(((?:\s*\\?\s*)--\w+=\w+(?:\s*\\?\s*))*)`, ByGroups(Keyword, Using(b.Bash)), nil},
  22. {`(VOLUME|ENTRYPOINT|CMD|SHELL)((?:\s*\\?\s*))(\[.*?\])`, ByGroups(Keyword, Using(b.Bash), Using(j.JSON)), nil},
  23. {`(LABEL|ENV|ARG)((?:(?:\s*\\?\s*)\w+=\w+(?:\s*\\?\s*))*)`, ByGroups(Keyword, Using(b.Bash)), nil},
  24. {`((?:FROM|MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)|VOLUME)\b(.*)`, ByGroups(Keyword, LiteralString), nil},
  25. {`((?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY))`, Keyword, nil},
  26. {`(.*\\\n)*.+`, Using(b.Bash), nil},
  27. },
  28. },
  29. ))