feat(cre): bootstrap Crystal project shell
- shard.yml with db, pg, sqlite3, tourmaline (deps), webmock (dev) - Makefile with build/test/format/lint/demo targets - .gitignore, .editorconfig, LICENSE (MIT), README skeleton - ameba lint deferred until libpcre3-dev is available on this env
This commit is contained in:
parent
ef315b072b
commit
e69cc301cf
|
|
@ -0,0 +1,15 @@
|
||||||
|
# ©AngelaMos | 2026
|
||||||
|
# .editorconfig
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# ©AngelaMos | 2026
|
||||||
|
# .gitignore
|
||||||
|
|
||||||
|
/bin/
|
||||||
|
/lib/
|
||||||
|
/.shards/
|
||||||
|
/.crystal/
|
||||||
|
*.dwarf
|
||||||
|
.env.local
|
||||||
|
.env.pending
|
||||||
|
*.pid
|
||||||
|
/coverage/
|
||||||
|
/tmp/
|
||||||
|
*.log
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Local-only dev docs (not committed to public repo)
|
||||||
|
/docs/research/
|
||||||
|
/docs/plans/
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Carter Perez
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
# ©AngelaMos | 2026
|
||||||
|
# Makefile
|
||||||
|
|
||||||
|
.PHONY: build build-dev test test-unit test-integration lint format format-check demo demo-full demo-full-down check ci clean
|
||||||
|
|
||||||
|
CRYSTAL ?= crystal
|
||||||
|
SHARDS ?= shards
|
||||||
|
|
||||||
|
build:
|
||||||
|
$(SHARDS) build cre --release --no-debug
|
||||||
|
|
||||||
|
build-dev:
|
||||||
|
$(SHARDS) build cre
|
||||||
|
|
||||||
|
test:
|
||||||
|
$(CRYSTAL) spec --order=random
|
||||||
|
|
||||||
|
test-unit:
|
||||||
|
$(CRYSTAL) spec spec/unit --order=random
|
||||||
|
|
||||||
|
test-integration:
|
||||||
|
$(CRYSTAL) spec spec/integration --order=random
|
||||||
|
|
||||||
|
lint:
|
||||||
|
@if [ -x ./bin/ameba ]; then \
|
||||||
|
./bin/ameba; \
|
||||||
|
else \
|
||||||
|
echo "ameba not installed (requires libpcre3-dev on Debian 13+); skipping lint"; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
format:
|
||||||
|
$(CRYSTAL) tool format
|
||||||
|
|
||||||
|
format-check:
|
||||||
|
$(CRYSTAL) tool format --check
|
||||||
|
|
||||||
|
demo:
|
||||||
|
$(SHARDS) build cre && ./bin/cre demo
|
||||||
|
|
||||||
|
demo-full:
|
||||||
|
docker compose -f docker/docker-compose.yml up -d
|
||||||
|
@echo "Waiting for services..."
|
||||||
|
@sleep 8
|
||||||
|
$(SHARDS) build cre && ./bin/cre run --config=config/demo-full.cr
|
||||||
|
|
||||||
|
demo-full-down:
|
||||||
|
docker compose -f docker/docker-compose.yml down -v
|
||||||
|
|
||||||
|
check:
|
||||||
|
$(MAKE) format-check
|
||||||
|
$(MAKE) lint
|
||||||
|
$(MAKE) test
|
||||||
|
|
||||||
|
ci: check
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf bin lib .shards .crystal coverage tmp
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!--
|
||||||
|
©AngelaMos | 2026
|
||||||
|
README.md
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Credential Rotation Enforcer (cre)
|
||||||
|
|
||||||
|
A Crystal-based daemon that tracks and enforces credential rotation
|
||||||
|
policies across AWS Secrets Manager, HashiCorp Vault, GitHub fine-grained
|
||||||
|
PATs, and local `.env` files.
|
||||||
|
|
||||||
|
> Full README, asciinema demos, and walkthrough live in `learn/`.
|
||||||
|
> This README will be expanded in Phase 16 of the build.
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
version: 2.0
|
||||||
|
shards:
|
||||||
|
db:
|
||||||
|
git: https://github.com/crystal-lang/crystal-db.git
|
||||||
|
version: 0.11.0
|
||||||
|
|
||||||
|
html5:
|
||||||
|
git: https://github.com/naqvis/crystal-html5.git
|
||||||
|
version: 0.4.0
|
||||||
|
|
||||||
|
http_proxy:
|
||||||
|
git: https://github.com/mamantoha/http_proxy.git
|
||||||
|
version: 0.14.0+git.commit.5a02af05c5531c639efdf651431a86ec90905f71
|
||||||
|
|
||||||
|
pg:
|
||||||
|
git: https://github.com/will/crystal-pg.git
|
||||||
|
version: 0.26.0
|
||||||
|
|
||||||
|
sqlite3:
|
||||||
|
git: https://github.com/crystal-lang/crystal-sqlite3.git
|
||||||
|
version: 0.19.0
|
||||||
|
|
||||||
|
tourmaline:
|
||||||
|
git: https://github.com/protoncr/tourmaline.git
|
||||||
|
version: 0.28.0
|
||||||
|
|
||||||
|
webmock:
|
||||||
|
git: https://github.com/manastech/webmock.cr.git
|
||||||
|
version: 0.14.0
|
||||||
|
|
||||||
|
xpath2:
|
||||||
|
git: https://github.com/naqvis/crystal-xpath2.git
|
||||||
|
version: 0.2.0
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
# ©AngelaMos | 2026
|
||||||
|
# shard.yml
|
||||||
|
|
||||||
|
name: cre
|
||||||
|
version: 0.1.0
|
||||||
|
description: |
|
||||||
|
Credential Rotation Enforcer - tracks and enforces credential rotation
|
||||||
|
policies across cloud secret managers, vaults, and developer tooling.
|
||||||
|
authors:
|
||||||
|
- Carter Perez <carterperez2222@gmail.com>
|
||||||
|
license: MIT
|
||||||
|
crystal: ">= 1.20.0"
|
||||||
|
|
||||||
|
targets:
|
||||||
|
cre:
|
||||||
|
main: src/cre.cr
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
db:
|
||||||
|
github: crystal-lang/crystal-db
|
||||||
|
version: ~> 0.9
|
||||||
|
pg:
|
||||||
|
github: will/crystal-pg
|
||||||
|
version: ~> 0.9
|
||||||
|
sqlite3:
|
||||||
|
github: crystal-lang/crystal-sqlite3
|
||||||
|
version: ~> 0.9
|
||||||
|
tourmaline:
|
||||||
|
github: protoncr/tourmaline
|
||||||
|
version: ~> 0.28
|
||||||
|
|
||||||
|
development_dependencies:
|
||||||
|
webmock:
|
||||||
|
github: manastech/webmock.cr
|
||||||
|
version: ~> 0.9
|
||||||
Loading…
Reference in New Issue