-
Notifications
You must be signed in to change notification settings - Fork 1
/
Gitlab CICD.sublime-syntax
107 lines (94 loc) · 2.8 KB
/
Gitlab CICD.sublime-syntax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
%YAML 1.2
---
# https://docs.gitlab.com/ee/ci/yaml/
scope: source.yaml.pipeline.gitlab
version: 2
extends: Packages/YamlPipelines/YamlPipeline.sublime-syntax
file_extensions:
- .gitlab-ci.yml
- gitlab-ci.yml
variables:
global_keywords: |-
(?x)\b(?:
variables
| default
| workflow
| include
| stages
)\b
contexts:
node:
- meta_prepend: true
- match: ^\s+(script|before_script|after_script)\s*(:)(?=\s|$)
captures:
1: string.unquoted.plain.out.yaml keyword.control.flow.script.pipeline
2: punctuation.separator.key-value.yaml
push: script-block-sequence
- match: ^({{global_keywords}})\s*(:)$
captures:
1: meta.mapping.key.yaml meta.string.yaml string.unquoted.plain.out.yaml
2: meta.mapping.yaml punctuation.separator.key-value.mapping.yaml
- match: ^(?=[\.\w])([-.\w ]+)\s*(:)$
captures:
1: entity.name.label.gitlab
2: punctuation.separator.key-value.yaml
script-block-sequence:
- match: (-)[ \t]+(?=\S)
captures:
1: punctuation.definition.block.sequence.item.yaml
push: script-block-node
- match: ^(?=[ ]{2}\w)
pop: 1
- match: (?=\S)
pop: 1
script-block-node:
- meta_prepend: true
- include: flow-alias
- match: '{{_flow_scalar_end_plain_out}}'
pop: 1
embedded-bash:
- meta_include_prototype: false
- meta_scope: source.shell.bash.embedded
- include: scope:source.shell.bash
embedded-bash-folded:
- meta_include_prototype: false
- meta_scope: source.shell.bash.embedded
- include: scope:source.shell.bash.folded
property:
- meta_prepend: true
- match: (!reference)\s*(\[)
captures:
1: meta.property.yaml storage.type.tag-handle.yaml
2: meta.sequence.flow.yaml punctuation.definition.sequence.begin.yaml
push: gitlab-reference-flow-sequence-body
gitlab-reference-flow-sequence-body:
- meta_content_scope: meta.sequence.flow.yaml
- match: \]
scope: meta.sequence.flow.yaml punctuation.definition.sequence.end.yaml
pop: 1
- match: ','
scope: punctuation.separator.sequence.yaml
push: gitlab-after-reference
- match: '[-\w.]+'
scope: constant.other.label.gitlab
- include: flow-pair-no-clear
- include: flow-node-11
gitlab-after-reference:
- match: \w+
scope: keyword.other.gitlab
- match: ','
scope: punctuation.separator.sequence.yaml
set: gitlab-after-reference-type
- include: flow-pair-no-clear
- include: flow-node-11
- match: (?=\])
pop: 1
gitlab-after-reference-type:
- match: \w+
scope: variable.other.constant.gitlab
- match: ','
scope: punctuation.separator.sequence.yaml
- include: flow-pair-no-clear
- include: flow-node-11
- match: (?=\S)
pop: 1