1.9 KiB
1.9 KiB
Repository Guidelines
Project Structure & Module Organization
src/holds the shell implementation, with submodules forbuiltins/,executor/,parser/, andvariables/.include/contains public headers used across modules.lib/is populated at build time with third-party 42 libraries (libft, get_next_line, ft_printf, ft_args).docs/stores project references and manual test notes (seedocs/tests.md).build/is the object output directory generated bymake.
Build, Test, and Development Commands
makeormake all: buildminishell(auto-clones required libs intolib/).make clean: remove objects inbuild/.make fclean: remove objects and theminishellbinary (also cleans libs).make re: full rebuild../minishell: run locally after a build.make DEBUG=lldbormake DEBUG=valgrindormake DEBUG=address: rebuild with debug/ASan-friendly flags.
Coding Style & Naming Conventions
- The codebase follows 42 Norminette v4 rules. Run
norminette *.c *.h(or on specific files) before submitting changes. - Keep file names lowercase with underscores (e.g.,
src/builtins/echo/echo.c). - Keep headers in
include/and expose only what modules need.
Testing Guidelines
- There is no automated test runner. Use manual checks in
docs/tests.mdand basic shell behavior checks (pipes, redirects, builtins). - When debugging memory issues, run under valgrind and use the suppression file in
valgrind/readline.supp.
Commit & Pull Request Guidelines
- Commit messages in this repo use a simple
type: summaryformat (examples:update: ...,fix: ...). Keep summaries short and specific. - For PRs, include:
- What changed and why.
- How to test (commands or manual steps).
- Notes on any parser/executor/builtin behavior changes.
Configuration Tips
- The project depends on
readline; ensure your system haslibreadline-devor equivalent before building.