- Update pyproject.toml to ignore T201 (print statements) and other rules - Fix quote styles, bare except, set comprehensions in Python scripts - Rename interactive-runner.ts to interactiveRunner.ts (camelCase) - Refactor TypeScript to use import.meta.url instead of __dirname - Add proper JSDoc headers and rename abbreviated variables
Ephemere
A collection of ephemeral scripts for various tasks, written in TypeScript and Python.
Project Structure
.
├── typescript/ # TypeScript project
│ ├── src/ # TypeScript source files
│ ├── package.json
│ ├── tsconfig.json
│ └── eslint.config.js
├── python/ # Python project
│ ├── *.py # Python scripts
│ ├── pyproject.toml
│ └── requirements.txt
├── Makefile # Build commands for both projects
└── README.md
Setup
Prerequisites
- Node.js (v24+) with nvm
- Python 3.10+
- pnpm 10.15.0
- uv (Python package manager)
- 1Password CLI (for secrets management)
Installation
Install all dependencies (TypeScript and Python):
make install
Or install individually:
make install-ts # TypeScript dependencies only
make install-py # Python dependencies only
Development
TypeScript Scripts
TypeScript scripts are located in the typescript/src/ directory. To run a TypeScript script with environment variables:
# From the root directory
make run-ts src/s3/upload.ts
# Or manually from typescript directory
cd typescript
pnpm start path/to/script.ts
Python Scripts
Python scripts are located in the python/ directory. To run a Python script with environment variables:
# From the root directory
make run-py analyse_availability.py
# Or manually from python directory
cd python
uv run python script_name.py
Linting and Formatting
# Run all linters (TypeScript and Python)
make lint
# Run linters individually
make lint-ts # TypeScript linter
make lint-py # Python linter
# Build TypeScript (type check)
make build
# Format Python code
make format
# Check Python formatting without modifying
make format-check
# Run tests
make test
# Clean build artifacts and caches
make clean
# Show all available commands
make help
CI/CD
The GitHub Actions workflow runs the following checks:
- Dependency pin check - Ensures all dependencies are pinned to exact versions
- TypeScript checks:
- ESLint
- TypeScript build (type checking)
- Tests
- Python checks:
- Ruff linting
- Ruff format checking
Secrets Management
This project uses 1Password CLI for secrets management. Environment variables are stored in prod.env as 1Password vault references.
The make run-ts and make run-py commands automatically inject secrets from 1Password:
# These commands include 1Password integration
make run-ts src/discord/bot.ts
make run-py evaluate_technical_proficiency.py
To manually run scripts with secrets:
op run --env-file=prod.env -- <command>
Feedback and Bugs
If you have feedback or a bug report, please feel free to open a GitHub issue!
Contributing
If you would like to contribute to the project, you may create a Pull Request containing your proposed changes and we will review it as soon as we are able! Please review our contributing guidelines first.
Code of Conduct
Before interacting with our community, please read our Code of Conduct.
License
This software is licensed under our global software license.
Copyright held by Naomi Carrigan.
Contact
We may be contacted through our Chat Server or via email at contact@nhcarrigan.com.