chore: phase-3a polish (README, LICENSE, gitignore, CI) - #101
Conversation
- Remove student-journal 'What We Learned' and 'Repo Owner' framing - Add Architecture section pointing to tokenizer/parser/executor source files - Add Constraints section listing the permitted libc calls from the 42 subject - Add 'What was technically hard' section (heredoc+expansion, quote tokenisation, signals across fork, no-leak discipline) - Keep Readline dependency and build instructions - Credit co-author Ghazaleh Ansari
Covers both authors. MIT chosen for permissiveness; it grants equal rights to all contributors listed in the copyright notice.
The existing .gitignore covered C build artefacts but missed .DS_Store and .vscode/. This adds those plus the minishell binary output. Also untracks srcs/.DS_Store which slipped back in after an earlier cleanup commit.
Installs libreadline-dev and verifies that make produces a minishell binary. Runs on push to main and on PRs. Surfaces a build-passing badge in the README.
There was a problem hiding this comment.
Pull request overview
This PR focuses on “phase-3a polish” by improving repository hygiene and presentation: updating top-level documentation, formalizing licensing, cleaning up ignored/untracked files, and adding CI to ensure the project builds reliably.
Changes:
- Rewrites
README.mdto reflect project scope, architecture, constraints, and authorship, and adds a CI build badge. - Adds an MIT
LICENSEcovering both authors. - Updates
.gitignoreto ignore macOS/editor artifacts and theminishellbinary, and introduces a GitHub Actions build workflow.
Reviewed changes
Copilot reviewed 3 out of 5 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| README.md | Documentation rewrite + build badge + architecture/constraints sections |
| LICENSE | Adds MIT license text with both authors |
| .gitignore | Ignores .DS_Store, IDE/editor files, swap files, and minishell binary |
| .github/workflows/build.yml | Adds Ubuntu CI workflow to install readline and run make |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - C, compiled with `cc -Wall -Wextra -Werror` | ||
| - No leaks (verified with `valgrind --leak-check=full`) | ||
| - Limited set of permitted libc calls (`readline`, `printf`, `malloc`, `free`, `write`, `access`, `open`, `read`, `close`, `fork`, `wait`/`waitpid`/`wait3`/`wait4`, `signal`, `sigaction`, `sigemptyset`, `sigaddset`, `kill`, `exit`, `getcwd`, `chdir`, `stat`/`lstat`/`fstat`, `unlink`, `execve`, `dup`/`dup2`, `pipe`, `opendir`/`readdir`/`closedir`, `strerror`, `perror`, `isatty`, `ttyname`, `ttyslot`, `ioctl`, `getenv`, `tcsetattr`/`tcgetattr`, `tgetent`/`tgetflag`/`tgetnum`/`tgetstr`/`tgoto`/`tputs`) | ||
| - 42 norm: 80-char lines, ≤25-line functions, no globals except one `volatile sig_atomic_t` for the signal flag |
There was a problem hiding this comment.
README claims the project uses "no globals except one volatile sig_atomic_t for the signal flag", but the code currently declares/defines g_signal_received as a plain int (see includes/sadaf.h and srcs/execution/signals.c). Please either update the README to match the actual type/guarantees, or change the implementation to use volatile sig_atomic_t if that’s the intended constraint.
| - 42 norm: 80-char lines, ≤25-line functions, no globals except one `volatile sig_atomic_t` for the signal flag | |
| - 42 norm: 80-char lines, ≤25-line functions, no globals except one signal-flag global |
Phase 3a polish — see
workspace/AUDIT_LOG.mdfor context.What this PR does
docs: rewrite README
signals across fork, no-leak discipline)
chore: add MIT LICENSE
chore: ignore macOS + editor metadata; untrack srcs/.DS_Store
.gitignorenow covers.DS_Store,.vscode/,.idea/,*.swp, and theminishellbinary outputsrcs/.DS_Storethat slipped back inci: add build workflow
libreadline-dev, runsmake, verifies binaryNot changing
includes/libft/stays as vendoredAfter merge
I'll apply the same polish pattern to Cub3D, WebServ, and Inception as separate PRs.