Skip to content

Commit

Permalink
[GitLab] support script references
Browse files Browse the repository at this point in the history
  • Loading branch information
keith-hall committed May 16, 2024
1 parent ea694c3 commit 8a98f45
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 0 deletions.
35 changes: 35 additions & 0 deletions Gitlab CICD.sublime-syntax
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ contexts:
2: punctuation.separator.key-value.yaml

script-block-sequence:
- match: (-)[ \t]+(!reference\b)\s*(\[)
captures:
1: punctuation.definition.block.sequence.item.yaml
2: meta.property.yaml storage.type.tag-handle.yaml
3: meta.sequence.flow.yaml punctuation.definition.sequence.begin.yaml
push: script-reference-flow-sequence-body
- match: (-)[ \t]+(?=\S)
captures:
1: punctuation.definition.block.sequence.item.yaml
Expand All @@ -63,3 +69,32 @@ contexts:
- meta_include_prototype: false
- meta_scope: source.shell.bash.embedded
- include: scope:source.shell.bash.folded

script-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: after-reference
- match: '[-\w.]+'
scope: constant.other.label.gitlab
- include: flow-pair-no-clear
- include: flow-node-11

after-reference:
- match: \w+
scope: constant.other.gitlab
- match: ','
scope: punctuation.separator.sequence.yaml
set: after-reference-type
- match: (?=\])
pop: 1

after-reference-type:
- match: \w+
scope: variable.other.constant.gitlab
pop: 1
- match: (?=\S)
pop: 1
41 changes: 41 additions & 0 deletions tests/syntax_test_gitlab_cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,44 @@ release-finish:
# ^^^^^^^^^^^^^^^^ meta.string
# ^^^^^^^^^^^ meta.interpolation.parameter variable.other.readwrite
-DskipTestProject=true
include:
- local: setup.yml

.teardown:
after_script:
- echo deleting environment

test:
script:
- !reference [.setup, script]
# ^ punctuation.definition.block.sequence.item
# ^^^^^^^^^^ meta.property storage.type.tag-handle
# ^^^^^^^^^^^^^^^^ meta.sequence.flow
# ^ punctuation.definition.sequence.begin
# ^^^^^^ constant.other.label
# ^ punctuation.separator.sequence
# ^^^^^^ constant.other
# ^ punctuation.definition.sequence.end
# ^ - meta.sequence
- echo running my own command
# ^ meta.block.script punctuation.definition.block.sequence.item
# ^^^^ source.shell.bash meta.function-call.identifier support.function.echo
after_script:
- !reference [.teardown, after_script]

.vars:
variables:
URL: "http://my-url.internal"
IMPORTANT_VAR: "the details"

test-vars-1:
variables: !reference [.vars, variables]
script:
- printenv

test-vars-2:
variables:
MY_VAR: !reference [.vars, variables, IMPORTANT_VAR]
script:
- printenv

0 comments on commit 8a98f45

Please sign in to comment.