Skip to content
A simple task and time manager.
Haskell Nix Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
src
test
.gitignore
.travis.yml
CHANGELOG.md
LICENSE
README.md
Setup.hs
default.nix
install.sh
package.yaml
pkgs.nix
release.nix
stack.yaml
stack.yaml.lock
unfog.nix

README.md

⌚ Unfog.cli

A simple task and time manager, written in Haskell.

image

Table of contents

Installation

From binaries

curl -sSL https://raw.githubusercontent.com/unfog-io/unfog-cli/master/install.sh | sh

Note: Linux, OSX and Windows are supported. See the releases section.

From sources

First you need to install stack:

curl -sSL https://get.haskellstack.org/ | sh

Then build from git:

git clone https://github.com/unfog-io/unfog-cli.git unfog && cd unfog
stack install

Usage

Create

To create a task, you need:

  • A description
  • A list of tags (optional)
unfog create <desc> <+tag1> <+tag2> ...

image

Note: a tag should always start by +.

Show

unfog show <id>

image

List

unfog list

image

Update

unfog update <id> <desc> <+tag1> <-tag2> ...

Toggle

unfog start <id>
unfog stop <id>
unfog toggle <id>

image

Done

Mark as done a task will remove it from the main list by adding a special tag done:

unfog done <id>

Note: done tasks can be listed by enabling the done context.

Delete

unfog delete <id>

Remove

The remove command acts like a toggle. If the task is already done, then it deletes it, otherwise it marks it as done.

Context

Filters tasks by the given tags. Once set up:

  • You will see only tasks containing at least one tag of your context
  • When you create a task, all tags in your context will be assigned to it
unfog context <+tag1> <+tag2> ...

The special context +done allows you to see done tasks:

unfog context +done

image

Note: giving an empty (or invalid) context will clear it.

Worktime

Shows the total worktime spent on tasks belonging to the given context, grouped by days. An empty context will show the worktime of all your tasks:

unfog wtime <+tag1> <+tag2> ...

image

Options

JSON

By adding the --json option, the output will be printed in JSON format:

{
  "ok": 0 | 1,
  "data": String | Task | [Task] | Worktime
}
Task {
  id: Int
  ref: Int
  pos: Int
  desc: String
  tags: [String]
  active: 0 | 1
  done: 0 | 1
  wtime: WtimeRecord
}

Worktime {
  total: WtimeRecord,
  wtimes: [{
    date: String (day)
    wtime: WtimeRecord,
  }]
}

WtimeRecord {
  approx: String (worktime approximation)
  human: String (full worktime)
  micro: Int (worktime in micro seconds)
}

image

This is useful to create user interafaces. Here the list of current implementations:

Contributing

Git commit messages follow the Angular Convention, but contain only a subject.

Use imperative, present tense: “change” not “changed” nor “changes”
Don't capitalize first letter
No dot (.) at the end

Code should be as clean as possible, variables and functions use the camel case convention. A line should never contain more than 80 characters.

Tests should be added for each new functionality. Be sure to run tests before proposing a pull request.

Credits

You can’t perform that action at this time.