Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "config", default: None, }, FunctionHeadDestructuredArgument { identifier: "lib", default: None, }, FunctionHeadDestructuredArgument { identifier: "pkgs", default: None, }, ], }, ), body: With( With { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 2, column: 6, }, end: Position { line: 2, column: 14, }, }, }, ), target: With( With { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 3, column: 6, }, end: Position { line: 3, column: 9, }, }, }, ), target: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfg", span: Span { start: Position { line: 5, column: 3, }, end: Position { line: 5, column: 6, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 5, column: 9, }, end: Position { line: 5, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 5, column: 16, }, end: Position { line: 5, column: 24, }, }, }, ), Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 5, column: 25, }, end: Position { line: 5, column: 38, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hasDocker", span: Span { start: Position { line: 6, column: 3, }, end: Position { line: 6, column: 12, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 6, column: 15, }, end: Position { line: 6, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "virtualisation", span: Span { start: Position { line: 6, column: 22, }, end: Position { line: 6, column: 36, }, }, }, ), Raw( PartRaw { content: "docker", span: Span { start: Position { line: 6, column: 37, }, end: Position { line: 6, column: 43, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 6, column: 44, }, end: Position { line: 6, column: 50, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hashedServices", span: Span { start: Position { line: 7, column: 3, }, end: Position { line: 7, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs'", span: Span { start: Position { line: 7, column: 20, }, end: Position { line: 7, column: 29, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "service", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nameValuePair", span: Span { start: Position { line: 8, column: 21, }, end: Position { line: 8, column: 34, }, }, }, ), arguments: [ String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 9, column: 10, }, end: Position { line: 9, column: 14, }, }, }, ), }, ), Raw( PartRaw { content: "_", span: Span { start: Position { line: 9, column: 8, }, end: Position { line: 9, column: 16, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 9, column: 18, }, end: Position { line: 9, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "networking", span: Span { start: Position { line: 9, column: 25, }, end: Position { line: 9, column: 35, }, }, }, ), Raw( PartRaw { content: "hostName", span: Span { start: Position { line: 9, column: 36, }, end: Position { line: 9, column: 44, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "_", span: Span { start: Position { line: 9, column: 8, }, end: Position { line: 9, column: 46, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "substring", span: Span { start: Position { line: 10, column: 9, }, end: Position { line: 10, column: 18, }, }, }, ), arguments: [ Integer( Integer { value: "0", span: Span { start: Position { line: 10, column: 19, }, end: Position { line: 10, column: 20, }, }, }, ), Integer( Integer { value: "12", span: Span { start: Position { line: 10, column: 21, }, end: Position { line: 10, column: 23, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "hashString", span: Span { start: Position { line: 11, column: 10, }, end: Position { line: 11, column: 20, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "md5", span: Span { start: Position { line: 11, column: 22, }, end: Position { line: 11, column: 25, }, }, }, ), ], span: Span { start: Position { line: 11, column: 21, }, end: Position { line: 11, column: 26, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "unsafeDiscardStringContext", span: Span { start: Position { line: 11, column: 28, }, end: Position { line: 11, column: 54, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toJSON", span: Span { start: Position { line: 11, column: 56, }, end: Position { line: 11, column: 62, }, }, }, ), arguments: [ Identifier( Identifier { id: "service", span: Span { start: Position { line: 11, column: 63, }, end: Position { line: 11, column: 70, }, }, }, ), ], }, ), ], }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 9, column: 7, }, end: Position { line: 11, column: 75, }, }, }, ), Identifier( Identifier { id: "service", span: Span { start: Position { line: 12, column: 7, }, end: Position { line: 12, column: 14, }, }, }, ), ], }, ), span: Span { start: Position { line: 8, column: 12, }, end: Position { line: 12, column: 14, }, }, }, ), span: Span { start: Position { line: 8, column: 6, }, end: Position { line: 12, column: 14, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 13, column: 5, }, end: Position { line: 13, column: 8, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 13, column: 9, }, end: Position { line: 13, column: 17, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "configPath", span: Span { start: Position { line: 14, column: 3, }, end: Position { line: 14, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "$HOME/.gitlab-runner/config.toml", span: Span { start: Position { line: 14, column: 17, }, end: Position { line: 14, column: 49, }, }, }, ), ], span: Span { start: Position { line: 14, column: 16, }, end: Position { line: 14, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "configureScript", span: Span { start: Position { line: 15, column: 3, }, end: Position { line: 15, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 15, column: 21, }, end: Position { line: 15, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeShellScriptBin", span: Span { start: Position { line: 15, column: 26, }, end: Position { line: 15, column: 45, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner-configure", span: Span { start: Position { line: 15, column: 47, }, end: Position { line: 15, column: 70, }, }, }, ), ], span: Span { start: Position { line: 15, column: 46, }, end: Position { line: 15, column: 71, }, }, }, ), IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 16, column: 9, }, end: Position { line: 16, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "configFile", span: Span { start: Position { line: 16, column: 13, }, end: Position { line: 16, column: 23, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 16, column: 27, }, end: Position { line: 16, column: 31, }, }, }, ), }, ), then: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir -p $(dirname ", span: Span { start: Position { line: 17, column: 1, }, end: Position { line: 17, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 17, column: 28, }, end: Position { line: 17, column: 38, }, }, }, ), }, ), Raw( PartRaw { content: ")\ncp ", span: Span { start: Position { line: 17, column: 1, }, end: Position { line: 18, column: 10, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 18, column: 12, }, end: Position { line: 18, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "configFile", span: Span { start: Position { line: 18, column: 16, }, end: Position { line: 18, column: 26, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 17, column: 1, }, end: Position { line: 18, column: 28, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 18, column: 30, }, end: Position { line: 18, column: 40, }, }, }, ), }, ), Raw( PartRaw { content: "\n# make config file readable by service\nchown -R --reference=$HOME $(dirname ", span: Span { start: Position { line: 17, column: 1, }, end: Position { line: 20, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 20, column: 46, }, end: Position { line: 20, column: 56, }, }, }, ), }, ), Raw( PartRaw { content: ")\n", span: Span { start: Position { line: 17, column: 1, }, end: Position { line: 21, column: 5, }, }, }, ), ], span: Span { start: Position { line: 16, column: 38, }, end: Position { line: 21, column: 7, }, }, }, ), else_: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "export CONFIG_FILE=", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 22, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 22, column: 28, }, end: Position { line: 22, column: 38, }, }, }, ), }, ), Raw( PartRaw { content: "\n\nmkdir -p $(dirname ", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 24, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 24, column: 28, }, end: Position { line: 24, column: 38, }, }, }, ), }, ), Raw( PartRaw { content: ")\ntouch ", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 25, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 25, column: 15, }, end: Position { line: 25, column: 25, }, }, }, ), }, ), Raw( PartRaw { content: "\n\n# update global options\nremarshal --if toml --of json ", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 28, column: 37, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 28, column: 39, }, end: Position { line: 28, column: 49, }, }, }, ), }, ), Raw( PartRaw { content: " \\\n | jq -cM 'with_entries(select([.key] | inside([\"runners\"])))' \\\n | jq -scM '.[0] + .[1]' - <(echo ", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 30, column: 42, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 30, column: 44, }, end: Position { line: 30, column: 58, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toJSON", span: Span { start: Position { line: 30, column: 60, }, end: Position { line: 30, column: 66, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 30, column: 67, }, end: Position { line: 30, column: 70, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 30, column: 71, }, end: Position { line: 30, column: 79, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: ") \\\n | remarshal --if json --of toml \\\n | sponge ", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 32, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 32, column: 20, }, end: Position { line: 32, column: 30, }, }, }, ), }, ), Raw( PartRaw { content: "\n\n# remove no longer existing services\ngitlab-runner verify --delete\n\n# current and desired state\nNEEDED_SERVICES=$(echo ", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 38, column: 30, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 38, column: 32, }, end: Position { line: 38, column: 48, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " ", span: Span { start: Position { line: 38, column: 50, }, end: Position { line: 38, column: 51, }, }, }, ), ], span: Span { start: Position { line: 38, column: 49, }, end: Position { line: 38, column: 52, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "attrNames", span: Span { start: Position { line: 38, column: 54, }, end: Position { line: 38, column: 63, }, }, }, ), arguments: [ Identifier( Identifier { id: "hashedServices", span: Span { start: Position { line: 38, column: 64, }, end: Position { line: 38, column: 78, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: " | tr \" \" \"\\n\")\nREGISTERED_SERVICES=$(gitlab-runner list 2>&1 | grep 'Executor' | awk '{ print $1 }')\n\n# difference between current and desired state\nNEW_SERVICES=$(grep -vxF -f <(echo \"$REGISTERED_SERVICES\") <(echo \"$NEEDED_SERVICES\") || true)\nOLD_SERVICES=$(grep -vxF -f <(echo \"$NEEDED_SERVICES\") <(echo \"$REGISTERED_SERVICES\") || true)\n\n# register new services\n", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 46, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 46, column: 9, }, end: Position { line: 46, column: 25, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 46, column: 27, }, end: Position { line: 46, column: 29, }, }, }, ), ], span: Span { start: Position { line: 46, column: 26, }, end: Position { line: 46, column: 30, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 46, column: 32, }, end: Position { line: 46, column: 46, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "service", }, ), body: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "if echo \"$NEW_SERVICES\" | grep -xq \"", span: Span { start: Position { line: 47, column: 1, }, end: Position { line: 47, column: 45, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 47, column: 47, }, end: Position { line: 47, column: 51, }, }, }, ), }, ), Raw( PartRaw { content: "\"; then\n bash -c ", span: Span { start: Position { line: 47, column: 1, }, end: Position { line: 48, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 48, column: 21, }, end: Position { line: 48, column: 35, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 48, column: 37, }, end: Position { line: 48, column: 53, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " \\\n ", span: Span { start: Position { line: 48, column: 55, }, end: Position { line: 48, column: 61, }, }, }, ), ], span: Span { start: Position { line: 48, column: 54, }, end: Position { line: 48, column: 62, }, }, }, ), BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "set -a && source ", span: Span { start: Position { line: 49, column: 14, }, end: Position { line: 49, column: 64, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 49, column: 33, }, end: Position { line: 49, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registrationConfigFile", span: Span { start: Position { line: 49, column: 41, }, end: Position { line: 49, column: 63, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " &&", span: Span { start: Position { line: 49, column: 14, }, end: Position { line: 49, column: 67, }, }, }, ), ], span: Span { start: Position { line: 49, column: 13, }, end: Position { line: 49, column: 68, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner register", span: Span { start: Position { line: 50, column: 14, }, end: Position { line: 50, column: 36, }, }, }, ), ], span: Span { start: Position { line: 50, column: 13, }, end: Position { line: 50, column: 37, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--non-interactive", span: Span { start: Position { line: 51, column: 14, }, end: Position { line: 51, column: 31, }, }, }, ), ], span: Span { start: Position { line: 51, column: 13, }, end: Position { line: 51, column: 32, }, }, }, ), IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 52, column: 17, }, end: Position { line: 52, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 52, column: 25, }, end: Position { line: 52, column: 36, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 52, column: 40, }, end: Position { line: 52, column: 44, }, }, }, ), }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "--description \"", span: Span { start: Position { line: 52, column: 51, }, end: Position { line: 52, column: 89, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 52, column: 69, }, end: Position { line: 52, column: 76, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 52, column: 77, }, end: Position { line: 52, column: 88, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\"", span: Span { start: Position { line: 52, column: 51, }, end: Position { line: 52, column: 91, }, }, }, ), ], span: Span { start: Position { line: 52, column: 50, }, end: Position { line: 52, column: 92, }, }, }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "--name '", span: Span { start: Position { line: 52, column: 99, }, end: Position { line: 52, column: 114, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 52, column: 109, }, end: Position { line: 52, column: 113, }, }, }, ), }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 52, column: 99, }, end: Position { line: 52, column: 115, }, }, }, ), ], span: Span { start: Position { line: 52, column: 98, }, end: Position { line: 52, column: 116, }, }, }, ), span: Span { start: Position { line: 52, column: 14, }, end: Position { line: 52, column: 116, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--executor ", span: Span { start: Position { line: 53, column: 14, }, end: Position { line: 53, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 53, column: 27, }, end: Position { line: 53, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "executor", span: Span { start: Position { line: 53, column: 35, }, end: Position { line: 53, column: 43, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 53, column: 13, }, end: Position { line: 53, column: 45, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--limit ", span: Span { start: Position { line: 54, column: 14, }, end: Position { line: 54, column: 47, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 54, column: 24, }, end: Position { line: 54, column: 32, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 54, column: 33, }, end: Position { line: 54, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "limit", span: Span { start: Position { line: 54, column: 41, }, end: Position { line: 54, column: 46, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 54, column: 13, }, end: Position { line: 54, column: 48, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--request-concurrency ", span: Span { start: Position { line: 55, column: 14, }, end: Position { line: 55, column: 74, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 55, column: 38, }, end: Position { line: 55, column: 46, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 55, column: 47, }, end: Position { line: 55, column: 54, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "requestConcurrency", span: Span { start: Position { line: 55, column: 55, }, end: Position { line: 55, column: 73, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 55, column: 13, }, end: Position { line: 55, column: 75, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--maximum-timeout ", span: Span { start: Position { line: 56, column: 14, }, end: Position { line: 56, column: 66, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 56, column: 34, }, end: Position { line: 56, column: 42, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 56, column: 43, }, end: Position { line: 56, column: 50, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "maximumTimeout", span: Span { start: Position { line: 56, column: 51, }, end: Position { line: 56, column: 65, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 56, column: 13, }, end: Position { line: 56, column: 67, }, }, }, ), ], span: Span { start: Position { line: 48, column: 64, }, end: Position { line: 57, column: 12, }, }, }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 57, column: 16, }, end: Position { line: 57, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registrationFlags", span: Span { start: Position { line: 57, column: 24, }, end: Position { line: 57, column: 41, }, }, }, ), ], default: None, }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 58, column: 16, }, end: Position { line: 58, column: 24, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 58, column: 26, }, end: Position { line: 58, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "buildsDir", span: Span { start: Position { line: 58, column: 34, }, end: Position { line: 58, column: 43, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 58, column: 47, }, end: Position { line: 58, column: 51, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "--builds-dir ", span: Span { start: Position { line: 59, column: 14, }, end: Position { line: 59, column: 47, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 59, column: 29, }, end: Position { line: 59, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "buildsDir", span: Span { start: Position { line: 59, column: 37, }, end: Position { line: 59, column: 46, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 59, column: 13, }, end: Position { line: 59, column: 48, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 60, column: 16, }, end: Position { line: 60, column: 24, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 60, column: 26, }, end: Position { line: 60, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "cloneUrl", span: Span { start: Position { line: 60, column: 34, }, end: Position { line: 60, column: 42, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 60, column: 46, }, end: Position { line: 60, column: 50, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "--clone-url ", span: Span { start: Position { line: 61, column: 14, }, end: Position { line: 61, column: 45, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 61, column: 28, }, end: Position { line: 61, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "cloneUrl", span: Span { start: Position { line: 61, column: 36, }, end: Position { line: 61, column: 44, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 61, column: 13, }, end: Position { line: 61, column: 46, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 62, column: 16, }, end: Position { line: 62, column: 24, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 62, column: 26, }, end: Position { line: 62, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "preCloneScript", span: Span { start: Position { line: 62, column: 34, }, end: Position { line: 62, column: 48, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 62, column: 52, }, end: Position { line: 62, column: 56, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "--pre-clone-script ", span: Span { start: Position { line: 63, column: 14, }, end: Position { line: 63, column: 58, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 63, column: 35, }, end: Position { line: 63, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "preCloneScript", span: Span { start: Position { line: 63, column: 43, }, end: Position { line: 63, column: 57, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 63, column: 13, }, end: Position { line: 63, column: 59, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 64, column: 16, }, end: Position { line: 64, column: 24, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 64, column: 26, }, end: Position { line: 64, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "preBuildScript", span: Span { start: Position { line: 64, column: 34, }, end: Position { line: 64, column: 48, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 64, column: 52, }, end: Position { line: 64, column: 56, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "--pre-build-script ", span: Span { start: Position { line: 65, column: 14, }, end: Position { line: 65, column: 58, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 65, column: 35, }, end: Position { line: 65, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "preBuildScript", span: Span { start: Position { line: 65, column: 43, }, end: Position { line: 65, column: 57, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 65, column: 13, }, end: Position { line: 65, column: 59, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 66, column: 16, }, end: Position { line: 66, column: 24, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 66, column: 26, }, end: Position { line: 66, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "postBuildScript", span: Span { start: Position { line: 66, column: 34, }, end: Position { line: 66, column: 49, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 66, column: 53, }, end: Position { line: 66, column: 57, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "--post-build-script ", span: Span { start: Position { line: 67, column: 14, }, end: Position { line: 67, column: 60, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 67, column: 36, }, end: Position { line: 67, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "postBuildScript", span: Span { start: Position { line: 67, column: 44, }, end: Position { line: 67, column: 59, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 67, column: 13, }, end: Position { line: 67, column: 61, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 68, column: 16, }, end: Position { line: 68, column: 24, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 68, column: 26, }, end: Position { line: 68, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "tagList", span: Span { start: Position { line: 68, column: 34, }, end: Position { line: 68, column: 41, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: List( List { elements: [], span: Span { start: Position { line: 68, column: 45, }, end: Position { line: 68, column: 48, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "--tag-list ", span: Span { start: Position { line: 69, column: 14, }, end: Position { line: 69, column: 64, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 69, column: 27, }, end: Position { line: 69, column: 43, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ",", span: Span { start: Position { line: 69, column: 45, }, end: Position { line: 69, column: 46, }, }, }, ), ], span: Span { start: Position { line: 69, column: 44, }, end: Position { line: 69, column: 47, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 69, column: 48, }, end: Position { line: 69, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "tagList", span: Span { start: Position { line: 69, column: 56, }, end: Position { line: 69, column: 63, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 69, column: 13, }, end: Position { line: 69, column: 65, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 70, column: 16, }, end: Position { line: 70, column: 24, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 70, column: 25, }, end: Position { line: 70, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "runUntagged", span: Span { start: Position { line: 70, column: 33, }, end: Position { line: 70, column: 44, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--run-untagged", span: Span { start: Position { line: 71, column: 14, }, end: Position { line: 71, column: 28, }, }, }, ), ], span: Span { start: Position { line: 71, column: 13, }, end: Position { line: 71, column: 29, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 72, column: 16, }, end: Position { line: 72, column: 24, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 72, column: 25, }, end: Position { line: 72, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "protected", span: Span { start: Position { line: 72, column: 33, }, end: Position { line: 72, column: 42, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--access-level ref_protected", span: Span { start: Position { line: 73, column: 14, }, end: Position { line: 73, column: 42, }, }, }, ), ], span: Span { start: Position { line: 73, column: 13, }, end: Position { line: 73, column: 43, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 74, column: 16, }, end: Position { line: 74, column: 24, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 74, column: 25, }, end: Position { line: 74, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "debugTraceDisabled", span: Span { start: Position { line: 74, column: 33, }, end: Position { line: 74, column: 51, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--debug-trace-disabled", span: Span { start: Position { line: 75, column: 14, }, end: Position { line: 75, column: 36, }, }, }, ), ], span: Span { start: Position { line: 75, column: 13, }, end: Position { line: 75, column: 37, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 76, column: 16, }, end: Position { line: 76, column: 19, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "e", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "--env ", span: Span { start: Position { line: 76, column: 25, }, end: Position { line: 76, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 76, column: 33, }, end: Position { line: 76, column: 47, }, }, }, ), arguments: [ Identifier( Identifier { id: "e", span: Span { start: Position { line: 76, column: 48, }, end: Position { line: 76, column: 49, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 76, column: 24, }, end: Position { line: 76, column: 51, }, }, }, ), span: Span { start: Position { line: 76, column: 21, }, end: Position { line: 76, column: 51, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 76, column: 54, }, end: Position { line: 76, column: 68, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "value", }, ), body: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 76, column: 86, }, end: Position { line: 76, column: 90, }, }, }, ), }, ), Raw( PartRaw { content: "=", span: Span { start: Position { line: 76, column: 84, }, end: Position { line: 76, column: 92, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "value", span: Span { start: Position { line: 76, column: 94, }, end: Position { line: 76, column: 99, }, }, }, ), }, ), ], span: Span { start: Position { line: 76, column: 83, }, end: Position { line: 76, column: 101, }, }, }, ), span: Span { start: Position { line: 76, column: 76, }, end: Position { line: 76, column: 101, }, }, }, ), span: Span { start: Position { line: 76, column: 70, }, end: Position { line: 76, column: 101, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 76, column: 103, }, end: Position { line: 76, column: 110, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "environmentVariables", span: Span { start: Position { line: 76, column: 111, }, end: Position { line: 76, column: 131, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionals", span: Span { start: Position { line: 77, column: 16, }, end: Position { line: 77, column: 25, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "hasPrefix", span: Span { start: Position { line: 77, column: 27, }, end: Position { line: 77, column: 36, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "docker", span: Span { start: Position { line: 77, column: 38, }, end: Position { line: 77, column: 44, }, }, }, ), ], span: Span { start: Position { line: 77, column: 37, }, end: Position { line: 77, column: 45, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 77, column: 46, }, end: Position { line: 77, column: 53, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "executor", span: Span { start: Position { line: 77, column: 54, }, end: Position { line: 77, column: 62, }, }, }, ), ], default: None, }, ), ], }, ), Assert( Assert { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "assertMsg", span: Span { start: Position { line: 79, column: 17, }, end: Position { line: 79, column: 26, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 79, column: 28, }, end: Position { line: 79, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dockerImage", span: Span { start: Position { line: 79, column: 36, }, end: Position { line: 79, column: 47, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 79, column: 51, }, end: Position { line: 79, column: 55, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "dockerImage option is required for ", span: Span { start: Position { line: 80, column: 20, }, end: Position { line: 80, column: 74, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 80, column: 57, }, end: Position { line: 80, column: 64, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "executor", span: Span { start: Position { line: 80, column: 65, }, end: Position { line: 80, column: 73, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " executor (", span: Span { start: Position { line: 80, column: 20, }, end: Position { line: 80, column: 85, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 80, column: 87, }, end: Position { line: 80, column: 91, }, }, }, ), }, ), Raw( PartRaw { content: ")", span: Span { start: Position { line: 80, column: 20, }, end: Position { line: 80, column: 93, }, }, }, ), ], span: Span { start: Position { line: 80, column: 19, }, end: Position { line: 80, column: 94, }, }, }, ), ], }, ), target: BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "--docker-image ", span: Span { start: Position { line: 81, column: 18, }, end: Position { line: 81, column: 55, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 81, column: 35, }, end: Position { line: 81, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dockerImage", span: Span { start: Position { line: 81, column: 43, }, end: Position { line: 81, column: 54, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 81, column: 17, }, end: Position { line: 81, column: 56, }, }, }, ), ], span: Span { start: Position { line: 81, column: 15, }, end: Position { line: 81, column: 58, }, }, }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 82, column: 18, }, end: Position { line: 82, column: 26, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 82, column: 27, }, end: Position { line: 82, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dockerDisableCache", span: Span { start: Position { line: 82, column: 35, }, end: Position { line: 82, column: 53, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--docker-disable-cache", span: Span { start: Position { line: 83, column: 16, }, end: Position { line: 83, column: 38, }, }, }, ), ], span: Span { start: Position { line: 83, column: 15, }, end: Position { line: 83, column: 39, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 84, column: 18, }, end: Position { line: 84, column: 26, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 84, column: 27, }, end: Position { line: 84, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dockerPrivileged", span: Span { start: Position { line: 84, column: 35, }, end: Position { line: 84, column: 51, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--docker-privileged", span: Span { start: Position { line: 85, column: 16, }, end: Position { line: 85, column: 35, }, }, }, ), ], span: Span { start: Position { line: 85, column: 15, }, end: Position { line: 85, column: 36, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 86, column: 18, }, end: Position { line: 86, column: 21, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "--docker-volumes ", span: Span { start: Position { line: 86, column: 27, }, end: Position { line: 86, column: 63, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 86, column: 46, }, end: Position { line: 86, column: 60, }, }, }, ), arguments: [ Identifier( Identifier { id: "v", span: Span { start: Position { line: 86, column: 61, }, end: Position { line: 86, column: 62, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 86, column: 26, }, end: Position { line: 86, column: 64, }, }, }, ), span: Span { start: Position { line: 86, column: 23, }, end: Position { line: 86, column: 64, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 86, column: 66, }, end: Position { line: 86, column: 73, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dockerVolumes", span: Span { start: Position { line: 86, column: 74, }, end: Position { line: 86, column: 87, }, }, }, ), ], default: None, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 87, column: 18, }, end: Position { line: 87, column: 21, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "--docker-extra-hosts ", span: Span { start: Position { line: 87, column: 27, }, end: Position { line: 87, column: 67, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 87, column: 50, }, end: Position { line: 87, column: 64, }, }, }, ), arguments: [ Identifier( Identifier { id: "v", span: Span { start: Position { line: 87, column: 65, }, end: Position { line: 87, column: 66, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 87, column: 26, }, end: Position { line: 87, column: 68, }, }, }, ), span: Span { start: Position { line: 87, column: 23, }, end: Position { line: 87, column: 68, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 87, column: 70, }, end: Position { line: 87, column: 77, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dockerExtraHosts", span: Span { start: Position { line: 87, column: 78, }, end: Position { line: 87, column: 94, }, }, }, ), ], default: None, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 88, column: 18, }, end: Position { line: 88, column: 21, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "--docker-allowed-images ", span: Span { start: Position { line: 88, column: 27, }, end: Position { line: 88, column: 70, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 88, column: 53, }, end: Position { line: 88, column: 67, }, }, }, ), arguments: [ Identifier( Identifier { id: "v", span: Span { start: Position { line: 88, column: 68, }, end: Position { line: 88, column: 69, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 88, column: 26, }, end: Position { line: 88, column: 71, }, }, }, ), span: Span { start: Position { line: 88, column: 23, }, end: Position { line: 88, column: 71, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 88, column: 73, }, end: Position { line: 88, column: 80, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dockerAllowedImages", span: Span { start: Position { line: 88, column: 81, }, end: Position { line: 88, column: 100, }, }, }, ), ], default: None, }, ), ], }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 89, column: 18, }, end: Position { line: 89, column: 21, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "--docker-allowed-services ", span: Span { start: Position { line: 89, column: 27, }, end: Position { line: 89, column: 72, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "escapeShellArg", span: Span { start: Position { line: 89, column: 55, }, end: Position { line: 89, column: 69, }, }, }, ), arguments: [ Identifier( Identifier { id: "v", span: Span { start: Position { line: 89, column: 70, }, end: Position { line: 89, column: 71, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 89, column: 26, }, end: Position { line: 89, column: 73, }, }, }, ), span: Span { start: Position { line: 89, column: 23, }, end: Position { line: 89, column: 73, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "service", span: Span { start: Position { line: 89, column: 75, }, end: Position { line: 89, column: 82, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dockerAllowedServices", span: Span { start: Position { line: 89, column: 83, }, end: Position { line: 89, column: 104, }, }, }, ), ], default: None, }, ), ], }, ), }, ), }, ), }, ), }, ), }, ), }, ), span: Span { start: Position { line: 78, column: 15, }, end: Position { line: 89, column: 104, }, }, }, ), ], }, ), }, ), }, ), }, ), }, ), }, ), }, ), }, ), }, ), }, ), }, ), }, ), }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: " && sleep 1 || exit 1\nfi\n", span: Span { start: Position { line: 47, column: 1, }, end: Position { line: 93, column: 7, }, }, }, ), ], span: Span { start: Position { line: 46, column: 63, }, end: Position { line: 93, column: 9, }, }, }, ), span: Span { start: Position { line: 46, column: 54, }, end: Position { line: 93, column: 9, }, }, }, ), span: Span { start: Position { line: 46, column: 48, }, end: Position { line: 93, column: 9, }, }, }, ), Identifier( Identifier { id: "hashedServices", span: Span { start: Position { line: 93, column: 11, }, end: Position { line: 93, column: 25, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\n# unregister old services\nfor NAME in $(echo \"$OLD_SERVICES\")\ndo\n [ ! -z \"$NAME\" ] && gitlab-runner unregister \\\n --name \"$NAME\" && sleep 1\ndone\n\n# make config file readable by service\nchown -R --reference=$HOME $(dirname ", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 103, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 103, column: 46, }, end: Position { line: 103, column: 56, }, }, }, ), }, ), Raw( PartRaw { content: ")\n", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 104, column: 5, }, }, }, ), ], span: Span { start: Position { line: 21, column: 13, }, end: Position { line: 104, column: 7, }, }, }, ), span: Span { start: Position { line: 16, column: 5, }, end: Position { line: 104, column: 7, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "startScript", span: Span { start: Position { line: 105, column: 3, }, end: Position { line: 105, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 105, column: 17, }, end: Position { line: 105, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeShellScriptBin", span: Span { start: Position { line: 105, column: 22, }, end: Position { line: 105, column: 41, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner-start", span: Span { start: Position { line: 105, column: 43, }, end: Position { line: 105, column: 62, }, }, }, ), ], span: Span { start: Position { line: 105, column: 42, }, end: Position { line: 105, column: 63, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "export CONFIG_FILE=", span: Span { start: Position { line: 106, column: 1, }, end: Position { line: 106, column: 24, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configPath", span: Span { start: Position { line: 106, column: 26, }, end: Position { line: 106, column: 36, }, }, }, ), }, ), Raw( PartRaw { content: "\nexec gitlab-runner run --working-directory $HOME\n", span: Span { start: Position { line: 106, column: 1, }, end: Position { line: 108, column: 3, }, }, }, ), ], span: Span { start: Position { line: 105, column: 64, }, end: Position { line: 108, column: 5, }, }, }, ), ], }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 111, column: 3, }, end: Position { line: 111, column: 10, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 111, column: 11, }, end: Position { line: 111, column: 19, }, }, }, ), Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 111, column: 20, }, end: Position { line: 111, column: 33, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 112, column: 5, }, end: Position { line: 112, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 112, column: 14, }, end: Position { line: 112, column: 28, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 112, column: 30, }, end: Position { line: 112, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 112, column: 34, }, end: Position { line: 112, column: 39, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Gitlab Runner", span: Span { start: Position { line: 112, column: 41, }, end: Position { line: 112, column: 54, }, }, }, ), ], span: Span { start: Position { line: 112, column: 40, }, end: Position { line: 112, column: 55, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "configFile", span: Span { start: Position { line: 113, column: 5, }, end: Position { line: 113, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 113, column: 18, }, end: Position { line: 113, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 114, column: 7, }, end: Position { line: 114, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 114, column: 14, }, end: Position { line: 114, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 114, column: 20, }, end: Position { line: 114, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 114, column: 27, }, end: Position { line: 114, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 114, column: 33, }, end: Position { line: 114, column: 37, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 115, column: 7, }, end: Position { line: 115, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 115, column: 17, }, end: Position { line: 115, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 116, column: 7, }, end: Position { line: 116, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 116, column: 21, }, end: Position { line: 116, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 116, column: 25, }, end: Position { line: 116, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Configuration file for gitlab-runner.\n\n{option}`configFile` takes precedence over {option}`services`.\n{option}`checkInterval` and {option}`concurrent` will be ignored too.\n\nThis option is deprecated, please use {option}`services` instead.\nYou can use {option}`registrationConfigFile` and\n{option}`registrationFlags`\nfor settings not covered by this module.\n", span: Span { start: Position { line: 117, column: 1, }, end: Position { line: 126, column: 7, }, }, }, ), ], span: Span { start: Position { line: 116, column: 31, }, end: Position { line: 126, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 113, column: 27, }, end: Position { line: 127, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 128, column: 5, }, end: Position { line: 128, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 128, column: 16, }, end: Position { line: 128, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 129, column: 7, }, end: Position { line: 129, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 129, column: 14, }, end: Position { line: 129, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "submodule", span: Span { start: Position { line: 129, column: 20, }, end: Position { line: 129, column: 29, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "freeformType", span: Span { start: Position { line: 130, column: 9, }, end: Position { line: 130, column: 21, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 130, column: 25, }, end: Position { line: 130, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "formats", span: Span { start: Position { line: 130, column: 30, }, end: Position { line: 130, column: 37, }, }, }, ), Raw( PartRaw { content: "json", span: Span { start: Position { line: 130, column: 38, }, end: Position { line: 130, column: 42, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 130, column: 43, }, end: Position { line: 130, column: 46, }, }, }, ), ], }, ), attribute_path: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 130, column: 48, }, end: Position { line: 130, column: 52, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 129, column: 30, }, end: Position { line: 131, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 132, column: 7, }, end: Position { line: 132, column: 14, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 132, column: 17, }, end: Position { line: 132, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 133, column: 7, }, end: Position { line: 133, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 133, column: 21, }, end: Position { line: 133, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 133, column: 25, }, end: Position { line: 133, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Global gitlab-runner configuration. See\n\nfor supported values.\n", span: Span { start: Position { line: 134, column: 1, }, end: Position { line: 137, column: 7, }, }, }, ), ], span: Span { start: Position { line: 133, column: 31, }, end: Position { line: 137, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 128, column: 25, }, end: Position { line: 138, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gracefulTermination", span: Span { start: Position { line: 139, column: 5, }, end: Position { line: 139, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 139, column: 27, }, end: Position { line: 139, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 140, column: 7, }, end: Position { line: 140, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 140, column: 14, }, end: Position { line: 140, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 140, column: 20, }, end: Position { line: 140, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 141, column: 7, }, end: Position { line: 141, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 141, column: 17, }, end: Position { line: 141, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 142, column: 7, }, end: Position { line: 142, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 142, column: 21, }, end: Position { line: 142, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 142, column: 25, }, end: Position { line: 142, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Finish all remaining jobs before stopping.\nIf not set gitlab-runner will stop immediatly without waiting\nfor jobs to finish, which will lead to failed builds.\n", span: Span { start: Position { line: 143, column: 1, }, end: Position { line: 146, column: 7, }, }, }, ), ], span: Span { start: Position { line: 142, column: 31, }, end: Position { line: 146, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 139, column: 36, }, end: Position { line: 147, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gracefulTimeout", span: Span { start: Position { line: 148, column: 5, }, end: Position { line: 148, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 148, column: 23, }, end: Position { line: 148, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 149, column: 7, }, end: Position { line: 149, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 149, column: 14, }, end: Position { line: 149, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 149, column: 20, }, end: Position { line: 149, column: 23, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 150, column: 7, }, end: Position { line: 150, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "infinity", span: Span { start: Position { line: 150, column: 18, }, end: Position { line: 150, column: 26, }, }, }, ), ], span: Span { start: Position { line: 150, column: 17, }, end: Position { line: 150, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 151, column: 7, }, end: Position { line: 151, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "5min 20s", span: Span { start: Position { line: 151, column: 18, }, end: Position { line: 151, column: 26, }, }, }, ), ], span: Span { start: Position { line: 151, column: 17, }, end: Position { line: 151, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 152, column: 7, }, end: Position { line: 152, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 152, column: 21, }, end: Position { line: 152, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 152, column: 25, }, end: Position { line: 152, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Time to wait until a graceful shutdown is turned into a forceful one.\n", span: Span { start: Position { line: 153, column: 1, }, end: Position { line: 154, column: 7, }, }, }, ), ], span: Span { start: Position { line: 152, column: 31, }, end: Position { line: 154, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 148, column: 32, }, end: Position { line: 155, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 156, column: 5, }, end: Position { line: 156, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 156, column: 15, }, end: Position { line: 156, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 157, column: 7, }, end: Position { line: 157, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 157, column: 14, }, end: Position { line: 157, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 157, column: 20, }, end: Position { line: 157, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 158, column: 7, }, end: Position { line: 158, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 158, column: 17, }, end: Position { line: 158, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 158, column: 22, }, end: Position { line: 158, column: 35, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 159, column: 7, }, end: Position { line: 159, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 159, column: 21, }, end: Position { line: 159, column: 38, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.gitlab-runner", span: Span { start: Position { line: 159, column: 40, }, end: Position { line: 159, column: 58, }, }, }, ), ], span: Span { start: Position { line: 159, column: 39, }, end: Position { line: 159, column: 59, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 160, column: 7, }, end: Position { line: 160, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 160, column: 17, }, end: Position { line: 160, column: 34, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.gitlab-runner_1_11", span: Span { start: Position { line: 160, column: 36, }, end: Position { line: 160, column: 59, }, }, }, ), ], span: Span { start: Position { line: 160, column: 35, }, end: Position { line: 160, column: 60, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 161, column: 7, }, end: Position { line: 161, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 161, column: 21, }, end: Position { line: 161, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 161, column: 25, }, end: Position { line: 161, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Gitlab Runner package to use.", span: Span { start: Position { line: 161, column: 32, }, end: Position { line: 161, column: 61, }, }, }, ), ], span: Span { start: Position { line: 161, column: 31, }, end: Position { line: 161, column: 62, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 156, column: 24, }, end: Position { line: 162, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraPackages", span: Span { start: Position { line: 163, column: 5, }, end: Position { line: 163, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 163, column: 21, }, end: Position { line: 163, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 164, column: 7, }, end: Position { line: 164, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 164, column: 14, }, end: Position { line: 164, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 164, column: 20, }, end: Position { line: 164, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 164, column: 27, }, end: Position { line: 164, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 164, column: 33, }, end: Position { line: 164, column: 40, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 165, column: 7, }, end: Position { line: 165, column: 14, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 165, column: 17, }, end: Position { line: 165, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 166, column: 7, }, end: Position { line: 166, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 166, column: 21, }, end: Position { line: 166, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 166, column: 25, }, end: Position { line: 166, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Extra packages to add to PATH for the gitlab-runner process.\n", span: Span { start: Position { line: 167, column: 1, }, end: Position { line: 168, column: 7, }, }, }, ), ], span: Span { start: Position { line: 166, column: 31, }, end: Position { line: 168, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 163, column: 30, }, end: Position { line: 169, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 170, column: 5, }, end: Position { line: 170, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 170, column: 16, }, end: Position { line: 170, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 171, column: 7, }, end: Position { line: 171, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 171, column: 21, }, end: Position { line: 171, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 171, column: 25, }, end: Position { line: 171, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "GitLab Runner services.", span: Span { start: Position { line: 171, column: 32, }, end: Position { line: 171, column: 55, }, }, }, ), ], span: Span { start: Position { line: 171, column: 31, }, end: Position { line: 171, column: 56, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 172, column: 7, }, end: Position { line: 172, column: 14, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 172, column: 17, }, end: Position { line: 172, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 173, column: 7, }, end: Position { line: 173, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 173, column: 17, }, end: Position { line: 173, column: 34, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{\n # runner for building in docker via host's nix-daemon\n # nix store will be readable in runner, might be insecure\n nix = {\n # File should contain at least these two variables:\n # `CI_SERVER_URL`\n # `REGISTRATION_TOKEN`\n registrationConfigFile = \"/run/secrets/gitlab-runner-registration\";\n dockerImage = \"alpine\";\n dockerVolumes = [\n \"/nix/store:/nix/store:ro\"\n \"/nix/var/nix/db:/nix/var/nix/db:ro\"\n \"/nix/var/nix/daemon-socket:/nix/var/nix/daemon-socket:ro\"\n ];\n dockerDisableCache = true;\n preBuildScript = pkgs.writeScript \"setup-container\" ", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 189, column: 65, }, }, }, ), Raw( PartRaw { content: "''", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 189, column: 68, }, }, }, ), Raw( PartRaw { content: "\n mkdir -p -m 0755 /nix/var/log/nix/drvs\n mkdir -p -m 0755 /nix/var/nix/gcroots\n mkdir -p -m 0755 /nix/var/nix/profiles\n mkdir -p -m 0755 /nix/var/nix/temproots\n mkdir -p -m 0755 /nix/var/nix/userpool\n mkdir -p -m 1777 /nix/var/nix/gcroots/per-user\n mkdir -p -m 1777 /nix/var/nix/profiles/per-user\n mkdir -p -m 0755 /nix/var/nix/profiles/per-user/root\n mkdir -p -m 0700 \"$HOME/.nix-defexpr\"\n\n . ", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 200, column: 17, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 200, column: 20, }, }, }, ), Raw( PartRaw { content: "{pkgs.nix}/etc/profile.d/nix.sh\n\n ", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 202, column: 15, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 202, column: 18, }, }, }, ), Raw( PartRaw { content: "{pkgs.nix}/bin/nix-env -i ", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 202, column: 44, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 202, column: 47, }, }, }, ), Raw( PartRaw { content: "{concatStringsSep \" \" (with pkgs; [ nix cacert git openssh ])}\n\n ", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 204, column: 15, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 204, column: 18, }, }, }, ), Raw( PartRaw { content: "{pkgs.nix}/bin/nix-channel --add https://nixos.org/channels/nixpkgs-unstable\n ", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 205, column: 15, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 205, column: 18, }, }, }, ), Raw( PartRaw { content: "{pkgs.nix}/bin/nix-channel --update nixpkgs\n ", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 206, column: 13, }, }, }, ), Raw( PartRaw { content: "''", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 206, column: 16, }, }, }, ), Raw( PartRaw { content: ";\n environmentVariables = {\n ENV = \"/etc/profile\";\n USER = \"root\";\n NIX_REMOTE = \"daemon\";\n PATH = \"/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/bin:/sbin:/usr/bin:/usr/sbin\";\n NIX_SSL_CERT_FILE = \"/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt\";\n };\n tagList = [ \"nix\" ];\n };\n # runner for building docker images\n docker-images = {\n # File should contain at least these two variables:\n # `CI_SERVER_URL`\n # `REGISTRATION_TOKEN`\n registrationConfigFile = \"/run/secrets/gitlab-runner-registration\";\n dockerImage = \"docker:stable\";\n dockerVolumes = [\n \"/var/run/docker.sock:/var/run/docker.sock\"\n ];\n tagList = [ \"docker-images\" ];\n };\n # runner for executing stuff on host system (very insecure!)\n # make sure to add required packages (including git!)\n # to `environment.systemPackages`\n shell = {\n # File should contain at least these two variables:\n # `CI_SERVER_URL`\n # `REGISTRATION_TOKEN`\n registrationConfigFile = \"/run/secrets/gitlab-runner-registration\";\n executor = \"shell\";\n tagList = [ \"shell\" ];\n };\n # runner for everything else\n default = {\n # File should contain at least these two variables:\n # `CI_SERVER_URL`\n # `REGISTRATION_TOKEN`\n registrationConfigFile = \"/run/secrets/gitlab-runner-registration\";\n dockerImage = \"debian:stable\";\n };\n}\n", span: Span { start: Position { line: 174, column: 1, }, end: Position { line: 248, column: 7, }, }, }, ), ], span: Span { start: Position { line: 173, column: 35, }, end: Position { line: 248, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 249, column: 7, }, end: Position { line: 249, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 249, column: 14, }, end: Position { line: 249, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrsOf", span: Span { start: Position { line: 249, column: 20, }, end: Position { line: 249, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 249, column: 29, }, end: Position { line: 249, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "submodule", span: Span { start: Position { line: 249, column: 35, }, end: Position { line: 249, column: 44, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 250, column: 9, }, end: Position { line: 250, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "registrationConfigFile", span: Span { start: Position { line: 251, column: 11, }, end: Position { line: 251, column: 33, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 251, column: 36, }, end: Position { line: 251, column: 44, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 252, column: 13, }, end: Position { line: 252, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 252, column: 20, }, end: Position { line: 252, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 252, column: 26, }, end: Position { line: 252, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 253, column: 13, }, end: Position { line: 253, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 253, column: 27, }, end: Position { line: 253, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 253, column: 31, }, end: Position { line: 253, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Absolute path to a file with environment variables\nused for gitlab-runner registration.\nA list of all supported environment variables can be found in\n`gitlab-runner register --help`.\n\nOnes that you probably want to set is\n\n`CI_SERVER_URL=`\n\n`REGISTRATION_TOKEN=`\n\nWARNING: make sure to use quoted absolute path,\nor it is going to be copied to Nix Store.\n", span: Span { start: Position { line: 254, column: 1, }, end: Position { line: 267, column: 13, }, }, }, ), ], span: Span { start: Position { line: 253, column: 37, }, end: Position { line: 267, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 251, column: 45, }, end: Position { line: 268, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "registrationFlags", span: Span { start: Position { line: 269, column: 11, }, end: Position { line: 269, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 269, column: 31, }, end: Position { line: 269, column: 39, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 270, column: 13, }, end: Position { line: 270, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 270, column: 20, }, end: Position { line: 270, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 270, column: 26, }, end: Position { line: 270, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 270, column: 33, }, end: Position { line: 270, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 270, column: 39, }, end: Position { line: 270, column: 42, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 271, column: 13, }, end: Position { line: 271, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 271, column: 23, }, end: Position { line: 271, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 272, column: 13, }, end: Position { line: 272, column: 20, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "--docker-helper-image my/gitlab-runner-helper", span: Span { start: Position { line: 272, column: 26, }, end: Position { line: 272, column: 71, }, }, }, ), ], span: Span { start: Position { line: 272, column: 25, }, end: Position { line: 272, column: 72, }, }, }, ), ], span: Span { start: Position { line: 272, column: 23, }, end: Position { line: 272, column: 74, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 273, column: 13, }, end: Position { line: 273, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 273, column: 27, }, end: Position { line: 273, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 273, column: 31, }, end: Position { line: 273, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Extra command-line flags passed to\n`gitlab-runner register`.\nExecute `gitlab-runner register --help`\nfor a list of supported flags.\n", span: Span { start: Position { line: 274, column: 1, }, end: Position { line: 278, column: 13, }, }, }, ), ], span: Span { start: Position { line: 273, column: 37, }, end: Position { line: 278, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 269, column: 40, }, end: Position { line: 279, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environmentVariables", span: Span { start: Position { line: 280, column: 11, }, end: Position { line: 280, column: 31, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 280, column: 34, }, end: Position { line: 280, column: 42, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 281, column: 13, }, end: Position { line: 281, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 281, column: 20, }, end: Position { line: 281, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrsOf", span: Span { start: Position { line: 281, column: 26, }, end: Position { line: 281, column: 33, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 281, column: 34, }, end: Position { line: 281, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 281, column: 40, }, end: Position { line: 281, column: 43, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 282, column: 13, }, end: Position { line: 282, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 282, column: 23, }, end: Position { line: 282, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 283, column: 13, }, end: Position { line: 283, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "NAME", span: Span { start: Position { line: 283, column: 25, }, end: Position { line: 283, column: 29, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "value", span: Span { start: Position { line: 283, column: 33, }, end: Position { line: 283, column: 38, }, }, }, ), ], span: Span { start: Position { line: 283, column: 32, }, end: Position { line: 283, column: 39, }, }, }, ), }, ), ], span: Span { start: Position { line: 283, column: 23, }, end: Position { line: 283, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 284, column: 13, }, end: Position { line: 284, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 284, column: 27, }, end: Position { line: 284, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 284, column: 31, }, end: Position { line: 284, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Custom environment variables injected to build environment.\nFor secrets you can use {option}`registrationConfigFile`\nwith `RUNNER_ENV` variable set.\n", span: Span { start: Position { line: 285, column: 1, }, end: Position { line: 288, column: 13, }, }, }, ), ], span: Span { start: Position { line: 284, column: 37, }, end: Position { line: 288, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 280, column: 43, }, end: Position { line: 289, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 290, column: 11, }, end: Position { line: 290, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 290, column: 25, }, end: Position { line: 290, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 291, column: 13, }, end: Position { line: 291, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 291, column: 20, }, end: Position { line: 291, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 291, column: 26, }, end: Position { line: 291, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 291, column: 33, }, end: Position { line: 291, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 291, column: 39, }, end: Position { line: 291, column: 42, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 292, column: 13, }, end: Position { line: 292, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 292, column: 23, }, end: Position { line: 292, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 293, column: 13, }, end: Position { line: 293, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 293, column: 27, }, end: Position { line: 293, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 293, column: 31, }, end: Position { line: 293, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Name/description of the runner.\n", span: Span { start: Position { line: 294, column: 1, }, end: Position { line: 295, column: 13, }, }, }, ), ], span: Span { start: Position { line: 293, column: 37, }, end: Position { line: 295, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 290, column: 34, }, end: Position { line: 296, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "executor", span: Span { start: Position { line: 297, column: 11, }, end: Position { line: 297, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 297, column: 22, }, end: Position { line: 297, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 298, column: 13, }, end: Position { line: 298, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 298, column: 20, }, end: Position { line: 298, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 298, column: 26, }, end: Position { line: 298, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 299, column: 13, }, end: Position { line: 299, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "docker", span: Span { start: Position { line: 299, column: 24, }, end: Position { line: 299, column: 30, }, }, }, ), ], span: Span { start: Position { line: 299, column: 23, }, end: Position { line: 299, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 300, column: 13, }, end: Position { line: 300, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 300, column: 27, }, end: Position { line: 300, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 300, column: 31, }, end: Position { line: 300, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Select executor, eg. shell, docker, etc.\nSee [runner documentation](https://docs.gitlab.com/runner/executors/README.html) for more information.\n", span: Span { start: Position { line: 301, column: 1, }, end: Position { line: 303, column: 13, }, }, }, ), ], span: Span { start: Position { line: 300, column: 37, }, end: Position { line: 303, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 297, column: 31, }, end: Position { line: 304, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "buildsDir", span: Span { start: Position { line: 305, column: 11, }, end: Position { line: 305, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 305, column: 23, }, end: Position { line: 305, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 306, column: 13, }, end: Position { line: 306, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 306, column: 20, }, end: Position { line: 306, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 306, column: 26, }, end: Position { line: 306, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 306, column: 33, }, end: Position { line: 306, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 306, column: 39, }, end: Position { line: 306, column: 43, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 307, column: 13, }, end: Position { line: 307, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 307, column: 23, }, end: Position { line: 307, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 308, column: 13, }, end: Position { line: 308, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/lib/gitlab-runner/builds", span: Span { start: Position { line: 308, column: 24, }, end: Position { line: 308, column: 53, }, }, }, ), ], span: Span { start: Position { line: 308, column: 23, }, end: Position { line: 308, column: 54, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 309, column: 13, }, end: Position { line: 309, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 309, column: 27, }, end: Position { line: 309, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 309, column: 31, }, end: Position { line: 309, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Absolute path to a directory where builds will be stored\nin context of selected executor (Locally, Docker, SSH).\n", span: Span { start: Position { line: 310, column: 1, }, end: Position { line: 312, column: 13, }, }, }, ), ], span: Span { start: Position { line: 309, column: 37, }, end: Position { line: 312, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 305, column: 32, }, end: Position { line: 313, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cloneUrl", span: Span { start: Position { line: 314, column: 11, }, end: Position { line: 314, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 314, column: 22, }, end: Position { line: 314, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 315, column: 13, }, end: Position { line: 315, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 315, column: 20, }, end: Position { line: 315, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 315, column: 26, }, end: Position { line: 315, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 315, column: 33, }, end: Position { line: 315, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 315, column: 39, }, end: Position { line: 315, column: 42, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 316, column: 13, }, end: Position { line: 316, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 316, column: 23, }, end: Position { line: 316, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 317, column: 13, }, end: Position { line: 317, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "http://gitlab.example.local", span: Span { start: Position { line: 317, column: 24, }, end: Position { line: 317, column: 51, }, }, }, ), ], span: Span { start: Position { line: 317, column: 23, }, end: Position { line: 317, column: 52, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 318, column: 13, }, end: Position { line: 318, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 318, column: 27, }, end: Position { line: 318, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 318, column: 31, }, end: Position { line: 318, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Overwrite the URL for the GitLab instance. Used if the Runner can’t connect to GitLab on the URL GitLab exposes itself.\n", span: Span { start: Position { line: 319, column: 1, }, end: Position { line: 320, column: 13, }, }, }, ), ], span: Span { start: Position { line: 318, column: 37, }, end: Position { line: 320, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 314, column: 31, }, end: Position { line: 321, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dockerImage", span: Span { start: Position { line: 322, column: 11, }, end: Position { line: 322, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 322, column: 25, }, end: Position { line: 322, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 323, column: 13, }, end: Position { line: 323, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 323, column: 20, }, end: Position { line: 323, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 323, column: 26, }, end: Position { line: 323, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 323, column: 33, }, end: Position { line: 323, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 323, column: 39, }, end: Position { line: 323, column: 42, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 324, column: 13, }, end: Position { line: 324, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 324, column: 23, }, end: Position { line: 324, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 325, column: 13, }, end: Position { line: 325, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 325, column: 27, }, end: Position { line: 325, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 325, column: 31, }, end: Position { line: 325, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Docker image to be used.\n", span: Span { start: Position { line: 326, column: 1, }, end: Position { line: 327, column: 13, }, }, }, ), ], span: Span { start: Position { line: 325, column: 37, }, end: Position { line: 327, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 322, column: 34, }, end: Position { line: 328, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dockerVolumes", span: Span { start: Position { line: 329, column: 11, }, end: Position { line: 329, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 329, column: 27, }, end: Position { line: 329, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 330, column: 13, }, end: Position { line: 330, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 330, column: 20, }, end: Position { line: 330, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 330, column: 26, }, end: Position { line: 330, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 330, column: 33, }, end: Position { line: 330, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 330, column: 39, }, end: Position { line: 330, column: 42, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 331, column: 13, }, end: Position { line: 331, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 331, column: 23, }, end: Position { line: 331, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 332, column: 13, }, end: Position { line: 332, column: 20, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "/var/run/docker.sock:/var/run/docker.sock", span: Span { start: Position { line: 332, column: 26, }, end: Position { line: 332, column: 67, }, }, }, ), ], span: Span { start: Position { line: 332, column: 25, }, end: Position { line: 332, column: 68, }, }, }, ), ], span: Span { start: Position { line: 332, column: 23, }, end: Position { line: 332, column: 70, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 333, column: 13, }, end: Position { line: 333, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 333, column: 27, }, end: Position { line: 333, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 333, column: 31, }, end: Position { line: 333, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Bind-mount a volume and create it\nif it doesn't exist prior to mounting.\n", span: Span { start: Position { line: 334, column: 1, }, end: Position { line: 336, column: 13, }, }, }, ), ], span: Span { start: Position { line: 333, column: 37, }, end: Position { line: 336, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 329, column: 36, }, end: Position { line: 337, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dockerDisableCache", span: Span { start: Position { line: 338, column: 11, }, end: Position { line: 338, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 338, column: 32, }, end: Position { line: 338, column: 40, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 339, column: 13, }, end: Position { line: 339, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 339, column: 20, }, end: Position { line: 339, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 339, column: 26, }, end: Position { line: 339, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 340, column: 13, }, end: Position { line: 340, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 340, column: 23, }, end: Position { line: 340, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 341, column: 13, }, end: Position { line: 341, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 341, column: 27, }, end: Position { line: 341, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 341, column: 31, }, end: Position { line: 341, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Disable all container caching.\n", span: Span { start: Position { line: 342, column: 1, }, end: Position { line: 343, column: 13, }, }, }, ), ], span: Span { start: Position { line: 341, column: 37, }, end: Position { line: 343, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 338, column: 41, }, end: Position { line: 344, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dockerPrivileged", span: Span { start: Position { line: 345, column: 11, }, end: Position { line: 345, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 345, column: 30, }, end: Position { line: 345, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 346, column: 13, }, end: Position { line: 346, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 346, column: 20, }, end: Position { line: 346, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 346, column: 26, }, end: Position { line: 346, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 347, column: 13, }, end: Position { line: 347, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 347, column: 23, }, end: Position { line: 347, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 348, column: 13, }, end: Position { line: 348, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 348, column: 27, }, end: Position { line: 348, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 348, column: 31, }, end: Position { line: 348, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Give extended privileges to container.\n", span: Span { start: Position { line: 349, column: 1, }, end: Position { line: 350, column: 13, }, }, }, ), ], span: Span { start: Position { line: 348, column: 37, }, end: Position { line: 350, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 345, column: 39, }, end: Position { line: 351, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dockerExtraHosts", span: Span { start: Position { line: 352, column: 11, }, end: Position { line: 352, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 352, column: 30, }, end: Position { line: 352, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 353, column: 13, }, end: Position { line: 353, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 353, column: 20, }, end: Position { line: 353, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 353, column: 26, }, end: Position { line: 353, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 353, column: 33, }, end: Position { line: 353, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 353, column: 39, }, end: Position { line: 353, column: 42, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 354, column: 13, }, end: Position { line: 354, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 354, column: 23, }, end: Position { line: 354, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 355, column: 13, }, end: Position { line: 355, column: 20, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "other-host:127.0.0.1", span: Span { start: Position { line: 355, column: 26, }, end: Position { line: 355, column: 46, }, }, }, ), ], span: Span { start: Position { line: 355, column: 25, }, end: Position { line: 355, column: 47, }, }, }, ), ], span: Span { start: Position { line: 355, column: 23, }, end: Position { line: 355, column: 49, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 356, column: 13, }, end: Position { line: 356, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 356, column: 27, }, end: Position { line: 356, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 356, column: 31, }, end: Position { line: 356, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Add a custom host-to-IP mapping.\n", span: Span { start: Position { line: 357, column: 1, }, end: Position { line: 358, column: 13, }, }, }, ), ], span: Span { start: Position { line: 356, column: 37, }, end: Position { line: 358, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 352, column: 39, }, end: Position { line: 359, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dockerAllowedImages", span: Span { start: Position { line: 360, column: 11, }, end: Position { line: 360, column: 30, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 360, column: 33, }, end: Position { line: 360, column: 41, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 361, column: 13, }, end: Position { line: 361, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 361, column: 20, }, end: Position { line: 361, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 361, column: 26, }, end: Position { line: 361, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 361, column: 33, }, end: Position { line: 361, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 361, column: 39, }, end: Position { line: 361, column: 42, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 362, column: 13, }, end: Position { line: 362, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 362, column: 23, }, end: Position { line: 362, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 363, column: 13, }, end: Position { line: 363, column: 20, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "ruby:*", span: Span { start: Position { line: 363, column: 26, }, end: Position { line: 363, column: 32, }, }, }, ), ], span: Span { start: Position { line: 363, column: 25, }, end: Position { line: 363, column: 33, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "python:*", span: Span { start: Position { line: 363, column: 35, }, end: Position { line: 363, column: 43, }, }, }, ), ], span: Span { start: Position { line: 363, column: 34, }, end: Position { line: 363, column: 44, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "php:*", span: Span { start: Position { line: 363, column: 46, }, end: Position { line: 363, column: 51, }, }, }, ), ], span: Span { start: Position { line: 363, column: 45, }, end: Position { line: 363, column: 52, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "my.registry.tld:5000/*:*", span: Span { start: Position { line: 363, column: 54, }, end: Position { line: 363, column: 78, }, }, }, ), ], span: Span { start: Position { line: 363, column: 53, }, end: Position { line: 363, column: 79, }, }, }, ), ], span: Span { start: Position { line: 363, column: 23, }, end: Position { line: 363, column: 81, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 364, column: 13, }, end: Position { line: 364, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 364, column: 27, }, end: Position { line: 364, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 364, column: 31, }, end: Position { line: 364, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whitelist allowed images.\n", span: Span { start: Position { line: 365, column: 1, }, end: Position { line: 366, column: 13, }, }, }, ), ], span: Span { start: Position { line: 364, column: 37, }, end: Position { line: 366, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 360, column: 42, }, end: Position { line: 367, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dockerAllowedServices", span: Span { start: Position { line: 368, column: 11, }, end: Position { line: 368, column: 32, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 368, column: 35, }, end: Position { line: 368, column: 43, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 369, column: 13, }, end: Position { line: 369, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 369, column: 20, }, end: Position { line: 369, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 369, column: 26, }, end: Position { line: 369, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 369, column: 33, }, end: Position { line: 369, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 369, column: 39, }, end: Position { line: 369, column: 42, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 370, column: 13, }, end: Position { line: 370, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 370, column: 23, }, end: Position { line: 370, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 371, column: 13, }, end: Position { line: 371, column: 20, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "postgres:9", span: Span { start: Position { line: 371, column: 26, }, end: Position { line: 371, column: 36, }, }, }, ), ], span: Span { start: Position { line: 371, column: 25, }, end: Position { line: 371, column: 37, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "redis:*", span: Span { start: Position { line: 371, column: 39, }, end: Position { line: 371, column: 46, }, }, }, ), ], span: Span { start: Position { line: 371, column: 38, }, end: Position { line: 371, column: 47, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "mysql:*", span: Span { start: Position { line: 371, column: 49, }, end: Position { line: 371, column: 56, }, }, }, ), ], span: Span { start: Position { line: 371, column: 48, }, end: Position { line: 371, column: 57, }, }, }, ), ], span: Span { start: Position { line: 371, column: 23, }, end: Position { line: 371, column: 59, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 372, column: 13, }, end: Position { line: 372, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 372, column: 27, }, end: Position { line: 372, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 372, column: 31, }, end: Position { line: 372, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whitelist allowed services.\n", span: Span { start: Position { line: 373, column: 1, }, end: Position { line: 374, column: 13, }, }, }, ), ], span: Span { start: Position { line: 372, column: 37, }, end: Position { line: 374, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 368, column: 44, }, end: Position { line: 375, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "preCloneScript", span: Span { start: Position { line: 376, column: 11, }, end: Position { line: 376, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 376, column: 28, }, end: Position { line: 376, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 377, column: 13, }, end: Position { line: 377, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 377, column: 20, }, end: Position { line: 377, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 377, column: 26, }, end: Position { line: 377, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 377, column: 33, }, end: Position { line: 377, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 377, column: 39, }, end: Position { line: 377, column: 43, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 378, column: 13, }, end: Position { line: 378, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 378, column: 23, }, end: Position { line: 378, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 379, column: 13, }, end: Position { line: 379, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 379, column: 27, }, end: Position { line: 379, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 379, column: 31, }, end: Position { line: 379, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Runner-specific command script executed before code is pulled.\n", span: Span { start: Position { line: 380, column: 1, }, end: Position { line: 381, column: 13, }, }, }, ), ], span: Span { start: Position { line: 379, column: 37, }, end: Position { line: 381, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 376, column: 37, }, end: Position { line: 382, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "preBuildScript", span: Span { start: Position { line: 383, column: 11, }, end: Position { line: 383, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 383, column: 28, }, end: Position { line: 383, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 384, column: 13, }, end: Position { line: 384, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 384, column: 20, }, end: Position { line: 384, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 384, column: 26, }, end: Position { line: 384, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 384, column: 33, }, end: Position { line: 384, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 384, column: 39, }, end: Position { line: 384, column: 43, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 385, column: 13, }, end: Position { line: 385, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 385, column: 23, }, end: Position { line: 385, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 386, column: 13, }, end: Position { line: 386, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 386, column: 27, }, end: Position { line: 386, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 386, column: 31, }, end: Position { line: 386, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Runner-specific command script executed after code is pulled,\njust before build executes.\n", span: Span { start: Position { line: 387, column: 1, }, end: Position { line: 389, column: 13, }, }, }, ), ], span: Span { start: Position { line: 386, column: 37, }, end: Position { line: 389, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 383, column: 37, }, end: Position { line: 390, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "postBuildScript", span: Span { start: Position { line: 391, column: 11, }, end: Position { line: 391, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 391, column: 29, }, end: Position { line: 391, column: 37, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 392, column: 13, }, end: Position { line: 392, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 392, column: 20, }, end: Position { line: 392, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 392, column: 26, }, end: Position { line: 392, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 392, column: 33, }, end: Position { line: 392, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 392, column: 39, }, end: Position { line: 392, column: 43, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 393, column: 13, }, end: Position { line: 393, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 393, column: 23, }, end: Position { line: 393, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 394, column: 13, }, end: Position { line: 394, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 394, column: 27, }, end: Position { line: 394, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 394, column: 31, }, end: Position { line: 394, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Runner-specific command script executed after code is pulled\nand just after build executes.\n", span: Span { start: Position { line: 395, column: 1, }, end: Position { line: 397, column: 13, }, }, }, ), ], span: Span { start: Position { line: 394, column: 37, }, end: Position { line: 397, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 391, column: 38, }, end: Position { line: 398, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tagList", span: Span { start: Position { line: 399, column: 11, }, end: Position { line: 399, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 399, column: 21, }, end: Position { line: 399, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 400, column: 13, }, end: Position { line: 400, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 400, column: 20, }, end: Position { line: 400, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 400, column: 26, }, end: Position { line: 400, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 400, column: 33, }, end: Position { line: 400, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 400, column: 39, }, end: Position { line: 400, column: 42, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 401, column: 13, }, end: Position { line: 401, column: 20, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 401, column: 23, }, end: Position { line: 401, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 402, column: 13, }, end: Position { line: 402, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 402, column: 27, }, end: Position { line: 402, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 402, column: 31, }, end: Position { line: 402, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Tag list.\n", span: Span { start: Position { line: 403, column: 1, }, end: Position { line: 404, column: 13, }, }, }, ), ], span: Span { start: Position { line: 402, column: 37, }, end: Position { line: 404, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 399, column: 30, }, end: Position { line: 405, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "runUntagged", span: Span { start: Position { line: 406, column: 11, }, end: Position { line: 406, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 406, column: 25, }, end: Position { line: 406, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 407, column: 13, }, end: Position { line: 407, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 407, column: 20, }, end: Position { line: 407, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 407, column: 26, }, end: Position { line: 407, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 408, column: 13, }, end: Position { line: 408, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 408, column: 23, }, end: Position { line: 408, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 409, column: 13, }, end: Position { line: 409, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 409, column: 27, }, end: Position { line: 409, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 409, column: 31, }, end: Position { line: 409, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Register to run untagged builds; defaults to\n`true` when {option}`tagList` is empty.\n", span: Span { start: Position { line: 410, column: 1, }, end: Position { line: 412, column: 13, }, }, }, ), ], span: Span { start: Position { line: 409, column: 37, }, end: Position { line: 412, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 406, column: 34, }, end: Position { line: 413, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "limit", span: Span { start: Position { line: 414, column: 11, }, end: Position { line: 414, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 414, column: 19, }, end: Position { line: 414, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 415, column: 13, }, end: Position { line: 415, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 415, column: 20, }, end: Position { line: 415, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 415, column: 26, }, end: Position { line: 415, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 416, column: 13, }, end: Position { line: 416, column: 20, }, }, }, ), ], to: Integer( Integer { value: "0", span: Span { start: Position { line: 416, column: 23, }, end: Position { line: 416, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 417, column: 13, }, end: Position { line: 417, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 417, column: 27, }, end: Position { line: 417, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 417, column: 31, }, end: Position { line: 417, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Limit how many jobs can be handled concurrently by this service.\n0 (default) simply means don't limit.\n", span: Span { start: Position { line: 418, column: 1, }, end: Position { line: 420, column: 13, }, }, }, ), ], span: Span { start: Position { line: 417, column: 37, }, end: Position { line: 420, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 414, column: 28, }, end: Position { line: 421, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "requestConcurrency", span: Span { start: Position { line: 422, column: 11, }, end: Position { line: 422, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 422, column: 32, }, end: Position { line: 422, column: 40, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 423, column: 13, }, end: Position { line: 423, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 423, column: 20, }, end: Position { line: 423, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 423, column: 26, }, end: Position { line: 423, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 424, column: 13, }, end: Position { line: 424, column: 20, }, }, }, ), ], to: Integer( Integer { value: "0", span: Span { start: Position { line: 424, column: 23, }, end: Position { line: 424, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 425, column: 13, }, end: Position { line: 425, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 425, column: 27, }, end: Position { line: 425, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 425, column: 31, }, end: Position { line: 425, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Limit number of concurrent requests for new jobs from GitLab.\n", span: Span { start: Position { line: 426, column: 1, }, end: Position { line: 427, column: 13, }, }, }, ), ], span: Span { start: Position { line: 425, column: 37, }, end: Position { line: 427, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 422, column: 41, }, end: Position { line: 428, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "maximumTimeout", span: Span { start: Position { line: 429, column: 11, }, end: Position { line: 429, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 429, column: 28, }, end: Position { line: 429, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 430, column: 13, }, end: Position { line: 430, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 430, column: 20, }, end: Position { line: 430, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 430, column: 26, }, end: Position { line: 430, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 431, column: 13, }, end: Position { line: 431, column: 20, }, }, }, ), ], to: Integer( Integer { value: "0", span: Span { start: Position { line: 431, column: 23, }, end: Position { line: 431, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 432, column: 13, }, end: Position { line: 432, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 432, column: 27, }, end: Position { line: 432, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 432, column: 31, }, end: Position { line: 432, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "What is the maximum timeout (in seconds) that will be set for\njob when using this Runner. 0 (default) simply means don't limit.\n", span: Span { start: Position { line: 433, column: 1, }, end: Position { line: 435, column: 13, }, }, }, ), ], span: Span { start: Position { line: 432, column: 37, }, end: Position { line: 435, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 429, column: 37, }, end: Position { line: 436, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "protected", span: Span { start: Position { line: 437, column: 11, }, end: Position { line: 437, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 437, column: 23, }, end: Position { line: 437, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 438, column: 13, }, end: Position { line: 438, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 438, column: 20, }, end: Position { line: 438, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 438, column: 26, }, end: Position { line: 438, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 439, column: 13, }, end: Position { line: 439, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 439, column: 23, }, end: Position { line: 439, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 440, column: 13, }, end: Position { line: 440, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 440, column: 27, }, end: Position { line: 440, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 440, column: 31, }, end: Position { line: 440, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "When set to true Runner will only run on pipelines\ntriggered on protected branches.\n", span: Span { start: Position { line: 441, column: 1, }, end: Position { line: 443, column: 13, }, }, }, ), ], span: Span { start: Position { line: 440, column: 37, }, end: Position { line: 443, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 437, column: 32, }, end: Position { line: 444, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "debugTraceDisabled", span: Span { start: Position { line: 445, column: 11, }, end: Position { line: 445, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 445, column: 32, }, end: Position { line: 445, column: 40, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 446, column: 13, }, end: Position { line: 446, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 446, column: 20, }, end: Position { line: 446, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 446, column: 26, }, end: Position { line: 446, column: 30, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 447, column: 13, }, end: Position { line: 447, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 447, column: 23, }, end: Position { line: 447, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 448, column: 13, }, end: Position { line: 448, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 448, column: 27, }, end: Position { line: 448, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 448, column: 31, }, end: Position { line: 448, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "When set to true Runner will disable the possibility of\nusing the `CI_DEBUG_TRACE` feature.\n", span: Span { start: Position { line: 449, column: 1, }, end: Position { line: 451, column: 13, }, }, }, ), ], span: Span { start: Position { line: 448, column: 37, }, end: Position { line: 451, column: 15, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 445, column: 41, }, end: Position { line: 452, column: 12, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 250, column: 19, }, end: Position { line: 453, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 249, column: 45, }, end: Position { line: 454, column: 8, }, }, }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 170, column: 25, }, end: Position { line: 455, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "clear-docker-cache", span: Span { start: Position { line: 456, column: 5, }, end: Position { line: 456, column: 23, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 457, column: 7, }, end: Position { line: 457, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 457, column: 16, }, end: Position { line: 457, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 458, column: 9, }, end: Position { line: 458, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 458, column: 16, }, end: Position { line: 458, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 458, column: 22, }, end: Position { line: 458, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 459, column: 9, }, end: Position { line: 459, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 459, column: 19, }, end: Position { line: 459, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 460, column: 9, }, end: Position { line: 460, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 460, column: 23, }, end: Position { line: 460, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 460, column: 27, }, end: Position { line: 460, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whether to periodically prune gitlab runner's Docker resources. If\nenabled, a systemd timer will run {command}`clear-docker-cache` as\nspecified by the `dates` option.\n", span: Span { start: Position { line: 461, column: 1, }, end: Position { line: 464, column: 9, }, }, }, ), ], span: Span { start: Position { line: 460, column: 33, }, end: Position { line: 464, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 457, column: 25, }, end: Position { line: 465, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "flags", span: Span { start: Position { line: 467, column: 7, }, end: Position { line: 467, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 467, column: 15, }, end: Position { line: 467, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 468, column: 9, }, end: Position { line: 468, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 468, column: 16, }, end: Position { line: 468, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 468, column: 22, }, end: Position { line: 468, column: 28, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 468, column: 29, }, end: Position { line: 468, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 468, column: 35, }, end: Position { line: 468, column: 38, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 469, column: 9, }, end: Position { line: 469, column: 16, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 469, column: 19, }, end: Position { line: 469, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 470, column: 9, }, end: Position { line: 470, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "prune", span: Span { start: Position { line: 470, column: 22, }, end: Position { line: 470, column: 27, }, }, }, ), ], span: Span { start: Position { line: 470, column: 21, }, end: Position { line: 470, column: 28, }, }, }, ), ], span: Span { start: Position { line: 470, column: 19, }, end: Position { line: 470, column: 30, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 471, column: 9, }, end: Position { line: 471, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 471, column: 23, }, end: Position { line: 471, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 471, column: 27, }, end: Position { line: 471, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Any additional flags passed to {command}`clear-docker-cache`.\n", span: Span { start: Position { line: 472, column: 1, }, end: Position { line: 473, column: 9, }, }, }, ), ], span: Span { start: Position { line: 471, column: 33, }, end: Position { line: 473, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 467, column: 24, }, end: Position { line: 474, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dates", span: Span { start: Position { line: 476, column: 7, }, end: Position { line: 476, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 476, column: 15, }, end: Position { line: 476, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 477, column: 9, }, end: Position { line: 477, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "weekly", span: Span { start: Position { line: 477, column: 20, }, end: Position { line: 477, column: 26, }, }, }, ), ], span: Span { start: Position { line: 477, column: 19, }, end: Position { line: 477, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 478, column: 9, }, end: Position { line: 478, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 478, column: 16, }, end: Position { line: 478, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 478, column: 22, }, end: Position { line: 478, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 479, column: 9, }, end: Position { line: 479, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 479, column: 23, }, end: Position { line: 479, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 479, column: 27, }, end: Position { line: 479, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specification (in the format described by\n{manpage}`systemd.time(7)`) of the time at\nwhich the prune will occur.\n", span: Span { start: Position { line: 480, column: 1, }, end: Position { line: 483, column: 9, }, }, }, ), ], span: Span { start: Position { line: 479, column: 33, }, end: Position { line: 483, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 476, column: 24, }, end: Position { line: 484, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 486, column: 7, }, end: Position { line: 486, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 486, column: 17, }, end: Position { line: 486, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 487, column: 9, }, end: Position { line: 487, column: 16, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 487, column: 19, }, end: Position { line: 487, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "virtualisation", span: Span { start: Position { line: 487, column: 26, }, end: Position { line: 487, column: 40, }, }, }, ), Raw( PartRaw { content: "docker", span: Span { start: Position { line: 487, column: 41, }, end: Position { line: 487, column: 47, }, }, }, ), Raw( PartRaw { content: "package", span: Span { start: Position { line: 487, column: 48, }, end: Position { line: 487, column: 55, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 488, column: 9, }, end: Position { line: 488, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 488, column: 23, }, end: Position { line: 488, column: 40, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "config.virtualisation.docker.package", span: Span { start: Position { line: 488, column: 42, }, end: Position { line: 488, column: 78, }, }, }, ), ], span: Span { start: Position { line: 488, column: 41, }, end: Position { line: 488, column: 79, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 489, column: 9, }, end: Position { line: 489, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 489, column: 19, }, end: Position { line: 489, column: 36, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.docker", span: Span { start: Position { line: 489, column: 38, }, end: Position { line: 489, column: 49, }, }, }, ), ], span: Span { start: Position { line: 489, column: 37, }, end: Position { line: 489, column: 50, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 490, column: 9, }, end: Position { line: 490, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 490, column: 23, }, end: Position { line: 490, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 490, column: 27, }, end: Position { line: 490, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Docker package to use for clearing up docker cache.", span: Span { start: Position { line: 490, column: 34, }, end: Position { line: 490, column: 85, }, }, }, ), ], span: Span { start: Position { line: 490, column: 33, }, end: Position { line: 490, column: 86, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 486, column: 26, }, end: Position { line: 491, column: 8, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 456, column: 26, }, end: Position { line: 492, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 111, column: 36, }, end: Position { line: 493, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 494, column: 3, }, end: Position { line: 494, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 494, column: 12, }, end: Position { line: 494, column: 16, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 494, column: 17, }, end: Position { line: 494, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 494, column: 21, }, end: Position { line: 494, column: 27, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "warnings", span: Span { start: Position { line: 495, column: 5, }, end: Position { line: 495, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 495, column: 17, }, end: Position { line: 495, column: 31, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "n", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "services.gitlab-runner.services.", span: Span { start: Position { line: 496, column: 15, }, end: Position { line: 496, column: 51, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "n", span: Span { start: Position { line: 496, column: 49, }, end: Position { line: 496, column: 50, }, }, }, ), }, ), Raw( PartRaw { content: ".`registrationConfigFile` points to a file in Nix Store. You should use quoted absolute path to prevent this.", span: Span { start: Position { line: 496, column: 15, }, end: Position { line: 496, column: 160, }, }, }, ), ], span: Span { start: Position { line: 496, column: 14, }, end: Position { line: 496, column: 161, }, }, }, ), span: Span { start: Position { line: 496, column: 11, }, end: Position { line: 496, column: 161, }, }, }, ), span: Span { start: Position { line: 496, column: 8, }, end: Position { line: 496, column: 161, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "filterAttrs", span: Span { start: Position { line: 497, column: 8, }, end: Position { line: 497, column: 19, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "n", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "isStorePath", span: Span { start: Position { line: 497, column: 27, }, end: Position { line: 497, column: 38, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "v", span: Span { start: Position { line: 497, column: 39, }, end: Position { line: 497, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "registrationConfigFile", span: Span { start: Position { line: 497, column: 41, }, end: Position { line: 497, column: 63, }, }, }, ), ], default: None, }, ), ], }, ), span: Span { start: Position { line: 497, column: 24, }, end: Position { line: 497, column: 63, }, }, }, ), span: Span { start: Position { line: 497, column: 21, }, end: Position { line: 497, column: 63, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 497, column: 65, }, end: Position { line: 497, column: 68, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 497, column: 69, }, end: Position { line: 497, column: 77, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 499, column: 5, }, end: Position { line: 499, column: 16, }, }, }, ), Raw( PartRaw { content: "systemPackages", span: Span { start: Position { line: 499, column: 17, }, end: Position { line: 499, column: 31, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 499, column: 36, }, end: Position { line: 499, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 499, column: 40, }, end: Position { line: 499, column: 47, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 499, column: 34, }, end: Position { line: 499, column: 49, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 500, column: 5, }, end: Position { line: 500, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 500, column: 13, }, end: Position { line: 500, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 500, column: 22, }, end: Position { line: 500, column: 35, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 501, column: 7, }, end: Position { line: 501, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Gitlab Runner", span: Span { start: Position { line: 501, column: 22, }, end: Position { line: 501, column: 35, }, }, }, ), ], span: Span { start: Position { line: 501, column: 21, }, end: Position { line: 501, column: 36, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "documentation", span: Span { start: Position { line: 502, column: 7, }, end: Position { line: 502, column: 20, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "https://docs.gitlab.com/runner/", span: Span { start: Position { line: 502, column: 26, }, end: Position { line: 502, column: 57, }, }, }, ), ], span: Span { start: Position { line: 502, column: 25, }, end: Position { line: 502, column: 58, }, }, }, ), ], span: Span { start: Position { line: 502, column: 23, }, end: Position { line: 502, column: 60, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 503, column: 7, }, end: Position { line: 503, column: 12, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 503, column: 18, }, end: Position { line: 503, column: 32, }, }, }, ), ], span: Span { start: Position { line: 503, column: 17, }, end: Position { line: 503, column: 33, }, }, }, ), ], span: Span { start: Position { line: 503, column: 15, }, end: Position { line: 503, column: 35, }, }, }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 504, column: 12, }, end: Position { line: 504, column: 20, }, }, }, ), arguments: [ Identifier( Identifier { id: "hasDocker", span: Span { start: Position { line: 504, column: 21, }, end: Position { line: 504, column: 30, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "docker.service", span: Span { start: Position { line: 504, column: 32, }, end: Position { line: 504, column: 46, }, }, }, ), ], span: Span { start: Position { line: 504, column: 31, }, end: Position { line: 504, column: 47, }, }, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "requires", span: Span { start: Position { line: 505, column: 7, }, end: Position { line: 505, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 505, column: 18, }, end: Position { line: 505, column: 26, }, }, }, ), arguments: [ Identifier( Identifier { id: "hasDocker", span: Span { start: Position { line: 505, column: 27, }, end: Position { line: 505, column: 36, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "docker.service", span: Span { start: Position { line: 505, column: 38, }, end: Position { line: 505, column: 52, }, }, }, ), ], span: Span { start: Position { line: 505, column: 37, }, end: Position { line: 505, column: 53, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 506, column: 7, }, end: Position { line: 506, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "multi-user.target", span: Span { start: Position { line: 506, column: 21, }, end: Position { line: 506, column: 38, }, }, }, ), ], span: Span { start: Position { line: 506, column: 20, }, end: Position { line: 506, column: 39, }, }, }, ), ], span: Span { start: Position { line: 506, column: 18, }, end: Position { line: 506, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 507, column: 7, }, end: Position { line: 507, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 507, column: 21, }, end: Position { line: 507, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "networking", span: Span { start: Position { line: 507, column: 28, }, end: Position { line: 507, column: 38, }, }, }, ), Raw( PartRaw { content: "proxy", span: Span { start: Position { line: 507, column: 39, }, end: Position { line: 507, column: 44, }, }, }, ), Raw( PartRaw { content: "envVars", span: Span { start: Position { line: 507, column: 45, }, end: Position { line: 507, column: 52, }, }, }, ), ], default: None, }, ), operator: Update, right: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "HOME", span: Span { start: Position { line: 508, column: 9, }, end: Position { line: 508, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/lib/gitlab-runner", span: Span { start: Position { line: 508, column: 17, }, end: Position { line: 508, column: 39, }, }, }, ), ], span: Span { start: Position { line: 508, column: 16, }, end: Position { line: 508, column: 40, }, }, }, ), }, ), ], span: Span { start: Position { line: 507, column: 56, }, end: Position { line: 509, column: 8, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 510, column: 7, }, end: Position { line: 510, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 510, column: 19, }, end: Position { line: 510, column: 23, }, }, }, ), target: BinaryOperation( BinaryOperation { left: List( List { elements: [ Identifier( Identifier { id: "bash", span: Span { start: Position { line: 511, column: 9, }, end: Position { line: 511, column: 13, }, }, }, ), Identifier( Identifier { id: "gawk", span: Span { start: Position { line: 512, column: 9, }, end: Position { line: 512, column: 13, }, }, }, ), Identifier( Identifier { id: "jq", span: Span { start: Position { line: 513, column: 9, }, end: Position { line: 513, column: 11, }, }, }, ), Identifier( Identifier { id: "moreutils", span: Span { start: Position { line: 514, column: 9, }, end: Position { line: 514, column: 18, }, }, }, ), Identifier( Identifier { id: "remarshal", span: Span { start: Position { line: 515, column: 9, }, end: Position { line: 515, column: 18, }, }, }, ), Identifier( Identifier { id: "util-linux", span: Span { start: Position { line: 516, column: 9, }, end: Position { line: 516, column: 19, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 517, column: 9, }, end: Position { line: 517, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 517, column: 13, }, end: Position { line: 517, column: 20, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 510, column: 25, }, end: Position { line: 518, column: 8, }, }, }, ), operator: Concatenation, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 518, column: 12, }, end: Position { line: 518, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraPackages", span: Span { start: Position { line: 518, column: 16, }, end: Position { line: 518, column: 29, }, }, }, ), ], default: None, }, ), }, ), span: Span { start: Position { line: 510, column: 14, }, end: Position { line: 518, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "reloadIfChanged", span: Span { start: Position { line: 519, column: 7, }, end: Position { line: 519, column: 22, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 519, column: 25, }, end: Position { line: 519, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 520, column: 7, }, end: Position { line: 520, column: 20, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "DynamicUser", span: Span { start: Position { line: 525, column: 9, }, end: Position { line: 525, column: 20, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 525, column: 23, }, end: Position { line: 525, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "StateDirectory", span: Span { start: Position { line: 526, column: 9, }, end: Position { line: 526, column: 23, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 526, column: 27, }, end: Position { line: 526, column: 40, }, }, }, ), ], span: Span { start: Position { line: 526, column: 26, }, end: Position { line: 526, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "SupplementaryGroups", span: Span { start: Position { line: 527, column: 9, }, end: Position { line: 527, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 527, column: 31, }, end: Position { line: 527, column: 39, }, }, }, ), arguments: [ Identifier( Identifier { id: "hasDocker", span: Span { start: Position { line: 527, column: 40, }, end: Position { line: 527, column: 49, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "docker", span: Span { start: Position { line: 527, column: 51, }, end: Position { line: 527, column: 57, }, }, }, ), ], span: Span { start: Position { line: 527, column: 50, }, end: Position { line: 527, column: 58, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStartPre", span: Span { start: Position { line: 528, column: 9, }, end: Position { line: 528, column: 21, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "!", span: Span { start: Position { line: 528, column: 25, }, end: Position { line: 528, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configureScript", span: Span { start: Position { line: 528, column: 28, }, end: Position { line: 528, column: 43, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/gitlab-runner-configure", span: Span { start: Position { line: 528, column: 25, }, end: Position { line: 528, column: 72, }, }, }, ), ], span: Span { start: Position { line: 528, column: 24, }, end: Position { line: 528, column: 73, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 529, column: 9, }, end: Position { line: 529, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "startScript", span: Span { start: Position { line: 529, column: 24, }, end: Position { line: 529, column: 35, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/gitlab-runner-start", span: Span { start: Position { line: 529, column: 22, }, end: Position { line: 529, column: 60, }, }, }, ), ], span: Span { start: Position { line: 529, column: 21, }, end: Position { line: 529, column: 61, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecReload", span: Span { start: Position { line: 530, column: 9, }, end: Position { line: 530, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "!", span: Span { start: Position { line: 530, column: 23, }, end: Position { line: 530, column: 42, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "configureScript", span: Span { start: Position { line: 530, column: 26, }, end: Position { line: 530, column: 41, }, }, }, ), }, ), Raw( PartRaw { content: "/bin/gitlab-runner-configure", span: Span { start: Position { line: 530, column: 23, }, end: Position { line: 530, column: 70, }, }, }, ), ], span: Span { start: Position { line: 530, column: 22, }, end: Position { line: 530, column: 71, }, }, }, ), }, ), ], span: Span { start: Position { line: 520, column: 23, }, end: Position { line: 531, column: 8, }, }, }, ), operator: Update, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 531, column: 12, }, end: Position { line: 531, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 531, column: 27, }, end: Position { line: 531, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gracefulTermination", span: Span { start: Position { line: 531, column: 31, }, end: Position { line: 531, column: 50, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutStopSec", span: Span { start: Position { line: 532, column: 9, }, end: Position { line: 532, column: 23, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 532, column: 29, }, end: Position { line: 532, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gracefulTimeout", span: Span { start: Position { line: 532, column: 33, }, end: Position { line: 532, column: 48, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 532, column: 26, }, end: Position { line: 532, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "KillSignal", span: Span { start: Position { line: 533, column: 9, }, end: Position { line: 533, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "SIGQUIT", span: Span { start: Position { line: 533, column: 23, }, end: Position { line: 533, column: 30, }, }, }, ), ], span: Span { start: Position { line: 533, column: 22, }, end: Position { line: 533, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "KillMode", span: Span { start: Position { line: 534, column: 9, }, end: Position { line: 534, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "process", span: Span { start: Position { line: 534, column: 21, }, end: Position { line: 534, column: 28, }, }, }, ), ], span: Span { start: Position { line: 534, column: 20, }, end: Position { line: 534, column: 29, }, }, }, ), }, ), ], span: Span { start: Position { line: 531, column: 52, }, end: Position { line: 535, column: 8, }, }, }, ), ], }, ), }, ), }, ), ], span: Span { start: Position { line: 500, column: 38, }, end: Position { line: 536, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 538, column: 5, }, end: Position { line: 538, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 538, column: 13, }, end: Position { line: 538, column: 21, }, }, }, ), Raw( PartRaw { content: "gitlab-runner-clear-docker-cache", span: Span { start: Position { line: 538, column: 22, }, end: Position { line: 538, column: 54, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 539, column: 7, }, end: Position { line: 539, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Prune gitlab-runner docker resources", span: Span { start: Position { line: 539, column: 22, }, end: Position { line: 539, column: 58, }, }, }, ), ], span: Span { start: Position { line: 539, column: 21, }, end: Position { line: 539, column: 59, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "restartIfChanged", span: Span { start: Position { line: 540, column: 7, }, end: Position { line: 540, column: 23, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 540, column: 26, }, end: Position { line: 540, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "unitConfig", span: Span { start: Position { line: 541, column: 7, }, end: Position { line: 541, column: 17, }, }, }, ), Raw( PartRaw { content: "X-StopOnRemoval", span: Span { start: Position { line: 541, column: 18, }, end: Position { line: 541, column: 33, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 541, column: 36, }, end: Position { line: 541, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 543, column: 7, }, end: Position { line: 543, column: 20, }, }, }, ), Raw( PartRaw { content: "Type", span: Span { start: Position { line: 543, column: 21, }, end: Position { line: 543, column: 25, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "oneshot", span: Span { start: Position { line: 543, column: 29, }, end: Position { line: 543, column: 36, }, }, }, ), ], span: Span { start: Position { line: 543, column: 28, }, end: Position { line: 543, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 545, column: 7, }, end: Position { line: 545, column: 11, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 545, column: 16, }, end: Position { line: 545, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "clear-docker-cache", span: Span { start: Position { line: 545, column: 20, }, end: Position { line: 545, column: 38, }, }, }, ), Raw( PartRaw { content: "package", span: Span { start: Position { line: 545, column: 39, }, end: Position { line: 545, column: 46, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 545, column: 47, }, end: Position { line: 545, column: 51, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gawk", span: Span { start: Position { line: 545, column: 52, }, end: Position { line: 545, column: 56, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 545, column: 14, }, end: Position { line: 545, column: 58, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "script", span: Span { start: Position { line: 547, column: 7, }, end: Position { line: 547, column: 13, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "", span: Span { start: Position { line: 548, column: 1, }, end: Position { line: 548, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 548, column: 11, }, end: Position { line: 548, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 548, column: 16, }, end: Position { line: 548, column: 29, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/clear-docker-cache ", span: Span { start: Position { line: 548, column: 1, }, end: Position { line: 548, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 548, column: 56, }, end: Position { line: 548, column: 64, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 548, column: 65, }, end: Position { line: 548, column: 68, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "clear-docker-cache", span: Span { start: Position { line: 548, column: 69, }, end: Position { line: 548, column: 87, }, }, }, ), Raw( PartRaw { content: "flags", span: Span { start: Position { line: 548, column: 88, }, end: Position { line: 548, column: 93, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 548, column: 1, }, end: Position { line: 549, column: 7, }, }, }, ), ], span: Span { start: Position { line: 547, column: 16, }, end: Position { line: 549, column: 9, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "startAt", span: Span { start: Position { line: 551, column: 7, }, end: Position { line: 551, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 551, column: 17, }, end: Position { line: 551, column: 25, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 551, column: 26, }, end: Position { line: 551, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "clear-docker-cache", span: Span { start: Position { line: 551, column: 30, }, end: Position { line: 551, column: 48, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 551, column: 49, }, end: Position { line: 551, column: 55, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 551, column: 56, }, end: Position { line: 551, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "clear-docker-cache", span: Span { start: Position { line: 551, column: 60, }, end: Position { line: 551, column: 78, }, }, }, ), Raw( PartRaw { content: "dates", span: Span { start: Position { line: 551, column: 79, }, end: Position { line: 551, column: 84, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 538, column: 57, }, end: Position { line: 552, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "virtualisation", span: Span { start: Position { line: 554, column: 5, }, end: Position { line: 554, column: 19, }, }, }, ), Raw( PartRaw { content: "docker", span: Span { start: Position { line: 554, column: 20, }, end: Position { line: 554, column: 26, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 554, column: 27, }, end: Position { line: 554, column: 33, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 554, column: 36, }, end: Position { line: 554, column: 40, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "any", span: Span { start: Position { line: 555, column: 7, }, end: Position { line: 555, column: 10, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "s", }, ), body: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "s", span: Span { start: Position { line: 555, column: 15, }, end: Position { line: 555, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "executor", span: Span { start: Position { line: 555, column: 17, }, end: Position { line: 555, column: 25, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "docker", span: Span { start: Position { line: 555, column: 30, }, end: Position { line: 555, column: 36, }, }, }, ), ], span: Span { start: Position { line: 555, column: 29, }, end: Position { line: 555, column: 37, }, }, }, ), }, ), span: Span { start: Position { line: 555, column: 12, }, end: Position { line: 555, column: 37, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "attrValues", span: Span { start: Position { line: 555, column: 40, }, end: Position { line: 555, column: 50, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 555, column: 51, }, end: Position { line: 555, column: 54, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 555, column: 55, }, end: Position { line: 555, column: 63, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 556, column: 8, }, end: Position { line: 556, column: 17, }, }, }, ), arguments: [ Identifier( Identifier { id: "true", span: Span { start: Position { line: 556, column: 18, }, end: Position { line: 556, column: 22, }, }, }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 494, column: 28, }, end: Position { line: 557, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "imports", span: Span { start: Position { line: 558, column: 3, }, end: Position { line: 558, column: 10, }, }, }, ), ], to: List( List { elements: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 559, column: 6, }, end: Position { line: 559, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 559, column: 31, }, end: Position { line: 559, column: 39, }, }, }, ), ], span: Span { start: Position { line: 559, column: 30, }, end: Position { line: 559, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 559, column: 42, }, end: Position { line: 559, column: 55, }, }, }, ), ], span: Span { start: Position { line: 559, column: 41, }, end: Position { line: 559, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "packages", span: Span { start: Position { line: 559, column: 58, }, end: Position { line: 559, column: 66, }, }, }, ), ], span: Span { start: Position { line: 559, column: 57, }, end: Position { line: 559, column: 67, }, }, }, ), ], span: Span { start: Position { line: 559, column: 28, }, end: Position { line: 559, column: 69, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 559, column: 73, }, end: Position { line: 559, column: 81, }, }, }, ), ], span: Span { start: Position { line: 559, column: 72, }, end: Position { line: 559, column: 82, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 559, column: 84, }, end: Position { line: 559, column: 97, }, }, }, ), ], span: Span { start: Position { line: 559, column: 83, }, end: Position { line: 559, column: 98, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "extraPackages", span: Span { start: Position { line: 559, column: 100, }, end: Position { line: 559, column: 113, }, }, }, ), ], span: Span { start: Position { line: 559, column: 99, }, end: Position { line: 559, column: 114, }, }, }, ), ], span: Span { start: Position { line: 559, column: 70, }, end: Position { line: 559, column: 116, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRemovedOptionModule", span: Span { start: Position { line: 560, column: 6, }, end: Position { line: 560, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 560, column: 31, }, end: Position { line: 560, column: 39, }, }, }, ), ], span: Span { start: Position { line: 560, column: 30, }, end: Position { line: 560, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 560, column: 42, }, end: Position { line: 560, column: 55, }, }, }, ), ], span: Span { start: Position { line: 560, column: 41, }, end: Position { line: 560, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "configOptions", span: Span { start: Position { line: 560, column: 58, }, end: Position { line: 560, column: 71, }, }, }, ), ], span: Span { start: Position { line: 560, column: 57, }, end: Position { line: 560, column: 72, }, }, }, ), ], span: Span { start: Position { line: 560, column: 28, }, end: Position { line: 560, column: 74, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "Use services.gitlab-runner.services option instead", span: Span { start: Position { line: 560, column: 76, }, end: Position { line: 560, column: 126, }, }, }, ), ], span: Span { start: Position { line: 560, column: 75, }, end: Position { line: 560, column: 127, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRemovedOptionModule", span: Span { start: Position { line: 561, column: 6, }, end: Position { line: 561, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 561, column: 31, }, end: Position { line: 561, column: 39, }, }, }, ), ], span: Span { start: Position { line: 561, column: 30, }, end: Position { line: 561, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 561, column: 42, }, end: Position { line: 561, column: 55, }, }, }, ), ], span: Span { start: Position { line: 561, column: 41, }, end: Position { line: 561, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "workDir", span: Span { start: Position { line: 561, column: 58, }, end: Position { line: 561, column: 65, }, }, }, ), ], span: Span { start: Position { line: 561, column: 57, }, end: Position { line: 561, column: 66, }, }, }, ), ], span: Span { start: Position { line: 561, column: 28, }, end: Position { line: 561, column: 68, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "You should move contents of workDir (if any) to /var/lib/gitlab-runner", span: Span { start: Position { line: 561, column: 70, }, end: Position { line: 561, column: 140, }, }, }, ), ], span: Span { start: Position { line: 561, column: 69, }, end: Position { line: 561, column: 141, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 563, column: 6, }, end: Position { line: 563, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 563, column: 31, }, end: Position { line: 563, column: 39, }, }, }, ), ], span: Span { start: Position { line: 563, column: 30, }, end: Position { line: 563, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 563, column: 42, }, end: Position { line: 563, column: 55, }, }, }, ), ], span: Span { start: Position { line: 563, column: 41, }, end: Position { line: 563, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "checkInterval", span: Span { start: Position { line: 563, column: 58, }, end: Position { line: 563, column: 71, }, }, }, ), ], span: Span { start: Position { line: 563, column: 57, }, end: Position { line: 563, column: 72, }, }, }, ), ], span: Span { start: Position { line: 563, column: 28, }, end: Position { line: 563, column: 74, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 563, column: 78, }, end: Position { line: 563, column: 86, }, }, }, ), ], span: Span { start: Position { line: 563, column: 77, }, end: Position { line: 563, column: 87, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 563, column: 89, }, end: Position { line: 563, column: 102, }, }, }, ), ], span: Span { start: Position { line: 563, column: 88, }, end: Position { line: 563, column: 103, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 563, column: 105, }, end: Position { line: 563, column: 113, }, }, }, ), ], span: Span { start: Position { line: 563, column: 104, }, end: Position { line: 563, column: 114, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "check_interval", span: Span { start: Position { line: 563, column: 116, }, end: Position { line: 563, column: 130, }, }, }, ), ], span: Span { start: Position { line: 563, column: 115, }, end: Position { line: 563, column: 131, }, }, }, ), ], span: Span { start: Position { line: 563, column: 75, }, end: Position { line: 563, column: 133, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 564, column: 6, }, end: Position { line: 564, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 564, column: 31, }, end: Position { line: 564, column: 39, }, }, }, ), ], span: Span { start: Position { line: 564, column: 30, }, end: Position { line: 564, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 564, column: 42, }, end: Position { line: 564, column: 55, }, }, }, ), ], span: Span { start: Position { line: 564, column: 41, }, end: Position { line: 564, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "concurrent", span: Span { start: Position { line: 564, column: 58, }, end: Position { line: 564, column: 68, }, }, }, ), ], span: Span { start: Position { line: 564, column: 57, }, end: Position { line: 564, column: 69, }, }, }, ), ], span: Span { start: Position { line: 564, column: 28, }, end: Position { line: 564, column: 71, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 564, column: 75, }, end: Position { line: 564, column: 83, }, }, }, ), ], span: Span { start: Position { line: 564, column: 74, }, end: Position { line: 564, column: 84, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 564, column: 86, }, end: Position { line: 564, column: 99, }, }, }, ), ], span: Span { start: Position { line: 564, column: 85, }, end: Position { line: 564, column: 100, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 564, column: 102, }, end: Position { line: 564, column: 110, }, }, }, ), ], span: Span { start: Position { line: 564, column: 101, }, end: Position { line: 564, column: 111, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "concurrent", span: Span { start: Position { line: 564, column: 113, }, end: Position { line: 564, column: 123, }, }, }, ), ], span: Span { start: Position { line: 564, column: 112, }, end: Position { line: 564, column: 124, }, }, }, ), ], span: Span { start: Position { line: 564, column: 72, }, end: Position { line: 564, column: 126, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 565, column: 6, }, end: Position { line: 565, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 565, column: 31, }, end: Position { line: 565, column: 39, }, }, }, ), ], span: Span { start: Position { line: 565, column: 30, }, end: Position { line: 565, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 565, column: 42, }, end: Position { line: 565, column: 55, }, }, }, ), ], span: Span { start: Position { line: 565, column: 41, }, end: Position { line: 565, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "sentryDSN", span: Span { start: Position { line: 565, column: 58, }, end: Position { line: 565, column: 67, }, }, }, ), ], span: Span { start: Position { line: 565, column: 57, }, end: Position { line: 565, column: 68, }, }, }, ), ], span: Span { start: Position { line: 565, column: 28, }, end: Position { line: 565, column: 70, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 565, column: 74, }, end: Position { line: 565, column: 82, }, }, }, ), ], span: Span { start: Position { line: 565, column: 73, }, end: Position { line: 565, column: 83, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 565, column: 85, }, end: Position { line: 565, column: 98, }, }, }, ), ], span: Span { start: Position { line: 565, column: 84, }, end: Position { line: 565, column: 99, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 565, column: 101, }, end: Position { line: 565, column: 109, }, }, }, ), ], span: Span { start: Position { line: 565, column: 100, }, end: Position { line: 565, column: 110, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "sentry_dsn", span: Span { start: Position { line: 565, column: 112, }, end: Position { line: 565, column: 122, }, }, }, ), ], span: Span { start: Position { line: 565, column: 111, }, end: Position { line: 565, column: 123, }, }, }, ), ], span: Span { start: Position { line: 565, column: 71, }, end: Position { line: 565, column: 125, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 566, column: 6, }, end: Position { line: 566, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 566, column: 31, }, end: Position { line: 566, column: 39, }, }, }, ), ], span: Span { start: Position { line: 566, column: 30, }, end: Position { line: 566, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 566, column: 42, }, end: Position { line: 566, column: 55, }, }, }, ), ], span: Span { start: Position { line: 566, column: 41, }, end: Position { line: 566, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "prometheusListenAddress", span: Span { start: Position { line: 566, column: 58, }, end: Position { line: 566, column: 81, }, }, }, ), ], span: Span { start: Position { line: 566, column: 57, }, end: Position { line: 566, column: 82, }, }, }, ), ], span: Span { start: Position { line: 566, column: 28, }, end: Position { line: 566, column: 84, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 566, column: 88, }, end: Position { line: 566, column: 96, }, }, }, ), ], span: Span { start: Position { line: 566, column: 87, }, end: Position { line: 566, column: 97, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 566, column: 99, }, end: Position { line: 566, column: 112, }, }, }, ), ], span: Span { start: Position { line: 566, column: 98, }, end: Position { line: 566, column: 113, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 566, column: 115, }, end: Position { line: 566, column: 123, }, }, }, ), ], span: Span { start: Position { line: 566, column: 114, }, end: Position { line: 566, column: 124, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "listen_address", span: Span { start: Position { line: 566, column: 126, }, end: Position { line: 566, column: 140, }, }, }, ), ], span: Span { start: Position { line: 566, column: 125, }, end: Position { line: 566, column: 141, }, }, }, ), ], span: Span { start: Position { line: 566, column: 85, }, end: Position { line: 566, column: 143, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 568, column: 6, }, end: Position { line: 568, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 568, column: 31, }, end: Position { line: 568, column: 39, }, }, }, ), ], span: Span { start: Position { line: 568, column: 30, }, end: Position { line: 568, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 568, column: 42, }, end: Position { line: 568, column: 55, }, }, }, ), ], span: Span { start: Position { line: 568, column: 41, }, end: Position { line: 568, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "sessionServer", span: Span { start: Position { line: 568, column: 58, }, end: Position { line: 568, column: 71, }, }, }, ), ], span: Span { start: Position { line: 568, column: 57, }, end: Position { line: 568, column: 72, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "listenAddress", span: Span { start: Position { line: 568, column: 74, }, end: Position { line: 568, column: 87, }, }, }, ), ], span: Span { start: Position { line: 568, column: 73, }, end: Position { line: 568, column: 88, }, }, }, ), ], span: Span { start: Position { line: 568, column: 28, }, end: Position { line: 568, column: 90, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 568, column: 94, }, end: Position { line: 568, column: 102, }, }, }, ), ], span: Span { start: Position { line: 568, column: 93, }, end: Position { line: 568, column: 103, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 568, column: 105, }, end: Position { line: 568, column: 118, }, }, }, ), ], span: Span { start: Position { line: 568, column: 104, }, end: Position { line: 568, column: 119, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 568, column: 121, }, end: Position { line: 568, column: 129, }, }, }, ), ], span: Span { start: Position { line: 568, column: 120, }, end: Position { line: 568, column: 130, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "session_server", span: Span { start: Position { line: 568, column: 132, }, end: Position { line: 568, column: 146, }, }, }, ), ], span: Span { start: Position { line: 568, column: 131, }, end: Position { line: 568, column: 147, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "listen_address", span: Span { start: Position { line: 568, column: 149, }, end: Position { line: 568, column: 163, }, }, }, ), ], span: Span { start: Position { line: 568, column: 148, }, end: Position { line: 568, column: 164, }, }, }, ), ], span: Span { start: Position { line: 568, column: 91, }, end: Position { line: 568, column: 166, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 569, column: 6, }, end: Position { line: 569, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 569, column: 31, }, end: Position { line: 569, column: 39, }, }, }, ), ], span: Span { start: Position { line: 569, column: 30, }, end: Position { line: 569, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 569, column: 42, }, end: Position { line: 569, column: 55, }, }, }, ), ], span: Span { start: Position { line: 569, column: 41, }, end: Position { line: 569, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "sessionServer", span: Span { start: Position { line: 569, column: 58, }, end: Position { line: 569, column: 71, }, }, }, ), ], span: Span { start: Position { line: 569, column: 57, }, end: Position { line: 569, column: 72, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "advertiseAddress", span: Span { start: Position { line: 569, column: 74, }, end: Position { line: 569, column: 90, }, }, }, ), ], span: Span { start: Position { line: 569, column: 73, }, end: Position { line: 569, column: 91, }, }, }, ), ], span: Span { start: Position { line: 569, column: 28, }, end: Position { line: 569, column: 93, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 569, column: 97, }, end: Position { line: 569, column: 105, }, }, }, ), ], span: Span { start: Position { line: 569, column: 96, }, end: Position { line: 569, column: 106, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 569, column: 108, }, end: Position { line: 569, column: 121, }, }, }, ), ], span: Span { start: Position { line: 569, column: 107, }, end: Position { line: 569, column: 122, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 569, column: 124, }, end: Position { line: 569, column: 132, }, }, }, ), ], span: Span { start: Position { line: 569, column: 123, }, end: Position { line: 569, column: 133, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "session_server", span: Span { start: Position { line: 569, column: 135, }, end: Position { line: 569, column: 149, }, }, }, ), ], span: Span { start: Position { line: 569, column: 134, }, end: Position { line: 569, column: 150, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "advertise_address", span: Span { start: Position { line: 569, column: 152, }, end: Position { line: 569, column: 169, }, }, }, ), ], span: Span { start: Position { line: 569, column: 151, }, end: Position { line: 569, column: 170, }, }, }, ), ], span: Span { start: Position { line: 569, column: 94, }, end: Position { line: 569, column: 172, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkRenamedOptionModule", span: Span { start: Position { line: 570, column: 6, }, end: Position { line: 570, column: 27, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 570, column: 31, }, end: Position { line: 570, column: 39, }, }, }, ), ], span: Span { start: Position { line: 570, column: 30, }, end: Position { line: 570, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 570, column: 42, }, end: Position { line: 570, column: 55, }, }, }, ), ], span: Span { start: Position { line: 570, column: 41, }, end: Position { line: 570, column: 56, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "sessionServer", span: Span { start: Position { line: 570, column: 58, }, end: Position { line: 570, column: 71, }, }, }, ), ], span: Span { start: Position { line: 570, column: 57, }, end: Position { line: 570, column: 72, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "sessionTimeout", span: Span { start: Position { line: 570, column: 74, }, end: Position { line: 570, column: 88, }, }, }, ), ], span: Span { start: Position { line: 570, column: 73, }, end: Position { line: 570, column: 89, }, }, }, ), ], span: Span { start: Position { line: 570, column: 28, }, end: Position { line: 570, column: 91, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 570, column: 95, }, end: Position { line: 570, column: 103, }, }, }, ), ], span: Span { start: Position { line: 570, column: 94, }, end: Position { line: 570, column: 104, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "gitlab-runner", span: Span { start: Position { line: 570, column: 106, }, end: Position { line: 570, column: 119, }, }, }, ), ], span: Span { start: Position { line: 570, column: 105, }, end: Position { line: 570, column: 120, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "settings", span: Span { start: Position { line: 570, column: 122, }, end: Position { line: 570, column: 130, }, }, }, ), ], span: Span { start: Position { line: 570, column: 121, }, end: Position { line: 570, column: 131, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "session_server", span: Span { start: Position { line: 570, column: 133, }, end: Position { line: 570, column: 147, }, }, }, ), ], span: Span { start: Position { line: 570, column: 132, }, end: Position { line: 570, column: 148, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "session_timeout", span: Span { start: Position { line: 570, column: 150, }, end: Position { line: 570, column: 165, }, }, }, ), ], span: Span { start: Position { line: 570, column: 149, }, end: Position { line: 570, column: 166, }, }, }, ), ], span: Span { start: Position { line: 570, column: 92, }, end: Position { line: 570, column: 168, }, }, }, ), ], }, ), ], span: Span { start: Position { line: 558, column: 13, }, end: Position { line: 571, column: 4, }, }, }, ), }, ), ], span: Span { start: Position { line: 110, column: 1, }, end: Position { line: 572, column: 2, }, }, }, ), span: Span { start: Position { line: 4, column: 1, }, end: Position { line: 572, column: 2, }, }, }, ), span: Span { start: Position { line: 3, column: 1, }, end: Position { line: 572, column: 2, }, }, }, ), span: Span { start: Position { line: 2, column: 1, }, end: Position { line: 572, column: 2, }, }, }, ), span: Span { start: Position { line: 1, column: 1, }, end: Position { line: 572, column: 2, }, }, }, )