packages feed

gachi-cli-0.1.0.0: app/Main.hs

-- | Module: Main
-- Description: Executable entry point for the gachi CLI tool
--
-- This module serves as the physical binary entry point for the @gachi@ command-line
-- utility. It handles top-level process execution, argument consumption, and exit code
-- normalization by delegating immediately to 'Gachi.CLI.defaultMain'.
--
-- = Architectural Context & Invariants
--
-- In Gachi's infrastructure model (per Note [Ecosystem Standardization Invariants]
-- [ref:note-ecosystem-standardization]), the CLI executable provides turnkey
-- operations for repository scaffolding, configuration synchronization, codebase
-- retrofitting, and strategic planning.
--
-- == Process Execution Model
--
-- 1. __Environment Agnostic:__
--    The binary does not rely on ambient bash or Python scripts for execution logic;
--    all schema evaluation, filesystem synthesis, and Git configuration occur within
--    compiled Haskell runtime space.
--
-- 2. __Hermetic Process Termination:__
--    Process termination strictly reflects the outcome of the invoked subcommand.
--    Successful operations exit cleanly with 'System.Exit.ExitSuccess' (code 0).
--    Any syntax failure, schema mismatch, or filesystem collision terminates
--    immediately with 'System.Exit.ExitFailure' (code 1), preventing partial or
--    unstable workspaces from misleading downstream CI runners.
--
-- = Usage Summary
--
-- Invoked directly from the terminal or launcher scripts:
--
-- @
-- $ gachi init my-project
-- $ gachi init --config project.dhall --target-dir ./target
-- $ gachi version
-- @
module Main (main) where

import Gachi.CLI (defaultMain)

-- | Primary operating system process entry point.
--
-- Evaluates command-line flags and dispatches across operational subcommands via
-- 'Gachi.CLI.defaultMain'. Terminates the calling process with the appropriate
-- exit code upon completion.
main :: IO ()
main = defaultMain