• Stars
    star
    807
  • Rank 56,489 (Top 2 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Human readable time diffs on lines of output when running e.g. build commands like fastlane

macOS only

swiff

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

👋 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

(Swiff parses the timestamps produced by fastlane)

With xcodebuild

xcrun xcodebuild -project "MyApp.xcodeproj" -scheme "MyApp" | xcpretty | swiff

🤲 Example output

Summary

Useful summary at the end with most important highlights

✌️ 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

Create a new 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

🤙 License

MIT