Developer Quality Time

On every software projects developers use a variety of tools, and it is not really possible to impose an overall standard that works for everyone.

This is mostly the reason why - if there is a commandline that produces the effect of running, building, configuring and testing a product ,this is the most valuable way to go.

Of course some developers can get creative with strange configurations on strange editors, but I would like to think that - if there is a standard way to do things, you can, and definitely should go for it.

I survived through the years a different variety of build tools, including Make, Ant, Gradle, Sbt, Maven. Still if I have to do with different programming languages, I have to use different tools. With some languages you need external tools, with some others they are bundled with the standard compiler/interpreter.

Long story short, every day, on every project I will be typing all the time something like:

make build or mvn clean install -DskipTests or: go build

and then: java -cp some.jar some.package.SomeClass or:

go run

and then, when I really feel ready:

mvn test

or maybe:

go test

or even:

make test

Sure everything that is mere repetition should definitely automated. All those command have in common is the semantic, and if I sit down and think, what I do most of the time is:

  • create a branch for new development
  • building (no tests)
  • running
  • building, packaging after running the tests
  • pushing the changes to a remote branch
  • somehow releasing my changeset

Rinse and repeat. Just that. Wouldn't it be marvelous if it existed a tool to do that, nice and simple, with short options and long mnemonics to carry along the daily slog of programming ?

I am thinking something that when you invoke the help would just print those options for you:

dqt <args>

-g|--git-branch [branch description] : Creates a new git branch
-b|--build                           : Builds the project
-r|--run                             : Runs the project
-B|--build-no-test                   : Builds the project, skip tests
-P|--push                            : push current repo to corresponding remote
-p|--pull                            : pull current repo from corresponding remote

And then the implementation, if you have 100 java projects that build each one in different way, with different Sdk version, should be loaded from a custom set of build scripts that you share with projects that build/run/deploy in the same way.

Wouldn't it be marvelous if you can build something like that in some dirty shell script, or Go if you really have no family liabilities, career or duty of sort that runs after you ?

[programming] [java] [git]