Build system designed to streamline data projects on macOS.
- Bash Shell Manager
- Data Project Templates
- Rapidly generate data project scaffolding with a suite of interoperable copier project templates.
- Each template provides a layer of abstraction over an open-source data tool (e.g., Python) and incorporates relevant best practices and patterns.
- All projects run in isolated Docker containers which helps avoid dependency conflicts and ensures cross-platform compatibility (i.e., Linux, Windows).
Python
template includes...- Lint with
ruff
andpre-commit
. - Documentation with
sphinx
. - Manage dependencies with
pdm
,pip-tools
andpyenv
. - Run tests and measure coverage with
pytest
andcoverage
.
- Lint with
⚠️ Recommended macOS version is Sequoia 15.0> or later.
-
Install Docker Desktop: https://docs.docker.com/desktop/install/mac-install/
-
Install core macOS developer utilities:
xcode-select --install
- Change your default macOS shell from zsh to bash:
chsh -s /bin/bash
- Install Homebrew package manager:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Install GitHub CLI and authenticate.
brew install gh
gh auth
Clone macos-workspace
into a new repos/
directory.
(mkdir -p ~/repos/
gh repo clone ablange/macos-workspace ~/repos/macos-workspace)
Build your workspace.
cd ~/repos/macos-workspace/
make setup
Restart shell for changes to take effect.
exec bash
To get started using your workspace, build the projects you need inside repos/
and use them interdependently as needed.
Here is a list of templates available to build inside macos-workspace
.
- python
- duckdb
Let's walk through building a Python 3.11.9 project called some_project
.
cd ~/repos/macos-workspace/
make python project_name=some_project
After you complete questionnaire, a project directory will be created in repos/
.
Setup your Python project development environment.
cd ~/repos/some_project
make setup
Now when you cd into foo/
your development environment is automatically activated.
Finally, push your new project to GitHub and start working on a new branch.
Change into your new project directory and push to GitHub.
git init
git push origin main
git checkout -B feature
TODO