tk(Task Keeper) is a tool to manage tasks from different task files,
such as Makefile
,justfile
, package.json
, deno.jso
, .fleet/run.json
etc,
and call tasks from different project management tools,
such as Apache Maven
, Gradle
, Cargo
and npm
etc.
tk --list
tk task_name
tk --runner=npm start
tk --from=npm --to=fleet task1 task2
tk --no-dotenv
to disable--doctor
support: check your system for potential problems to run taskstk -- node hello.js
with correct language version and PATHcargo install task-keeper
After install, execute tk --help
for usage. Some commands as following:
tk --list
tk task_name
Sorry, I got lost in different task files and management tools, and sometimes I even can not remember how to run them.
Makefile
,justfile
, package.json
, deno.json
, Taskfile.yml
, tasks.py
, README.md
etc, and
too many task files to check tasks.just taskName
, npm run task_name
, deno task task_name
, composer run-script task_name
etcmvn versions:display-dependency-updates
, ./gradlew dependencyUpdates
, npm outdated
etcmvn -DskipTests package
, ./gradlew assemble
, cargo build
etcToo many differences, I want to save my brain and keyboard, and you know MacBook keyboard's price tag is $400+.
Tips:
command type support now:
For details, please refer https://www.jetbrains.com/help/fleet/run-configurations.html
Task Keeper uses .java-version
, .node-version
files to detect language version and bound with local installed SDK.
To make task runner run tasks smoothly, Task Keeper will append following directories to PATH
automatically:
node-modules/.bin
venv/bin
vendor/bin
bin
.bin
For example, if you use Python virtual env to manage your project, Task Keeper will add venv/bin
to PATH
automatically, and you don't need to do anything.
hello:
python hello.py
Tips: you can use double dash to run command with language detection and correct PATH
,
such as tk -- mvn spring-boot:run
. To make life easy, and you can use alias e='tk --'
to create an alias,
then you can run e mvn spring-boot:run
to run your project.
mvn archetype:generate
, npm init
, cargo new xxx
etcnpm istall
, dependency:resolve
tk build -- --release
, maven: mvn -DskipTests clean package
, npm: npm run build
go run main.go
npm test
, maven: mvn test
, cargo: cargo test
mvn javadoc:javadoc
mvn clean
, cargo: cargo clean
go list -u -m all
go get -u
tk add dependency
or tk -D add dependency
or tk --runner=npm add dependency
Attention: if package manager's task name is in a task runner, and task keeper will not execute package manager's command.
Available
Please set up gradle-versions-plugin for dependency version
management.
You can transparently add the plugin to every Gradle project that you run via a Gradle init script.
$HOME/.gradle/init.d/plugins.gradle
with following code:
``` initscript { repositories { gradlePluginPortal() }
dependencies { classpath 'com.github.ben-manes:gradle-versions-plugin:+' } }
allprojects { apply plugin: com.github.benmanes.gradle.versions.VersionsPlugin
tasks.named("dependencyUpdates").configure { // configure the task, for example wrt. resolution strategies } } ```
Please add sbt-updates and DependencyTreePlugin as global plugins.
$HOME/.sbt/1.0/plugins/plugins.sbt
with following code:
addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.3")
addDependencyTreePlugin
Available
npm-check
command available, npm-check -u
will be used as outdated
task.Available
Available
Available
Available
Only support cmake-conan, and conanfile.txt required.
Default build directory is cmake-build-debug
, and you override it by CMAKE_BINARY_DIR=_build tk build
.
Available. Please install swift-outdated for outdated
operation.
Available.
Available with following tools:
Available.
Please set up antq for outdated dependencies. $HOME/.lein/profiles.clj
clojure
{
:user
{:dependencies [[com.github.liquidz/antq "RELEASE"]]
:aliases {"outdated" ["run" "-m" "antq.core"]}
}
}
Available.
Available.
Task keeper will parse README.md and extract tasks with following code block format:
~~~markdown
shell {#task_name}
curl https://httpbin.org/ip
~~~
Now only shell
and sh
are supported.
tk hello --name linux_china
tk hello - Jackie
, use -
to separate task paramstk hello --name Jack -- --verbose
, use --
double dash to separate global optionsTask Keeper will detect version configuration file and adjust the environment variables to run tasks.
.java-version
is used for version management, and values as following:
Task Keeper will try to find Java from $HOME/.jbang/cache/jdks
or $HOME/.sdkman/candidates/java/
.
.node-version
is used for Node.js version management, and values as following:
Task Keeper will try to find Node from $HOME/.nvm/versions/node
or $HOME/.volta/tools/image/node
.
shell {#demo}
$ curl https://httpbin.org/get
$ curl -X POST https://httpbin.org/post
shell {#myip}
curl --silent https://httpbin.org/ip | jq '.origin'
shell {#demo2}
curl https://httpbin.org/ip \
--user-agent "Task Keeper/0.1.0" \
--silent
curl https://httpbin.org/headers