/ Command-line

Human readable time diffs on lines of output when running

Human readable time diffs on lines of output when running

swiff

Why not let the computer do all that diffing of timestamps you tend to do manually?

swiffc

👋 Usage

Live with any command

command | swiff

Try it out

while true; do echo "Foo"; sleep $[ ($RANDOM % 3) + 1 ]s; done | swiff

With fastlane

fastlane build | swiff --fastlane

Or even shorter

fastlane build | swiff -f

Or maybe you have an old build log from fastlane?

cat build.log | swiff -f

Example output

Summary

Useful summary at the end with most important highlights

swiff

✌️ Install

Globally by oneliner

git clone [email protected]:agens-no/swiff.git && cd swiff && make && cd .. && rm -rf swiff/

You may now type swiff help from any directory in terminal to verify that the install is complete

What is the oneliner doing?
  1. Uses git to clone swiff to a directory swiff in your current directory
  2. moves in to the created swiff folder
  3. builds swiff using the Makefile (basically compiling Sources/swiff/main.swift and installing swiff at /usr/local/bin/swiff)
  4. moves back out of the folder
  5. deletes the swiff folder

Globally by cloning

git clone [email protected]:agens-no/swiff.git
cd swiff
make

You may now type swiff help from any directory in terminal to verify that the install is complete

Locally by oneliner

curl --fail https://raw.githubusercontent.com/agens-no/swiff/master/Sources/swiff/main.swift > swiff.swift && swiftc -o swiff swiff.swift && rm swiff.swift

You may now type ./swiff help from your current directory and use it like fastlane build | ./swiff -f

What is the oneliner doing?
  1. Uses curl to copy Sources/swiff/main.swift to a file called swiff.swift in your current directory
  2. builds it using your current swift tooling
  3. deletes swiff.swift

Using Mint:

$ mint install agens-no/swiff

Installation issues?

Might be because of requirements: Swift 4, Xcode, macOS

Open an issue and let me know!

✊ Advanced usage

Usage: swiff [-l low] [-m medium] [-h high] [-r reset-mark] [-d diff-mode] [-s summary-limit] [-f --fastlane]
  -l, --low                   Threshold in seconds for low duration color formatting (default: 1)
  -m, --medium                Threshold in seconds for medium duration color formatting (default: 5)
  -h, --high                  Threshold in seconds for high duration color formatting (default: 10)
  -r, --reset-mark            String match to reset total counter (default: none)
  -d, --diff-mode             Valid options is "live" or "fastlane" (default: live)
  -s, --summary-limit         Maximum number of lines in summary (default: 20)

  -f, --fastlane              Shortcut for --diff-mode fastlane --reset-mark "Step :"

Example: cat build.log | swiff --low 1 --medium 5 --high 10 --reset-mark "Step: " --diff-mode live --summary-limit 20

Example: fastlane build | swiff -f

GitHub