123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- // CodeMirror, copyright (c) by Marijn Haverbeke and others
- // Distributed under an MIT license: https://codemirror.net/LICENSE
- ;(function () {
- var mode = CodeMirror.getMode({ indentUnit: 2 }, 'text/x-dockerfile')
- function MT(name) {
- test.mode(name, mode, Array.prototype.slice.call(arguments, 1))
- }
- MT(
- 'simple_nodejs_dockerfile',
- '[keyword FROM] node:carbon',
- '[comment # Create app directory]',
- '[keyword WORKDIR] /usr/src/app',
- '[comment # Install app dependencies]',
- '[comment # A wildcard is used to ensure both package.json AND package-lock.json are copied]',
- '[comment # where available (npm@5+)]',
- '[keyword COPY] package*.json ./',
- '[keyword RUN] npm install',
- '[keyword COPY] . .',
- '[keyword EXPOSE] [number 8080] [number 3000]',
- '[keyword ENV] NODE_ENV development',
- '[keyword CMD] [[ [string "npm"], [string "start"] ]]'
- )
- // Ideally the last space should not be highlighted.
- MT('instruction_without_args_1', '[keyword CMD] ')
- MT('instruction_without_args_2', '[comment # An instruction without args...]', '[keyword ARG] [error #...is an error]')
- MT('multiline', '[keyword RUN] apt-get update && apt-get install -y \\', ' mercurial \\', ' subversion \\', ' && apt-get clean \\', ' && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*')
- MT(
- 'from_comment',
- ' [keyword FROM] debian:stretch # I tend to use stable as that is more stable',
- ' [keyword FROM] debian:stretch [keyword AS] stable # I am even more stable',
- ' [keyword FROM] [error # this is an error]'
- )
- MT(
- 'from_as',
- '[keyword FROM] golang:1.9.2-alpine3.6 [keyword AS] build',
- '[keyword COPY] --from=build /bin/project /bin/project',
- '[keyword ENTRYPOINT] [[ [string "/bin/project"] ]]',
- '[keyword CMD] [[ [string "--help"] ]]'
- )
- MT('arg', '[keyword ARG] VERSION=latest', '[keyword FROM] busybox:$VERSION', '[keyword ARG] VERSION', '[keyword RUN] echo $VERSION > image_version')
- MT('label', '[keyword LABEL] com.example.label-with-value=[string "foo"]')
- MT('label_multiline', '[keyword LABEL] description=[string "This text illustrates ]\\', '[string that label-values can span multiple lines."]')
- MT('maintainer', '[keyword MAINTAINER] Foo Bar [string "foo@bar.com"] ', '[keyword MAINTAINER] Bar Baz <bar@baz.com>')
- MT('env', '[keyword ENV] BUNDLE_PATH=[string "$GEM_HOME"] \\', ' BUNDLE_APP_CONFIG=[string "$GEM_HOME"]')
- MT('verify_keyword', '[keyword RUN] add-apt-repository ppa:chris-lea/node.js')
- MT(
- 'scripts',
- '[comment # Set an entrypoint, to automatically install node modules]',
- '[keyword ENTRYPOINT] [[ [string "/bin/bash"], [string "-c"], [string "if [[ ! -d node_modules ]]; then npm install; fi; exec \\"${@:0}\\";"] ]]',
- '[keyword CMD] npm start',
- '[keyword RUN] npm run build && \\',
- '[comment # a comment between the shell commands]',
- ' npm run test'
- )
- MT(
- 'strings_single',
- '[keyword FROM] buildpack-deps:stretch',
- '[keyword RUN] { \\',
- " echo [string 'install: --no-document']; \\",
- " echo [string 'update: --no-document']; \\",
- ' } >> /usr/local/etc/gemrc'
- )
- MT(
- 'strings_single_multiline',
- '[keyword RUN] set -ex \\',
- ' \\',
- " && buildDeps=[string ' ]\\",
- '[string bison ]\\',
- '[string dpkg-dev ]\\',
- '[string libgdbm-dev ]\\',
- '[string ruby ]\\',
- "[string '] \\",
- ' && apt-get update'
- )
- MT('strings_single_multiline_2', "[keyword RUN] echo [string 'say \\' ]\\", "[string it works'] ")
- MT(
- 'strings_double',
- '[keyword RUN] apt-get install -y --no-install-recommends $buildDeps \\',
- ' \\',
- ' && wget -O ruby.tar.xz [string "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz"] \\',
- ' && echo [string "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz"] | sha256sum -c - '
- )
- MT('strings_double_multiline', '[keyword RUN] echo [string "say \\" ]\\', '[string it works"] ')
- MT(
- 'escape',
- '[comment # escape=`]',
- '[keyword FROM] microsoft/windowsservercore',
- '[keyword RUN] powershell.exe -Command `',
- " $ErrorActionPreference = [string 'Stop']; `",
- ' wget https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe -OutFile c:python-3.5.1.exe ; `',
- " Start-Process c:python-3.5.1.exe -ArgumentList [string '/quiet InstallAllUsers=1 PrependPath=1'] -Wait ; `",
- ' Remove-Item c:python-3.5.1.exe -Force)'
- )
- MT(
- 'escape_strings',
- '[comment # escape=`]',
- '[keyword FROM] python:3.6-windowsservercore [keyword AS] python',
- "[keyword RUN] $env:PATH = [string 'C:\\Python;C:\\Python\\Scripts;{0}'] -f $env:PATH ; `",
- // It should not consider \' as escaped.
- // " Set-ItemProperty -Path [string 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\\'] -Name Path -Value $env:PATH ;");
- " Set-ItemProperty -Path [string 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\\' -Name Path -Value $env:PATH ;]"
- )
- })()
|