{"id":16323622,"url":"https://github.com/mefellows/pact-matt-plugin","last_synced_at":"2025-08-03T18:35:00.495Z","repository":{"id":62260770,"uuid":"558602990","full_name":"mefellows/pact-matt-plugin","owner":"mefellows","description":"Pact plugin for the MATT protocol (example project)","archived":false,"fork":false,"pushed_at":"2024-02-09T05:41:05.000Z","size":8769,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-17T04:26:15.443Z","etag":null,"topics":["pact","plugin"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mefellows.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}},"created_at":"2022-10-27T22:20:40.000Z","updated_at":"2022-12-02T00:04:21.000Z","dependencies_parsed_at":"2024-02-09T05:31:16.971Z","dependency_job_id":"c1711724-3d4d-4a67-a7b9-bdfe90c3e785","html_url":"https://github.com/mefellows/pact-matt-plugin","commit_stats":{"total_commits":21,"total_committers":1,"mean_commits":21.0,"dds":0.0,"last_synced_commit":"7ea73201392926d5e36094321da6cba00dd31241"},"previous_names":["mefellows/pact-plugin-matt"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mefellows%2Fpact-matt-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mefellows%2Fpact-matt-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mefellows%2Fpact-matt-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mefellows%2Fpact-matt-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mefellows","download_url":"https://codeload.github.com/mefellows/pact-matt-plugin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254160610,"owners_count":22024574,"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","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":["pact","plugin"],"created_at":"2024-10-10T22:55:16.783Z","updated_at":"2025-05-14T14:35:11.925Z","avatar_url":"https://github.com/mefellows.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pact Plugin Example - The MATT protocol\n\nThis is an example [plugin](https://github.com/pact-foundation/pact-plugins) for the [Pact](http://docs.pact.io) framework.\n\nIt implements a custom [Protocol](https://github.com/pact-foundation/pact-plugins/blob/main/docs/protocol-plugin-design.md) and [Content Matcher](https://github.com/pact-foundation/pact-plugins/blob/main/docs/content-matcher-design.md) for a fictional protocol - the MATT protocol.\n\n## Install\n\n```\npact-plugin-cli -y install https://github.com/mefellows/pact-matt-plugin/releases/tag/v0.0.1\n```\n\n## Writing tests\n\n### Synchronous Messages\n\nSet the request/response all in one go:\n\n```\nmattMessage := `{\"request\": {\"body\": \"hellotcp\"}, \"response\":{\"body\":\"tcpworld\"}}`\n```\n\n### HTTP\n\nSeparate out the body on the request/response part of the interaction:\n\n```\n\tmattRequest := `{\"request\": {\"body\": \"hello\"}}`\n\tmattResponse := `{\"response\":{\"body\":\"world\"}}`\n```\n\n## Use Case\n\nThe MATT protocol is a simple text-based protocol, designed for efficient communication of messages to a Matt.\n\nMATT messages are composed of basic text values, where the start and end of the communication must contain the word \"MATT\".\n\ni.e.  `MATT\u003cmessage\u003eMATT`\n\nin BNF it would be something like this:\n\n```\n\u003cmessage\u003e   ::= \u003cdelimeter\u003e \u003cword\u003e \u003cdelimeter\u003e\n\u003cdelimeter\u003e ::= \"MATT\"\n\u003cword\u003e      ::= \u003ccharacter\u003e | \u003cword\u003e \u003ccharacter\u003e\n\u003ccharacter\u003e ::= \u003cletter\u003e | \u003cnumber\u003e | \u003csymbol\u003e\n\u003cletter\u003e    ::= \"A\" | \"B\" | \"C\" | \"D\" | \"E\" | \"F\" | \"G\" | \"H\" | \"I\" | \"J\" | \"K\" | \"L\" | \"M\" | \"N\" | \"O\" | \"P\" | \"Q\" | \"R\" | \"S\" | \"T\" | \"U\" | \"V\" | \"W\" | \"X\" | \"Y\" | \"Z\" | \"a\" | \"b\" | \"c\" | \"d\" | \"e\" | \"f\" | \"g\" | \"h\" | \"i\" | \"j\" | \"k\" | \"l\" | \"m\" | \"n\" | \"o\" | \"p\" | \"q\" | \"r\" | \"s\" | \"t\" | \"u\" | \"v\" | \"w\" | \"x\" | \"y\" | \"z\"\n\u003cnumber\u003e    ::= \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\"\n\u003csymbol\u003e    ::=  \"|\" | \" \" | \"!\" | \"#\" | \"$\" | \"%\" | \"\u0026\" | \"(\" | \")\" | \"*\" | \"+\" | \",\" | \"-\" | \".\" | \"/\" | \":\" | \";\" | \"\u003e\" | \"=\" | \"\u003c\" | \"?\" | \"@\" | \"[\" | \"\\\" | \"]\" | \"^\" | \"_\" | \"`\" | \"{\" | \"}\" | \"~\"\n```\n\nWhen sent over TCP, messages are terminated with the newline delimeter `\\n`.\n\n## Developing the plugin\n\n### Build and install the plugin \n\nThe following command will build the plugin, and install into the correct plugin directory for local development:\n\n```\nmake install_local\n```\n\n\n### Regenerating the plugin protobuf definitions\n\nIf a new protobuf definition is required, copy into the `io_pact_plugin` folder and run the following Make task:\n\n```\nmake proto\n```\n\n### Prerequsites\n\nThe protoc compiler must be installed for this plugin ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmefellows%2Fpact-matt-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmefellows%2Fpact-matt-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmefellows%2Fpact-matt-plugin/lists"}