Skip to content
/ swiff Public

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

License

Notifications You must be signed in to change notification settings

agens-no/swiff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published