From edfb3c9c46ada0041d1a9968d81fdf813dd43153 Mon Sep 17 00:00:00 2001 From: Benjamin Swartley Date: Sat, 19 Sep 2026 22:59:19 -0500 Subject: [PATCH] Initial Commit --- .Questions.yml | 12 ++++++++++++ .gitignore | 1 + Makefile | 23 +++++++++++++++++++++++ README.md | 22 ++++++++++++++++++++++ competition.yml | 9 +++++++++ 5 files changed, 67 insertions(+) create mode 100644 .Questions.yml create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 competition.yml diff --git a/.Questions.yml b/.Questions.yml new file mode 100644 index 0000000..edb7ce8 --- /dev/null +++ b/.Questions.yml @@ -0,0 +1,12 @@ +Name: Name +Description: Description +AssignedTo: + - Assignee +Questions: + - Question: + Text: Text + Flag: Flag + SolvedBy: + VerifiedBy: + Submitted: false + Notes: Notes diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..214362a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +REPORT.md diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f380c83 --- /dev/null +++ b/Makefile @@ -0,0 +1,23 @@ +COMPETITION = competition.yml +CATEGORIES != yq '.Categories | keys.[]' $(COMPETITION) +PEOPLE != yq '.People.[]' $(COMPETITION) +FIND_CAT_CHALLS = $(let CAT,$1,$(shell yq ".Categories.$(CAT).[]" $(COMPETITION))) + +CHALLS=$(foreach CAT,\ + $(CATEGORIES),\ + $(foreach CHALL,\ + $(patsubst "%",%,$(call FIND_CAT_CHALLS,$(CAT))),\ + $(patsubst "%",%,$(CAT))/$(CHALL)\ + )\ + ) + +printVerifiedFlags: $(CHALLS) + find . -name 'Questions.yml' \ + | xargs -n1 yq -c '.Questions.[].Question | select((.VerifiedBy != null) and (.Submitted == false)) | (.Text, .Flag)' + + +$(CHALLS): + mkdir -p $(foreach PERSON,$(patsubst "%",%,$(PEOPLE)),$(@)/$(PERSON)) + mkdir -p $(@)/files + find $(@) -type d -mindepth 1 -exec touch {}/.gitkeep \; + cp ./.Questions.yml $(@)/Questions.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..d4fedc1 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +Super Tryhard Awesome Spreadsheet For Even More Success (STARFEMS) +--- + +A yaml-driven competition progress tracking repository +designed to minimize merge conflicts while still encouraging +rapid, collaborative development. + + +## Structure + +- `/competition.yml` + - Described competitors, categories, and challenges +- `/Makefile` + - Generates directory structure based on `competition.yml` + - Contains additional rules for e.g. printing verified but unsubmitted flags +- `/CATEGORY/CHALL_DIFF/Questions.yml` + - Based off `/.Questions.yml` + - Tracks challenge's questions, flags, and status +- `/CATEGORY/CHALL_DIFF/files/` + - Contains ALL challenge files +- `/CATEGORY/CHALL_DIFF/PERSON/` + - Working directory for PERSON, prevents work from being lost diff --git a/competition.yml b/competition.yml new file mode 100644 index 0000000..1c1aa53 --- /dev/null +++ b/competition.yml @@ -0,0 +1,9 @@ +People: + - Alice + - Bob +Categories: + ReverseEngineering: + - Foo_Easy + - Bar_Medium + Forensics: + - Baz_Hard