{"id":48413253,"url":"https://github.com/arkedge/opslang","last_synced_at":"2026-04-06T06:34:09.638Z","repository":{"id":214294010,"uuid":"736137464","full_name":"arkedge/opslang","owner":"arkedge","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-17T10:37:25.000Z","size":1335,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-18T13:49:04.518Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arkedge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-27T04:57:02.000Z","updated_at":"2025-04-25T13:09:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"ab8420dc-730f-456b-9020-3b277afbc0d0","html_url":"https://github.com/arkedge/opslang","commit_stats":null,"previous_names":["arkedge/opslang"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/arkedge/opslang","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkedge%2Fopslang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkedge%2Fopslang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkedge%2Fopslang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkedge%2Fopslang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arkedge","download_url":"https://codeload.github.com/arkedge/opslang/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkedge%2Fopslang/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31463014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"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":[],"created_at":"2026-04-06T06:34:09.048Z","updated_at":"2026-04-06T06:34:09.622Z","avatar_url":"https://github.com/arkedge.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# opslang\nsyntax definition and sample implementation of ops file language\n\n## 基本構文\n\n```\nset DATETIME_ORIGIN.MOBC=time!(2020-01-01T00:00:00Z) # 処理系のパラメータ設定\n\nlet ok = \"OK\"                       # string型\nlet t = time!(2024-01-01T00:00:00Z) # time型\nlet d = 1s                          # duration型\nlet ti = 2000                       # 数値型\n\n.                                   # breakpoint機能\nassert 2 == 2                       # WINGS: check_value\nassert_eq 2, 2\nassert_approx_eq 1.0, 1.0, 0.001    # WINGS: --tolerance 0.001\nprint 2                             # WINGS: get\nwait 5s                             # WINGS: wait_sec\nwait 1 == 1 \u0026\u0026 2 \u003c= 2               # WINGS: wait_until\nwait 0 == 1 || 5s                   # タイムアウトつき\n\nprint tlmid!(MOBC.HK)               # telemetry id 参照\nprint $MOBC.HK.XX.YY\n\n@RT.MOBC NOP                                              # Time Indicator をとらないコマンド\n@TL.MOBC 20: NOP                                          # ステップ単位のTime Indicatorをとるコマンド\n@BL.MOBC 30: NOP\n@UTL.MOBC time!(2024-01-01T00:00:00Z): NOP                # 時刻をTime Indicatorとしてとるコマンド\n@TL.MOBC 20: @@AOBC NOP                                   # 最終的な実行コンポーネントが異なるコマンド (WINGSのMOBC_TL.AOBC_RTに相当)\n```\n\n## 糖衣構文\n\n```\n@RT.MOBC delay=0.5s { # comment\n    # この中はデフォルトで @MOBC\n    # 一行実行するごとにdelayだけwaitを挟む\n    NOP\n    NOP\n} # comment\n\n#    MOBC_TL.Cmd_NOP 10\n#    wait_sec 0.5\n#    MOBC_TL.Cmd_NOP 20\n#    wait_sec 0.5\n#    MOBC_TL.AOBC_RT.Cmd_NOP 30\n#    wait_sec 0.5\n#    MOBC_TL.AOBC_RT.Cmd_NOP 40\n#    wait_sec 0.5\n@TL.MOBC delay=0.5s {\n    10: NOP\n    20: NOP\n    30: @@AOBC NOP\n    40: @@AOBC NOP\n}\n\n@TL.MOBC delay=0.5s {\n    10: NOP\n    @RT.MOBC NOP #このブロック内はデフォルトでTL.MOBCだが、この行はRT.MOBC\n}\n\n```\n\n## 検討中\n\n```\nlet hk = $MOBC.HK                   # テレメトリ集合型\nprint hk.OBC.XX.YY                  # テレメトリ集合型は構造体のように参照できる\n\n# after!で直前の時間指定からの相対時間を指定できる\n@TL.MOBC delay=0.5s {\n    10: NOP                              # TI=10\n    assert_eq last_ti!(), 10\n    last_ti!() + 10: NOP                 # TI=20\n    assert_eq last_ti!(), 20\n    last_ti!() + 10: @@AOBC NOP               # TI=30\n    assert_eq last_ti!(), 30\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkedge%2Fopslang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farkedge%2Fopslang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkedge%2Fopslang/lists"}