64 lines
1.7 KiB
Markdown
64 lines
1.7 KiB
Markdown
---
|
|
type: battle
|
|
title: "Team Build"
|
|
xp: 200
|
|
duration: 90
|
|
difficulty: 3
|
|
---
|
|
|
|
# Team Build
|
|
|
|
> **[INCOMING — Mission Control, Earth]**
|
|
>
|
|
> Cadets, this is your final task before Python. You and a partner will
|
|
> automate a mission setup together — one writing, the other
|
|
> reviewing. Then swap.
|
|
>
|
|
> Pair up. Decide who goes first as **defender** and who goes first as
|
|
> **attacker**.
|
|
>
|
|
> [END TRANSMISSION]
|
|
|
|
## The Task
|
|
|
|
The **defender** writes a single shell script — `launch.sh` — that,
|
|
when run inside an empty workspace, does the following in order:
|
|
|
|
1. Creates a folder called `mission/` and enters it.
|
|
2. Initializes a fresh Git repo on branch `main`.
|
|
3. Sets `user.name` and `user.email` on the repo (use your own).
|
|
4. Creates `manifest.txt` containing exactly:
|
|
```
|
|
Mission Apollo
|
|
```
|
|
5. Creates `crew.txt` containing exactly:
|
|
```
|
|
Cadet A, Cadet B
|
|
```
|
|
6. Creates `coords.txt` containing exactly:
|
|
```
|
|
lat: 0.0, lon: 0.0
|
|
```
|
|
7. Commits each file separately, in this exact order, with messages:
|
|
- `add manifest`
|
|
- `add crew`
|
|
- `add coords`
|
|
8. Prints `MISSION READY` to stdout when done.
|
|
|
|
## Battle Rules
|
|
|
|
- **Defender**: writes `launch.sh` from scratch in a clean workspace.
|
|
Does not show the file until done. Time limit: 30 minutes.
|
|
- **Attacker**: receives the script, runs it in a clean folder,
|
|
inspects the resulting `mission/`, and submits a review through the
|
|
platform's review form.
|
|
- **Then swap**: roles flip. The new defender writes their own
|
|
`launch.sh` (no copy-pasting). 30 more minutes.
|
|
- Both pass the battle if both scripts pass review.
|
|
|
|
## Tools You'll Use
|
|
|
|
Everything you've learned this module:
|
|
`mkdir`, `cd`, `echo`, `>`, `git init`, `git config`, `git add`,
|
|
`git commit`, and a shebang to make the script run.
|