auto publish sbt plugin from Travis CI

in

In this post, we'll try to automate the release of an sbt plugin using Ólafur's olafurpg/sbt-ci-release. The README of sbt-ci-release covers the use case for a library published to Sonatype OSS. Read it thoroughly since this post will skip over the details that do not change for publishing sbt plugins.

Automated release in general is a best practice, but there's one benefit specifically for sbt plugin releases. Using this setup allows multiple people to share the authorization to release an sbt plugin without adding them to Bintray sbt organization. This is useful for plugins maintained at work.

Defx: file explorer plugin for Neovim

The combination of fuzzy searching (fzf, Command-T, Denite etc) and file explorer are great. That's pretty much what you get when you open Sublime Text or VS Code.

This post is my attempt to configure Neovim so I can get a nice tree-view style file explorer.

sbt 1.3.13

in

I'm happy to announce sbt 1.3.13 patch release. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.3.13.

Special thanks to Scala Center. It takes time to review bug reports, pull requests, make sure contributions land to the right places, and Scala Center sponsored me to do maintainer tasks for sbt during June.

sbt 1.3.12

in

I'm happy to announce sbt 1.3.12 patch release. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.3.12.

Special thanks to Scala Center. It takes time to review bug reports, pull requests, make sure contributions land to the right places, and Scala Center sponsored me to do maintainer tasks for sbt during May. Darja + whole Scala Center crew have been chill to work with.

Change since sbt 1.3.11

There was a regression in sbt 1.3.11 around the launcher integration, which showed up as repositories file getting ignored. sbt 1.3.12 fixes it. #5583

sbt 1.3.11

in

Update: There was a regression in sbt 1.3.11. Please use 1.3.12 instead.

Jar Jar Abrams

in

Jar Jar Abrams is an experimental Scala extension of Jar Jar Links, a utility to shade Java libraries.

For library authors, the idea of other library is a double-edged sword. On one hand, using other libraries avoids unnecessary duplication of work, not using other libraries is almost hypocritical. On the other hand, each library you add would add a transitive dependency to your users, increasing the possibility of conflict. This is partly due to the fact that within a single running program you can one have one version of a library.

Selective functor in sbt

in

Selective functor can facilitate conditional execution of tasks while keeping the ability to run inspect command.

Selective composition can be implemented in sbt as conditional task:

Def.task {
  if (Boolean) something1
  else something2
}

keeping promise in sbt

in

build.sbt is a DSL for defining a task graph to be used for automatic parallel processing. The message passing among the tasks are expressed using something.value macro, which encodes Applicative composition (task1, task2) mapN { case (t1, t2) => .... }.

One mechanism I've been thinking about is allowing some long-running task1 to communicate with task2 midway.

promise

Syndicate content