{"id":19838967,"url":"https://github.com/objectionary/opeo-maven-plugin","last_synced_at":"2025-05-01T18:31:48.095Z","repository":{"id":208241456,"uuid":"721146770","full_name":"objectionary/opeo-maven-plugin","owner":"objectionary","description":"Maven plugin to remove Bytecode opcodes from XMIR as much as possible","archived":false,"fork":false,"pushed_at":"2024-10-29T13:02:54.000Z","size":5956,"stargazers_count":7,"open_issues_count":61,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-29T13:19:28.068Z","etag":null,"topics":["bytecode","compiler","eolang","oop","optimization","optimization-algorithms","transpiler"],"latest_commit_sha":null,"homepage":"http://www.objectionary.com/opeo-maven-plugin/","language":"Java","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/objectionary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2023-11-20T13:01:13.000Z","updated_at":"2024-10-29T12:51:58.000Z","dependencies_parsed_at":"2023-12-07T14:30:31.487Z","dependency_job_id":"2f01e345-1f64-4909-a67e-bf784f9361ce","html_url":"https://github.com/objectionary/opeo-maven-plugin","commit_stats":null,"previous_names":["objectionary/deop-maven-plugin","objectionary/opeo-maven-plugin"],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fopeo-maven-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fopeo-maven-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fopeo-maven-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fopeo-maven-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/objectionary","download_url":"https://codeload.github.com/objectionary/opeo-maven-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224270895,"owners_count":17283874,"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":["bytecode","compiler","eolang","oop","optimization","optimization-algorithms","transpiler"],"created_at":"2024-11-12T12:19:46.169Z","updated_at":"2024-11-12T12:19:48.120Z","avatar_url":"https://github.com/objectionary.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg alt=\"logo\" src=\"https://www.objectionary.com/cactus.svg\" height=\"100px\" /\u003e\n\n[![Maven Central](https://img.shields.io/maven-central/v/org.eolang/opeo-maven-plugin.svg)](https://maven-badges.herokuapp.com/maven-central/org.eolang/opeo-maven-plugin)\n[![Javadoc](http://www.javadoc.io/badge/org.eolang/opeo-maven-plugin.svg)](http://www.javadoc.io/doc/org.eolang/opeo-maven-plugin)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE.txt)\n[![Hits-of-Code](https://hitsofcode.com/github/objectionary/opeo-maven-plugin?branch=master\u0026label=Hits-of-Code)](https://hitsofcode.com/github/objectionary/opeo-maven-plugin/view?branch=master\u0026label=Hits-of-Code)\n![Lines of code](https://sloc.xyz/github/objectionary/opeo-maven-plugin)\n[![codecov](https://codecov.io/gh/objectionary/opeo-maven-plugin/branch/master/graph/badge.svg)](https://codecov.io/gh/objectionary/opeo-maven-plugin)\n\nThis Maven plugin takes XMIR generated\nby [jeo-maven-plugin](https://github.com/objectionary/jeo-maven-plugin)\nand tries to transform combinations of `opcode` objects into EO objects.\n\nInput:\n\n```\nseq \u003e @\n  opcode \u003e NEW-187-29\n    \"org/eolang/ineo/A\"\n  opcode \u003e DUP-89-30\n  opcode \u003e BIPUSH-16-31\n    42\n  opcode \u003e INVOKESPECIAL-183-32\n    \"org/eolang/ineo/A\"\n    \"\u003cinit\u003e\"\n    \"(I)V\"\n```\n\nOutput:\n\n```\n+alias org.eolang.ineo.jA\n\njA 42 \u003e x\nx.init\n```\n\nThen, it can translate declarative EO code back to imperative EO code which\nuses `opcode` atoms.\n\n## How to Use\n\nThe opeo-maven-plugin comprises two goals: `decompile` and `compile`. The\ndecompile goal processes the output of\nthe `jeo-maven-plugin`, converting it into high-level EO code. On the other\nhand, the compile goal processes the\nhigh-level EO code, transforming it back into low-level EO code that is\ncompatible with the `jeo-maven-plugin`.\nBelow, you will find examples demonstrating how to execute the plugin.\n\n### Direct Command\n\nTo execute the `opeo-maven-plugin`, you need a minimum of **Maven 3.1.+** and *\n*Java 8+** installed on your system.\nYou can initiate the plugin from the command line with a single command. For\ninstance, to transform the output generated\nby the `jeo-maven-plugin` into high-level EO code, you can utilize the following\ncommand:\n\n```shell\nmvn opeo:decompile\n```\n\nSubsequently, you can convert the high-level EO code back to low-level EO code,\nwhich is also compatible with the\n`jeo-maven-plugin`. To accomplish this, use the following command:\n\n```shell\nmvn opeo:compile\n```\n\n### Maven Build\n\nAnother way to use the plugin is to add it directly to your `pom.xml` file:\n\n```xml\n\n\u003cplugin\u003e\n  \u003cgroupId\u003eorg.eolang\u003c/groupId\u003e\n  \u003cartifactId\u003eopeo-maven-plugin\u003c/artifactId\u003e\n  \u003cversion\u003e\u003c/version\u003e\n  \u003cexecutions\u003e\n    \u003cexecution\u003e\n      \u003cid\u003eopeo-decompile\u003c/id\u003e\n      \u003cgoals\u003e\n        \u003cgoal\u003edecompile\u003c/goal\u003e\n      \u003c/goals\u003e\n    \u003c/execution\u003e\n    \u003cexecution\u003e\n      \u003cid\u003eopeo-compile\u003c/id\u003e\n      \u003cgoals\u003e\n        \u003cgoal\u003ecompile\u003c/goal\u003e\n      \u003c/goals\u003e\n    \u003c/execution\u003e\n  \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\nThe default phase for the both goals is `process-classes`.\n\nMore details about plugin usage you can find in our\n[Maven site](https://objectionary.github.io/opeo-maven-plugin).\n\n## How to Contribute\n\nFork repository, make changes, then send us\na [pull request](https://www.yegor256.com/2014/04/15/github-guidelines.html).\nWe will review your changes and apply them to the `master` branch shortly,\nprovided they don't violate our quality standards. To avoid frustration,\nbefore sending us your pull request please run full Maven build:\n\n```bash\n$ mvn clean install -Pqulice\n```\n\nYou will need [Maven 3.3+](https://maven.apache.org) and Java 8+ installed.\n\n## Troubleshooting\n\nIf you have any questions or trouble with the plugin, please submit an issue.\n\nIf you are a developer, and you have found a bug in a decompilation/compilation\nprocess, please try to\nrun [this integration test](src/test/java/it/DetectiveIT.java) to\nspecify the place where the bug is located.\nMoreover, this test can\ngreatly help you to troubleshoot any problems with the plugin.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Fopeo-maven-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobjectionary%2Fopeo-maven-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Fopeo-maven-plugin/lists"}