Skip to content

ssc-php/dtk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Devonshire Tea caKe (DTK)

A Devonshire Tea caKe is simple, satisfying, and pairs well with focused work:

Open ticket β†’ create branch β†’ code β†’ open PR β†’ merge β†’ deploy.

Unfortunately, reality looks more like:

Open ticket β†’ read the ticket ID β†’ switch to terminal β†’ forget the ID β†’ go back to ticket β†’ copy ID β†’ create branch with name <ticket-id>/<ticket-title> β†’ forget to move the ticket to "In progress" β†’ open PR β†’ forget to link ticket β†’ merge. Ticket still says "In Progress" three weeks later.

dtk cuts through the repetitive ceremony. It connects Kanban board, Git workflow, and Deployment into one coherent flow, improving Developer eXperience so we can get back to the actual baking.

Features

  • Create a branch from a ticket ID or URL:
    • Branch is automatically named from the ticket ID and slugified title
    • Dev is automatically assigned to the ticket
    • Ticket is automatically moved to WIP
  • Open a PR based on the current branch:
    • PR title and description are automatically generated from commits and ticket metadata, with the ticket ID and link included
    • Ticket is automatically moved to In Review
  • Merge a PR:
    • Local and remote branches are automatically deleted
    • Ticket is automatically moved to Staging
  • Create a tag, to deploy:
    • Version tag and message are automatically generated from the commit log
    • GitHub release automatically created
    • A recap is posted to Slack
    • Ticket is automatically moved to Done

All commands are configurable to fit any workflow, with support for:

  • Jira
  • Trello
  • GitHub Projects
  • JetBrains YouTrack

Getting started

Homebrew (macOS and Linux)

brew tap ssc-php/dtk
brew install dtk

To upgrade:

brew upgrade dtk

Manual install

Download the binary for your platform from the releases page:

Platform Binary Examples
Linux aarch64 dtk-linux-aarch64 AWS Graviton, Raspberry Pi, ARM servers
macOS aarch64 dtk-macos-aarch64 Apple Silicon Macs (M1, etc)
macOS x86_64 dtk-macos-x86_64 Intel Macs (pre-2020)
Windows x86_64 dtk-windows-x86_64.exe Most Windows desktops and servers
**🐧 On Linux:**
curl --proto '=https' --tlsv1.2 -fsSL "https://github.com/ssc-php/dtk/releases/latest/download/dtk-linux-x86_64" -o /tmp/dtk

install -m 755 -D /tmp/dtk ~/.local/bin/dtk

Verify the checksum:

curl --proto '=https' --tlsv1.2 -fsSL "https://github.com/ssc-php/dtk/releases/latest/download/checksums.txt" \
  | grep "dtk-linux-x86_64" | awk '{print $1 "  /tmp/dtk"}' | sha256sum --check

On ARM (e.g. AWS Graviton, Raspberry Pi, etc), replace dtk-linux-x86_64 with dtk-linux-aarch64.

**🍎 On macOS:**
curl --proto '=https' --tlsv1.2 -fsSL "https://github.com/ssc-php/dtk/releases/latest/download/dtk-macos-aarch64" -o /tmp/dtk

install -m 755 /tmp/dtk ~/.local/bin/dtk

Verify the checksum:

curl --proto '=https' --tlsv1.2 -fsSL "https://github.com/ssc-php/dtk/releases/latest/download/checksums.txt" \
  | grep "dtk-macos-aarch64" | awk '{print $1 "  /tmp/dtk"}' | shasum -a 256 --check

On Intel Macs (pre-2020), replace dtk-macos-aarch64 with dtk-macos-x86_64. Make sure ~/.local/bin is in your PATH.

**πŸͺŸ On Windows** (run in PowerShell):
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.local\bin" | Out-Null
Invoke-WebRequest -Uri "https://github.com/ssc-php/dtk/releases/latest/download/dtk-windows-x86_64.exe" -OutFile "$env:TEMP\dtk.exe"

Verify the checksum:

$hash = (Get-FileHash "$env:TEMP\dtk.exe" -Algorithm SHA256).Hash.ToLower()
$expected = (Invoke-WebRequest -Uri "https://github.com/ssc-php/dtk/releases/latest/download/checksums.txt").Content -split '\r?\n' |
  Where-Object { $_ -match "dtk-windows-x86_64.exe" } | ForEach-Object { ($_ -split '\s+')[0] }
if ($hash -ne $expected) { throw "Checksum mismatch" }
Move-Item "$env:TEMP\dtk.exe" "$env:USERPROFILE\.local\bin\dtk.exe"

Make sure %USERPROFILE%\.local\bin is in your PATH.


Usage

And run dtk without any argument to get the "help" screen:

$ dtk
   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
 β–ˆβ–ˆ  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   DTK: Devonshire Tea caKe
β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  β–ˆβ–ˆ  Kanban, Git and Deployment,
 β–ˆβ–ˆβ–ˆβ–ˆ  β–ˆβ–ˆβ–ˆβ–ˆ   in one coherent flow.
   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
Available commands:
    ...

Want to know more?

Further documentation can be found in:

  • docs/how-to/: how-to guides
    • 0xx are for local development (e.g. 001-how-to-run-qa.md)

You can see the current and past versions using one of the following:

And finally some meta documentation:

About

πŸͺ Kanban, Git and Deployment, in one coherent flow.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors