130 lines
6.1 KiB
Markdown
130 lines
6.1 KiB
Markdown
# Cautious Journey
|
|
|
|
Label manager and state machine, for Github and Gitlab.
|
|
|
|
## Features
|
|
|
|
- create, delete, and update project labels
|
|
- add and remove issue labels
|
|
- mutually-exclusive label groups
|
|
- state machine between group values
|
|
- `dot` graph output
|
|
- supports Github and Gitlab
|
|
|
|
## Contents
|
|
|
|
- [Cautious Journey](#cautious-journey)
|
|
- [Features](#features)
|
|
- [Contents](#contents)
|
|
- [Status](#status)
|
|
- [Releases](#releases)
|
|
- [Usage](#usage)
|
|
- [Running with Docker](#running-with-docker)
|
|
- [Running with Yarn](#running-with-yarn)
|
|
- [Logging with Bunyan](#logging-with-bunyan)
|
|
- [Graphing with GraphViz](#graphing-with-graphviz)
|
|
- [Build](#build)
|
|
- [License](#license)
|
|
|
|
## Status
|
|
|
|
[![Pipeline status](https://img.shields.io/gitlab/pipeline/ssube/cautious-journey.svg?gitlab_url=https%3A%2F%2Fgit.apextoaster.com&logo=gitlab)](https://git.apextoaster.com/ssube/cautious-journey/commits/master)
|
|
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=ssube_cautious-journey&metric=ncloc)](https://sonarcloud.io/dashboard?id=ssube_cautious-journey)
|
|
[![Test coverage](https://codecov.io/gh/ssube/cautious-journey/branch/master/graph/badge.svg)](https://codecov.io/gh/ssube/cautious-journey)
|
|
[![MIT license](https://img.shields.io/github/license/ssube/cautious-journey.svg)](https://github.com/ssube/cautious-journey/blob/master/LICENSE.md)
|
|
|
|
[![Open bug count](https://img.shields.io/github/issues-raw/ssube/cautious-journey/type-bug.svg)](https://github.com/ssube/cautious-journey/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Fbug)
|
|
[![Open issue count](https://img.shields.io/github/issues-raw/ssube/cautious-journey.svg)](https://github.com/ssube/cautious-journey/issues?q=is%3Aopen+is%3Aissue)
|
|
[![Closed issue count](https://img.shields.io/github/issues-closed-raw/ssube/cautious-journey.svg)](https://github.com/ssube/cautious-journey/issues?q=is%3Aissue+is%3Aclosed)
|
|
|
|
[![Renovate badge](https://badges.renovateapi.com/github/ssube/cautious-journey)](https://renovatebot.com)
|
|
[![Dependency status](https://img.shields.io/librariesio/github/ssube/cautious-journey)](https://libraries.io/github/ssube/cautious-journey)
|
|
[![Known vulnerabilities](https://snyk.io/test/github/ssube/cautious-journey/badge.svg)](https://snyk.io/test/github/ssube/cautious-journey)
|
|
|
|
[![Maintainability](https://api.codeclimate.com/v1/badges/599b7b2382601f95d7a5/maintainability)](https://codeclimate.com/github/ssube/cautious-journey/maintainability)
|
|
[![Technical debt ratio](https://img.shields.io/codeclimate/tech-debt/ssube/cautious-journey.svg)](https://codeclimate.com/github/ssube/cautious-journey/trends/technical_debt)
|
|
[![Quality issues](https://img.shields.io/codeclimate/issues/ssube/cautious-journey.svg)](https://codeclimate.com/github/ssube/cautious-journey/issues)
|
|
[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/ssube/cautious-journey.svg?logo=lgtm)](https://lgtm.com/projects/g/ssube/cautious-journey/context:javascript)
|
|
[![Total alerts](https://img.shields.io/lgtm/alerts/g/ssube/cautious-journey.svg)](https://lgtm.com/projects/g/ssube/cautious-journey/alerts/)
|
|
|
|
## Releases
|
|
|
|
[![github release link](https://img.shields.io/badge/github-release-blue?logo=github)](https://github.com/ssube/cautious-journey/releases)
|
|
[![github release version](https://img.shields.io/github/tag/ssube/cautious-journey.svg)](https://github.com/ssube/cautious-journey/releases)
|
|
[![github commits since release](https://img.shields.io/github/commits-since/ssube/cautious-journey/v0.1.0.svg)](https://github.com/ssube/cautious-journey/compare/v0.1.0...master)
|
|
|
|
[![npm package link](https://img.shields.io/badge/npm-package-blue?logo=npm)](https://www.npmjs.com/package/cautious-journey)
|
|
[![npm release version](https://img.shields.io/npm/v/cautious-journey.svg)](https://www.npmjs.com/package/cautious-journey)
|
|
[![Typescript definitions](https://img.shields.io/npm/types/cautious-journey.svg)](https://www.npmjs.com/package/cautious-journey)
|
|
|
|
## Usage
|
|
|
|
cautious-journey can be installed as a Docker image or an npm package:
|
|
|
|
```shell
|
|
> docker pull ssube/cautious-journey
|
|
> yarn global add cautious-journey
|
|
```
|
|
|
|
### Running with Docker
|
|
|
|
```shell
|
|
> docker run --rm --it ssube/cautious-journey --help
|
|
|
|
Usage: cautious-journey <mode> [options]
|
|
|
|
Commands:
|
|
index.js graph-labels graph label state changes
|
|
index.js sync-issues sync issue labels
|
|
index.js sync-projects sync project labels
|
|
|
|
Options:
|
|
--help Show help [boolean]
|
|
--version Show version number [boolean]
|
|
--config, -c [string] [required]
|
|
--dryrun, -d [boolean] [default: true]
|
|
--project, -p [array]
|
|
```
|
|
|
|
Docker provides a single output stream, regardless of logger configuration. When running `graph-labels`, turning
|
|
the `logger.level` to `warn` or `error` will suppress log messages that could confuse `dot`.
|
|
|
|
### Running with Yarn
|
|
|
|
```shell
|
|
$(yarn global bin)/cautious-journey --help
|
|
```
|
|
|
|
Yarn will install a copy of the latest `cautious-journey` package into your `$(yarn global dir)` path.
|
|
|
|
### Logging with Bunyan
|
|
|
|
```shell
|
|
$(yarn global bin)/cautious-journey sync-issues | $(yarn global bin)/bunyan
|
|
```
|
|
|
|
Piping logs through `bunyan` will pretty-print the JSON records that `cautious-journey` emits. When running with
|
|
`docker`, note that all program output will be combined into a single stream.
|
|
|
|
You can also use `jq` to format or filter messages. Logs are line-delimited JSON.
|
|
|
|
### Graphing with GraphViz
|
|
|
|
```shell
|
|
$(yarn global bin)/cautious-journey graph-labels | dot -Tpng -o /tmp/labels.png
|
|
sensible-browser /tmp/labels.png
|
|
```
|
|
|
|
More details can be found in the [getting started guide](./docs/getting-started.md#graphing).
|
|
|
|
## Build
|
|
|
|
cautious-journey is built with `make`, `node`, and `yarn`. The [developer guide](./docs/dev.md#setup) has steps
|
|
for installing these, or you can use a container that provides them.
|
|
|
|
Node 12 or better is required, along with Yarn 1.x or better.
|
|
|
|
## License
|
|
|
|
Released under [the MIT license](./LICENSE.md).
|