{"id":21313958,"url":"https://github.com/octopusdeploy/ocl","last_synced_at":"2025-09-03T17:46:09.916Z","repository":{"id":37859234,"uuid":"278250289","full_name":"OctopusDeploy/Ocl","owner":"OctopusDeploy","description":"| Public |  A HCL serialization library for .NET","archived":false,"fork":false,"pushed_at":"2025-06-17T00:35:21.000Z","size":341,"stargazers_count":2,"open_issues_count":14,"forks_count":1,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-06-17T01:31:44.813Z","etag":null,"topics":["public"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OctopusDeploy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-07-09T03:12:15.000Z","updated_at":"2025-06-17T00:32:10.000Z","dependencies_parsed_at":"2022-07-13T03:50:46.975Z","dependency_job_id":"6d88aabf-532e-4010-aa6a-b051aba62215","html_url":"https://github.com/OctopusDeploy/Ocl","commit_stats":null,"previous_names":[],"tags_count":1122,"template":false,"template_full_name":null,"purl":"pkg:github/OctopusDeploy/Ocl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOcl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOcl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOcl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOcl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OctopusDeploy","download_url":"https://codeload.github.com/OctopusDeploy/Ocl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOcl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273484667,"owners_count":25114122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["public"],"created_at":"2024-11-21T18:09:28.297Z","updated_at":"2025-09-03T17:46:09.862Z","avatar_url":"https://github.com/OctopusDeploy.png","language":"C#","readme":"# Octopus Configuration Language (OCL)\n\nThe serialization library for the Octopus Configuration Language (OCL).\n\n## Syntax\n\n### EBNF\n\nSee [EBNF notation](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form).\n\n```ebnf\nnewline = \"\\n\" | \"\\r\\n\"\n\nname = { non_whitespace }\n\ninteger = { digit }\ndecimal = integer, \".\", integer\nstring = double_quote, { not_a_double_quote }, double_quote\n\nempty_array = \"[\", \"]\"\nstring_array = \"[\", { string }, \"]\"\ndecimal_array = \"[\", { decimal }, \"]\"\ninteger_array = \"[\", { integer }, \"]\"\n\nliteral = string | heredoc | decimal | integer | empty_array | string_array | decimal_array | integer_array\n\ndictionary_key = string | { not_a_double_quote_or_whitespace }\ndictionary_entry = dictionary_key, \"=\", literal\ndictionary = \"{\", newline, [ dictionary_entry, newline ], \"}\", newline\n\nlabel = string\n\nattribute = name, \"=\", literal | dictionary\n\nblock = name, { label }, \"{\", newline, [ body, newline ], \"}\", newline\n\nbody = { block | attribute }\ndocument = body\n```\n\n### Names\n\nNames identify a block or attribute. A Name can consist of any non-whitespace character. \n\nNames do not need to be unique. Attributes with the same name in the same block as another attribute or block\nis generally *not* supported by the target schema. Blocks with the same name are common as that is the way to define \nlists of complex types.\n\n### Numbers\n\n`integers` and `decimals` are supported.\n\nExponential syntax (i.e. `1e6`) is not supported\n\ne.g.\n```hcl\nint_attribute = 1\ndecimal_attribute = 1.3\n```\n\n### Quoted String\n\nString can be declared by placing it between two `\"` characters. \n\nSpecial character escaping is currently not supported. Therefore the string cannot contain a `\"`.\n\n### Heredoc\n\nStrings can also be declared by using the Heredoc syntax. `\u003c\u003c` starts the heardoc block, followed by the \"tag\", which is one or more \nnon-whitespace characters. This tag, when it appears on a line by itself (other than whitespace) denotes the end of the block. All lines\nbetween the start and end lines are taken verbatim as the string value.\n\nEscaping of characters is not support and is not required.\n\ne.g.\n```hcl\nstring_attribute = \u003c\u003cEOF\nThis\n   is\n\n  the \"value\"\n\nEOF\n```\nrepresents the string\n```\nThis\n   is\n\n  the \"value\"\n\n```\n\n### Indented Heredoc\n\nThe indentation if often important, and left justifying makes the file less readable. Therefore if the Heredoc block starts with `\u003c\u003c-` instead of `\u003c\u003c`,\nthe block can be indented. It works by finding the least indented non-whitespace-only line and unindenting by that number of characters. Tabs are treated\nas a single character.\n\ne.g.\n```hcl\nstring_attribute = \u003c\u003c-EOF\n                    This\n                       is\n                    \n                      the \"value\"\n\n                    EOF\n```\n\nrepresents the string\n```\nThis\n   is\n\n  the \"value\"\n\n```\n\n \n\n### Attributes\nAttributes are name value pairs. \n\nThe name, `=`, and start of the value **must** be on the same line.\n\nHashes or dictionaries are not supported.\n\nValid:\n```hcl\nint_attribute = 1\n\nheredoc_attribute = \u003c\u003cEOF\n      Text\nEOF\n\n```\n\nInvalid:\n```hcl\nint_attribute =\n 1\n\nint_attribute \n    = 1\n\nheredoc_attribute = \n\u003c\u003cEOF\n      Text\nEOF\n\nhash_attribute = {\n    child = 1\n}\n```\n\n### Blocks\n\nBlocks represent a collection of blocks and attributes. Blocks start with a name and can have zero or more labels. \n\nThe name, labels, and `{` **must** be on the same line. The closing brace **must** be on a line by itself. The exception is empty\nblocks where the closing brace can be on the same line as the opening\n\ne.g. Valid:\n```hcl\ninline_empty_block { }\n\nempty_block {\n}\n\nblock_with_children_and_labels \"Label 1\" \"Label 2\" {\n    child_block {}\n    child_attribute = 1\n}\n```\n\nInvalid:\n```hcl\nmy_block \n{\n}\n\nmy block {\n}\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctopusdeploy%2Focl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foctopusdeploy%2Focl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctopusdeploy%2Focl/lists"}