{"ref":"artifact:marcellourbani-abappretty","page":"/artifacts/marcellourbani-abappretty","json":"/artifacts/marcellourbani-abappretty.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"marcellourbani-abappretty","name":"abapPretty","artifact_type":"cli","ecosystem":"abap","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"A command-line ABAP pretty printer that formats every supported include under a base object on a server over ADT in one invocation, activates the result and can put it on a transport.","short":"Command-line ABAP pretty printer over ADT","what_it_solves":"The formatter in ABAP Development Tools and in the ABAP Editor works on the source a developer has open, so bringing an existing package to one layout is one object and one save at a time. abapPretty takes a base object type and name, as in `abapPretty prettyprint -c MYCONN DEVC/K ZMYPACKAGE`, connects over ADT with a stored connection or with credentials passed on the command line or in the environment, formats every supported include beneath it and activates what it wrote, with `-r` to expand subpackages and `-t` to put the changes on a transport. `simulate` runs every step except writing the formatted source and activating, `list` prints the objects that would be updated, and `supportedtypes` prints the object types it handles. `-a` formats against an [abaplint](artifact:abaplint-abaplint) configuration file instead of the server's own settings. Its README opens with a warning that this will overwrite whole packages with a single invocation, and with a note that a system that is too old may need the maintainer's own abapfs_extensions plugin."},"links":{"repo":"https://github.com/marcellourbani/abapPretty","npm":"https://www.npmjs.com/package/abappretty"},"identity":{"license":"MIT"},"compat":{"runtimes":["node"]},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/marcellourbani/abapPretty","title":"abapPretty — README","checked":"2026-10-18","quote":"$ npm install -g abappretty"}]}},"source_available":true,"provides":[{"capability":"capability:abap-code-formatting","what_it_does":"Applies the formatting to a package rather than to an open source: one invocation walks every supported include under a base object over ADT, writes the formatted source, activates it and records it on a transport when one is given.","sources":[{"url":"https://github.com/marcellourbani/abapPretty","title":"abapPretty — README","checked":"2026-09-18","quote":"Pretty prints every supported include file in the selected range"},{"url":"https://github.com/marcellourbani/abapPretty","title":"abapPretty — README","checked":"2026-09-18","quote":"Format using abapLint config file."}]}],"provenance":{"discovered_via":[{"source":"source:github-orgs","channel":"marcellourbani"}],"first_seen":"2026-09-18"},"drafted_with_ai":true,"maintainers":["actor:marcellourbani"],"contributors":["actor:marcellourbani"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"2 contributors"},{"label":"Repository","tier":"poor","evidence":"pushed 2023-01, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"good","evidence":"4 test files"},{"label":"Docs","tier":"good","evidence":"README 9 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":10,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":10,"forks":1,"open_issues":8,"archived":false,"pushed_at":"2023-01-06","license_spdx":"MIT","org_owned":false,"default_branch":"master","created_at":"2020-05-06T05:40:05Z","open_prs":8,"tree_truncated":false,"test_files":4,"workflows":0,"other_ci":false,"readme_bytes":9091,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2020-05-05","last_commit":"2021-05-12","commits":35,"contributors":2,"readme_path":"README.md","readme_sha":"696004c794de1af52b8bbffa1183b83fa3d3418a","repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:marcellourbani","name":"Marcello Urbani","json":"/actors/marcellourbani.json"}],"contributors":[{"ref":"actor:marcellourbani","name":"Marcello Urbani","json":"/actors/marcellourbani.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}