{"id":19838973,"url":"https://github.com/objectionary/eoc","last_synced_at":"2025-05-01T18:31:47.231Z","repository":{"id":37360564,"uuid":"489321585","full_name":"objectionary/eoc","owner":"objectionary","description":"Command-line toolkit for parsing, compiling, transpiling, optimizing, linking, dataizing, and running EOLANG programs","archived":false,"fork":false,"pushed_at":"2024-10-29T22:14:42.000Z","size":922,"stargazers_count":17,"open_issues_count":12,"forks_count":12,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-29T22:41:51.358Z","etag":null,"topics":["command-line","eolang","java","javascript","maven","toolkit"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/eolang","language":"JavaScript","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":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-06T11:03:50.000Z","updated_at":"2024-10-29T20:08:21.000Z","dependencies_parsed_at":"2023-10-21T00:29:01.816Z","dependency_job_id":"963001b4-0dbe-4a03-8b5b-507dfa3bdbff","html_url":"https://github.com/objectionary/eoc","commit_stats":{"total_commits":228,"total_committers":9,"mean_commits":"25.333333333333332","dds":0.4078947368421053,"last_synced_commit":"e1c43f827e7c0515ade0971dedf3d150dc9aa0bd"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Feoc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Feoc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Feoc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Feoc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/objectionary","download_url":"https://codeload.github.com/objectionary/eoc/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":["command-line","eolang","java","javascript","maven","toolkit"],"created_at":"2024-11-12T12:19:47.593Z","updated_at":"2025-05-01T18:31:47.217Z","avatar_url":"https://github.com/objectionary.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EOLANG Command Line Tool-Kit\n\n[![EO principles respected here](https://www.elegantobjects.org/badge.svg)](https://www.elegantobjects.org)\n[![We recommend IntelliJ IDEA](https://www.elegantobjects.org/intellij-idea.svg)](https://www.jetbrains.com/idea/)\n\n[![grunt](https://github.com/objectionary/eoc/actions/workflows/grunt.yml/badge.svg)](https://github.com/objectionary/eoc/actions/workflows/grunt.yml)\n[![node-current](https://img.shields.io/node/v/eolang)](https://www.npmjs.com/package/eolang)\n[![PDD status](https://www.0pdd.com/svg?name=objectionary/eoc)](https://www.0pdd.com/p?name=objectionary/eoc)\n[![Hits-of-Code](https://hitsofcode.com/github/objectionary/eoc)](https://hitsofcode.com/view/github/objectionary/eoc)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/objectionary/eoc/blob/master/LICENSE.txt)\n\nThis is a command-line tool-kit for [EO](https://www.eolang.org)\nprogramming languages, allowing you to compile EO programs, test, dataize,\nand check for errors.\n\nFirst, you install [npm][npm-install] and [Java SE][java-se].\n\nThen, you install [eolang][npm] package:\n\n```bash\nnpm install -g eolang@0.28.0\n```\n\nThen, you write a simple [EO](https://www.eolang.org) program in `hello.eo` file\nin the current directory:\n\n```eo\n# My first object in EO!\n[args] \u003e hello\n  QQ.io.stdout \u003e @\n    \"Hello, world!\\n\"\n```\n\nThen, you run it:\n\n```bash\neoc --easy dataize hello\n```\n\nThat's it.\n\n## Commands\n\nYou can also do many other things with `eoc` commands\n(the flow is explained in [this blog post][blog]):\n\n* `register` finds necessary `.eo` files and registers them in a JSON catalog\n* `assemble` parses `.eo` files into `.xmir`, optimizes them,\n  and pulls foreign EO objects\n* `transpile` converts `.xmir` files to the target programming\nlanguage (Java by default)\n* `compile` converts target language sources (e.g., `.java`)\nto binaries (e.g., `.class`)\n* `link` puts all binaries together into a single executable binary\n* `dataize` dataizes a single object from the executable binary\n* `test` dataizes all visible unit tests\n* `lint` finds style-related errors in EO and XMIR files\n* `jeo:disassemble` converts Java `.class` files to `.xmir`\n(via [jeo](https://github.com/objectionary/jeo-maven-plugin))\n* `jeo:assemble` converts `.xmir` files to Java `.class` files\n(via [jeo](https://github.com/objectionary/jeo-maven-plugin))\n\nThere are also commands that help manipulate with XMIR and EO sources\n(the list is not completed, while some of them are not implemented as of yet):\n\n* `audit` inspects all required packages and reports their status\n* `foreign` inspects all objects found in the program after the `assemble` step\n* `sodg` generates `.sodg` from `.xmir`, further rederable as XML or [Dot][dot]\n* `phi` generates `.phi` files from `.xmir` files\n* `unphi` generates `.xmir` files from `.phi` files\n* `print` generates `.eo` files from `.phi` files\n* ~~`translate` converts Java/C++/Python/etc. program to EO program~~\n* ~~`demu` removes `cage` and `memory` objects~~\n* ~~`dejump` removes `goto` objects~~\n* ~~`infer` suggests object names where it's possible to infer them~~\n* ~~`flatten` moves inner objects to upper level~~\n\nThis command line toolkit simply integrates other tools available in\nthe [@objectionary](https://github.com/objectionary) GitHub organization.\n\n## How to Contribute\n\nFirst, run `npm install`. Then, run `grunt`. All tests should pass.\n\nIf you want to run a single test:\n\n```bash\nnpm test -- test/test_mvnw.js\n```\n\nMake your changes and then\n[make](https://www.yegor256.com/2014/04/15/github-guidelines.html)\na pull request.\n\n[npm]: https://www.npmjs.com/package/eolang\n[java-se]: https://www.oracle.com/java/technologies/downloads/\n[npm-install]: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm\n[dot]: https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29\n[blog]: https://www.yegor256.com/2021/10/21/objectionary.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Feoc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobjectionary%2Feoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Feoc/lists"}