Crates.io | task-keeper |
lib.rs | task-keeper |
version | 0.27.0 |
source | src |
created_at | 2022-08-06 02:15:22.532841 |
updated_at | 2024-11-14 13:47:32.157037 |
description | Task keeper to manage tasks from different task runners |
homepage | https://github.com/linux-china/task-keeper |
repository | https://github.com/linux-china/task-keeper |
max_upload_size | |
id | 639651 |
size | 436,529 |
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.
Bonus: sq(Squirrel) is a command-line snippets keeper to manage cli snippets.
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
(or cargo binstall task-keeper
)nix shell github:linux-china/task-keeper
nix profile install github:linux-china/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+.
Bun Shell is a nice feature from Bun to make shell scripting with JavaScript & TypeScript fun.
Now Task Keeper support Taskfile.ts
with Bun Shell, and you can use following code to run tasks:
import {$} from "bun";
export async function hello() {
await $`echo Hello World!`;
}
export async function list_js() {
await $`ls *.js`;
}
Then tk hello
to run task with Bun Shell.
command type support now:
For details, please refer https://www.jetbrains.com/help/fleet/run-configurations.html
Task Keeper uses .java-version
, .node-version
, .python-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
or .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.
bld is a new build system that allows you to write your build logic in pure Java.
Available
npm-check
command available, npm-check -u
will be used as outdated
task.yarn
, pnpm
, bun
supportAvailable. Please install cargo-tree
, cargo-outdated
.
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
Available. Please install swift-outdated for outdated
operation.
Available.
Available with following tools:
[tool.poe]
detected in pyproject.toml
requirements.lock
or [tool.rye]
detected in pyproject.toml
uv.lock
or [tool.uv]
detected in pyproject.toml
Available.
Please set up antq for outdated dependencies. $HOME/.lein/profiles.clj
{
:user
{:dependencies [[com.github.liquidz/antq "RELEASE"]]
:aliases {"outdated" ["run" "-m" "antq.core"]}
}
}
Available.
Available.
Available.
Available.
if you use JetBrains IDE to edit Taskfile.yml, please add $schema
comment on top of Taskfile.yml for completion.
# $schema: https://taskfile.dev/schema.json
version: '3'
tasks:
hello:
cmds:
- echo 'Hello World from Task!'
silent: true
Task keeper will parse README.md and extract tasks with following code block format:
```shell {#task_name}
curl https://httpbin.org/ip
```
Now only shell
, sh
, javascript
and typescript
are supported.
Run JavaScript/TypeScript by node
or deno
:
```javascript {#task_name .deno}
console.log("hello world");
```
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.
.python-version
is used for version management for pyenv.
.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/
.
.sdkmanrc
support, and set HOME and PATH environment variables automatically. Please refer https://sdkman.io/usage#env
for detail.
.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
.
sq is a command-line snippets keeper to manage cli snippets, and it's based on Just command runner.
sq add snippet_name
sq edit snippet_name
. sq uses EDITOR
environment variable to open snippets justfile.sq snippet_name
Snippets justfile: $HOME/.sk/snippets.just
.
$ curl https://httpbin.org/get
$ curl -X POST https://httpbin.org/post
curl --silent https://httpbin.org/ip | jq '.origin'
curl https://httpbin.org/ip \
--user-agent "Task Keeper/0.1.0" \
--silent
curl https://httpbin.org/headers
let name: string = "linux_china";
console.log(name);