# Missing Processors

Tools found in Makefiles across `../*/` sibling projects that rsconstruct does not yet have processors for.
Organized by category, with priority based on breadth of usage.

## High Priority — Linters and Validators

### eslint
- **What it does:** JavaScript/TypeScript linter (industry standard).
- **Projects:** demos-lang-js
- **Invocation:** `eslint $(ALL_JS)` or `node_modules/.bin/eslint $<`
- **Processor type:** Checker

### jshint
- **What it does:** JavaScript linter — detects errors and potential problems.
- **Projects:** demos-lang-js, gcp-gemini-cli, gcp-machines, gcp-miflaga, gcp-nikuda, gcp-randomizer, schemas, veltzer.github.io
- **Invocation:** `node_modules/.bin/jshint $<`
- **Processor type:** Checker

### tidy (HTML Tidy)
- **What it does:** HTML/XHTML validator and formatter.
- **Projects:** demos-lang-js, gcp-gemini-cli, gcp-machines, gcp-miflaga, gcp-nikuda, gcp-randomizer, openbook, riddles-book
- **Invocation:** `tidy -errors -quiet -config .tidy.config $<`
- **Processor type:** Checker

### check-jsonschema
- **What it does:** Validates YAML/JSON files against JSON Schema (distinct from rsconstruct's json_schema which validates JSON against schemas found via `$schema` key).
- **Projects:** data, schemas, veltzer.github.io
- **Invocation:** `check-jsonschema --schemafile $(yq -r '.["$schema"]' $<) $<`
- **Processor type:** Checker

### cpplint
- **What it does:** C++ linter enforcing Google C++ style guide.
- **Projects:** demos-os-linux
- **Invocation:** `cpplint $<`
- **Processor type:** Checker

### checkpatch.pl
- **What it does:** Linux kernel coding style checker.
- **Projects:** kcpp
- **Invocation:** `$(KDIR)/scripts/checkpatch.pl --file $(C_SOURCES) --no-tree`
- **Processor type:** Checker

### standard (StandardJS)
- **What it does:** JavaScript style guide, linter, and formatter — zero config.
- **Projects:** demos-lang-js
- **Invocation:** `node_modules/.bin/standard $<`
- **Processor type:** Checker

### jslint
- **What it does:** JavaScript code quality linter (Douglas Crockford).
- **Projects:** demos-lang-js
- **Invocation:** `node_modules/.bin/jslint $<`
- **Processor type:** Checker

### jsl (JavaScript Lint)
- **What it does:** JavaScript lint tool.
- **Projects:** keynote, myworld-php
- **Invocation:** `jsl --conf=support/jsl.conf --quiet --nologo --nosummary --nofilelisting $(SOURCES_JS)`
- **Processor type:** Checker

### gjslint (Google Closure Linter)
- **What it does:** JavaScript style checker following Google JS style guide.
- **Projects:** keynote, myworld-php
- **Invocation:** `$(TOOL_GJSLINT) --flagfile support/gjslint.cfg $(JS_SRC)`
- **Processor type:** Checker

### checkstyle
- **What it does:** Java source code style checker.
- **Projects:** demos-lang-java, keynote
- **Invocation:** `java -cp $(scripts/cp.py) $(MAINCLASS_CHECKSTYLE) -c support/checkstyle_config.xml $(find . -name "*.java")`
- **Processor type:** Checker

### pyre
- **What it does:** Python type checker from Facebook/Meta.
- **Projects:** archive.apiiro.TrainingDataLaboratory, archive.work-amdocs-py
- **Invocation:** `pyre check`
- **Processor type:** Checker

## High Priority — Formatters

### black
- **What it does:** Opinionated Python code formatter.
- **Projects:** archive.apiiro.TrainingDataLaboratory, archive.work-amdocs-py
- **Invocation:** `black --target-version py36 $(ALL_PACKAGES)`
- **Processor type:** Checker (using `--check` mode) or Formatter

### uncrustify
- **What it does:** C/C++/Java source code formatter.
- **Projects:** demos-os-linux, xmeltdown
- **Invocation:** `uncrustify -c support/uncrustify.cfg --no-backup -l C $(ALL_US_C)`
- **Processor type:** Formatter

### astyle (Artistic Style)
- **What it does:** C/C++/Java source code indenter and formatter.
- **Projects:** demos-os-linux
- **Invocation:** `astyle --verbose --suffix=none --formatted --preserve-date --options=support/astyle.cfg $(ALL_US)`
- **Processor type:** Formatter

### indent (GNU Indent)
- **What it does:** C source code formatter (GNU style).
- **Projects:** demos-os-linux
- **Invocation:** `indent $(ALL_US)`
- **Processor type:** Formatter

## High Priority — Testing

### pytest
- **What it does:** Python test framework.
- **Projects:** 50+ py* projects (pyanyzip, pyapikey, pyapt, pyawskit, pyblueprint, pybookmarks, pyclassifiers, pycmdtools, pyconch, pycontacts, pycookie, pydatacheck, pydbmtools, pydmt, pydockerutils, pyeventroute, pyeventsummary, pyfakeuse, pyflexebs, pyfoldercheck, pygcal, pygitpub, pygooglecloud, pygooglehelper, pygpeople, pylogconf, pymakehelper, pymount, pymultienv, pymultigit, pymyenv, pynetflix, pyocutil, pypathutil, pypipegzip, pypitools, pypluggy, pypowerline, pypptkit, pyrelist, pyscrapers, pysigfd, pyslider, pysvgview, pytagimg, pytags, pytconf, pytimer, pytsv, pytubekit, pyunique, pyvardump, pyweblight, and archive.*)
- **Invocation:** `pytest tests` or `python -m pytest tests`
- **Processor type:** Checker (mass, per-directory)

## High Priority — YAML/JSON Processing

### yq
- **What it does:** YAML/JSON processor (like jq but for YAML).
- **Projects:** data, demos-lang-yaml, schemas, veltzer.github.io
- **Invocation:** `yq < $< > $@` (format/validate) or `yq -r '.key' $<` (extract)
- **Processor type:** Checker or Generator

## Medium Priority — Compilers

### javac
- **What it does:** Java compiler.
- **Projects:** demos-lang-java, jenable, keynote
- **Invocation:** `javac -Werror -Xlint:all $(JAVA_SOURCES) -d out/classes`
- **Processor type:** Generator

### go build
- **What it does:** Go language compiler.
- **Projects:** demos-lang-go
- **Invocation:** `go build -o $@ $<`
- **Processor type:** Generator (single-file, like cc_single_file)

### kotlinc
- **What it does:** Kotlin compiler.
- **Projects:** demos-lang-kotlin
- **Invocation:** `kotlinc $< -include-runtime -d $@`
- **Processor type:** Generator (single-file)

### ghc
- **What it does:** Glasgow Haskell Compiler.
- **Projects:** demos-lang-haskell
- **Invocation:** `ghc -v0 -o $@ $<`
- **Processor type:** Generator (single-file)

### ldc2
- **What it does:** D language compiler (LLVM-based).
- **Projects:** demos-lang-d
- **Invocation:** `ldc2 $(FLAGS) $< -of=$@`
- **Processor type:** Generator (single-file)

### nasm
- **What it does:** Netwide Assembler (x86/x64).
- **Projects:** demos-lang-nasm
- **Invocation:** `nasm -f $(ARCH) -o $@ $<`
- **Processor type:** Generator (single-file)

### rustc
- **What it does:** Rust compiler for single-file programs (as opposed to cargo for projects).
- **Projects:** demos-lang-rust
- **Invocation:** `rustc $(FLAGS_DBG) $< -o $@`
- **Processor type:** Generator (single-file)

### dotnet
- **What it does:** .NET SDK CLI — builds C#/F# projects.
- **Projects:** demos-lang-cs
- **Invocation:** `dotnet build --nologo --verbosity quiet`
- **Processor type:** MassGenerator

### dtc (Device Tree Compiler)
- **What it does:** Compiles device tree source (.dts) to device tree blob (.dtb) for embedded Linux.
- **Projects:** clients-heqa (8 subdirectories)
- **Invocation:** `dtc -I dts -O dtb -o $@ $<`
- **Processor type:** Generator (single-file)

## Medium Priority — Build Systems

### cmake
- **What it does:** Cross-platform build system generator.
- **Projects:** demos-build-cmake
- **Invocation:** `cmake -B $@ && cmake --build $@`
- **Processor type:** MassGenerator

### mvn (Apache Maven)
- **What it does:** Java project build and dependency management.
- **Projects:** demos-lang-java/maven
- **Invocation:** `mvn compile`
- **Processor type:** MassGenerator

### ant (Apache Ant)
- **What it does:** Java build tool (XML-based).
- **Projects:** demos-lang-java, keynote
- **Invocation:** `ant checkstyle`
- **Processor type:** MassGenerator

## Medium Priority — Converters and Generators

### pygmentize
- **What it does:** Syntax highlighter — converts source code to HTML, SVG, PNG.
- **Projects:** demos-misc-highlight
- **Invocation:** `pygmentize -f html -O full -o $@ $<`
- **Processor type:** Generator (single-file)

### slidev
- **What it does:** Markdown-based presentation tool — exports to PDF.
- **Projects:** demos-lang-slidev
- **Invocation:** `node_modules/.bin/slidev export $< --with-clicks --output $@`
- **Processor type:** Generator (single-file)

### jekyll
- **What it does:** Static site generator (Ruby-based, used by GitHub Pages).
- **Projects:** site-personal-jekyll
- **Invocation:** `jekyll build --source $(SOURCE_FOLDER) --destination $(DESTINATION_FOLDER)`
- **Processor type:** MassGenerator

### lilypond
- **What it does:** Music engraving program — compiles .ly files to PDF sheet music.
- **Projects:** demos-lang-lilypond, openbook
- **Invocation:** `scripts/wrapper_lilypond.py ... $<`
- **Processor type:** Generator (single-file)

### wkhtmltoimage
- **What it does:** Renders HTML to image using WebKit engine.
- **Projects:** demos-misc-highlight
- **Invocation:** `wkhtmltoimage $(WK_OPTIONS) $< $@`
- **Processor type:** Generator (single-file)

## Medium Priority — Documentation

### jsdoc
- **What it does:** API documentation generator for JavaScript.
- **Projects:** jschess, keynote
- **Invocation:** `node_modules/.bin/jsdoc -d $(JSDOC_FOLDER) -c support/jsdoc.json out/src`
- **Processor type:** MassGenerator

## Low Priority — Minifiers

### jsmin
- **What it does:** JavaScript minifier (removes whitespace and comments).
- **Projects:** jschess
- **Invocation:** `node_modules/.bin/jsmin < $< > $(JSMIN_JSMIN)`
- **Processor type:** Generator (single-file)

### yuicompressor
- **What it does:** JavaScript/CSS minifier and compressor (Yahoo).
- **Projects:** jschess
- **Invocation:** `node_modules/.bin/yuicompressor $< -o $(JSMIN_YUI)`
- **Processor type:** Generator (single-file)

### closure compiler
- **What it does:** JavaScript optimizer and minifier (Google Closure).
- **Projects:** keynote
- **Invocation:** `tools/closure.jar $< --js_output_file $@`
- **Processor type:** Generator (single-file)

## Low Priority — Preprocessors

### gpp (Generic Preprocessor)
- **What it does:** General-purpose text preprocessor with macro expansion.
- **Projects:** demos/gpp
- **Invocation:** `gpp -o $@ $<`
- **Processor type:** Generator (single-file)

### m4
- **What it does:** Traditional Unix macro processor.
- **Projects:** demos/m4
- **Invocation:** `m4 $< > $@`
- **Processor type:** Generator (single-file)

## Low Priority — Binary Analysis

### objdump
- **What it does:** Disassembles object files (displays assembly code).
- **Projects:** demos-os-linux
- **Invocation:** `objdump --disassemble --source $< > $@`
- **Processor type:** Generator (single-file, post-compile)

## Low Priority — Packaging

### dpkg-deb
- **What it does:** Builds Debian .deb packages.
- **Projects:** archive.myrepo
- **Invocation:** `dpkg-deb --build deb/mypackage ~/packages`
- **Processor type:** Generator

### reprepro
- **What it does:** Manages Debian APT package repositories.
- **Projects:** archive.myrepo
- **Invocation:** `reprepro --basedir $(config.apt.service_dir) export $(config.apt.codename)`
- **Processor type:** Generator

## Low Priority — Profiling

### pyinstrument
- **What it does:** Python profiler with HTML output.
- **Projects:** archive.apiiro.TrainingDataLaboratory, archive.work-amdocs-py
- **Invocation:** `pyinstrument --renderer=html -m $(MAIN_MODULE)`
- **Processor type:** Generator

## Low Priority — Code Metrics

### sloccount
- **What it does:** Counts source lines of code and estimates development cost.
- **Projects:** demos-lang-java, demos-lang-r, demos-os-linux, jschess
- **Invocation:** `sloccount .`
- **Processor type:** Checker (whole-project)

## Low Priority — Dependency Generation

### makedepend
- **What it does:** Generates C/C++ header dependency rules for Makefiles.
- **Projects:** xmeltdown
- **Invocation:** `makedepend -I... -- $(CFLAGS) -- $(SRC)`
- **Notes:** rsconstruct's built-in C/C++ dependency analyzer already handles this.

## Low Priority — Embedded

### fdtoverlay
- **What it does:** Applies device tree overlays to a base device tree blob.
- **Projects:** clients-heqa/come_overlay
- **Invocation:** `fdtoverlay -i $@ -o $@.tmp $$overlay && mv $@.tmp $@`
- **Processor type:** Generator

### fdtput
- **What it does:** Modifies properties in a device tree blob.
- **Projects:** clients-heqa/come_overlay
- **Invocation:** `fdtput -r $@ $$node`
- **Processor type:** Generator
