class

Detector::Specification::Directus

Inherits Detector < Reference < Object

directus schema snapshot writes the whole data model - collections, fields and relations - to a single file, and Directus generates its /items/<collection> REST surface from exactly that model.

A snapshot always carries a root directus: key holding the engine version that produced it. That key is what separates a real snapshot from any other document with collections: and fields: (Sanity exports, MongoDB configs, CI matrices), so it is required rather than merely preferred.

Constants

SNAPSHOT_EXTENSIONS = {".yaml", ".yml", ".json"}
SNAPSHOT_MARKER = /^\s*directus\s*:|"directus"\s*:/m

Cheap gate before libyaml: one precompiled alternation beats chained String#includes? on Crystal (see analyzers/php/php.cr).

Class methods

tech_name

The tech name without needing an instance, so the registry can be read off the classes themselves rather than from a parallel list.

Source

Instance methods

applicable?(filename : String) : Bool

Cheap filename-only filter the detector pass uses to skip detect on files the detector cannot possibly match. The default true preserves prior behavior (every detector runs on every file). Override with the same predicate the body of detect starts with — e.g., filename.ends_with?(".py") for a Python framework detector — so the detector loop avoids the detect dispatch on files outside the detector's language.

On large codebases (saleor's 4255 .py files) this lifts ~100 virtual detect calls per file out of the hot loop because most detectors' inner first-line is exactly this kind of cheap filename check.

Source
detect(filename : String, file_contents : String) : Bool
Source
idempotent?

Registers each snapshot path in CodeLocator.

Source
path_sensitive?

libyaml parses JSON as a YAML subset, so one code path covers the --format json snapshot too. Memo safety: applicable? consults the path (/directus/ and /snapshots/ gates), not just the basename.

Source
set_name

Registers each snapshot path in CodeLocator.

Source