• Stars
    star
    597
  • Rank 72,522 (Top 2 %)
  • Language
    R
  • License
    Other
  • Created about 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tools for making beautiful & useful command line interfaces

cli

Helpers for Developing Command Line Interfaces

R-CMD-check CRAN RStudio mirror downloads Codecov test coverage

A suite of tools to build attractive command line interfaces (CLIs), from semantic elements: headers, lists, alerts, paragraphs, etc. Supports theming via a CSS-like language. It also contains a number of lower level CLI elements: rules, boxes, trees, and Unicode symbols with ASCII alternatives. It supports ANSI markup for terminal colors and font styles.


Features

  • Build a CLI using semantic elements: headings, lists, alerts, paragraphs.
  • Theming via a CSS-like language.
  • Terminal colors and font styles.
  • All cli text can contain interpreted string literals, via the glue package.
  • Progress bars from R and C code.
  • Error and warning messages with rich text formatting.
  • Support for pluralized messages.
  • ANSI styled string manipulation.

Installation

Install the stable version from CRAN:

install.packages("cli")

Install the development version from GitHub:

pak::pak("r-lib/cli")

Short tour

Some of the more commonly used cli elements, and features.

Short alert messages

One liner messages to inform or warn.

pkgs <- c("foo", "bar", "foobar")
cli_alert_success("Downloaded {length(pkgs)} packages.")
db_url <- "example.com:port"
cli_alert_info("Reopened database {.url {db_url}}.")
cli_alert_warning("Cannot reach GitHub, using local database cache.")
cli_alert_danger("Failed to connect to database.")
cli_alert("A generic alert")

Headings

Three levels of headings.

cli_h1("Heading 1")
cli_h2("Heading 2")
cli_h3("Heading 3")

Lists

Ordered, unordered and description lists, that can be nested.

fun <- function() {
  cli_ol()
  cli_li("Item 1")
  ulid <- cli_ul()
  cli_li("Subitem 1")
  cli_li("Subitem 2")
  cli_end(ulid)
  cli_li("Item 2")
  cli_end()
}
fun()

Themes

Theming via a CSS-like language.

fun <- function() {
  cli_div(theme = list(span.emph = list(color = "orange")))
  cli_text("This is very {.emph important}")
  cli_end()
  cli_text("Back to the {.emph previous theme}")
}
fun()

Command substitution

Automatic command substitution via the glue package.

size <- 123143123
dt <- 1.3454
cli_alert_info(c(
  "Downloaded {prettyunits::pretty_bytes(size)} in ",
  "{prettyunits::pretty_sec(dt)}"))

Pluralization

Pluralization support.

nfiles <- 3
ndirs <- 1
cli_alert_info("Found {nfiles} file{?s} and {ndirs} director{?y/ies}.")

Progress bars

clean <- function() {
  cli_progress_bar("Cleaning data", total = 100)
  for (i in 1:100) {
    Sys.sleep(5/100)
    cli_progress_update()
  }
}
clean()

Documentation

See at https://cli.r-lib.org/ and also in the installed package: help(package = "cli").

Code of Conduct

Please note that the cli project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

License

MIT Β© Posit Software, PBC

More Repositories

1

devtools

Tools to make an R developer's life easier
R
2,360
star
2

lintr

Static Code Analysis for R
R
1,155
star
3

httr

httr: a friendly http package for R
R
978
star
4

actions

GitHub Actions for the R community
JavaScript
898
star
5

testthat

An R πŸ“¦ to make testing πŸ˜€
R
860
star
6

usethis

Set up commonly used πŸ“¦ components
R
809
star
7

pkgdown

Generate static html documentation for an R package
R
692
star
8

styler

Non-invasive pretty printing of R code
R
674
star
9

pak

A fresh approach to package installation
C
605
star
10

roxygen2

Generate R package documentation from inline R comments
R
580
star
11

rig

The R Installation Manager
Rust
503
star
12

rlang

Low-level API for programming with R
R
475
star
13

progress

Progress bar in your R terminal
R
457
star
14

R6

Encapsulated object-oriented programming for R
R
398
star
15

here

A simpler way to find your files
R
394
star
16

scales

Tools for ggplot2 scales
R
379
star
17

fs

Provide cross platform file operations based on libuv.
C
356
star
18

covr

Test coverage reports for R
R
327
star
19

rex

Friendly regular expressions for R.
R
323
star
20

remotes

Install R packages from GitHub, GitLab, Bitbucket, git, svn repositories, URLs
R
321
star
21

crayon

πŸ–οΈ R package for colored terminal output β€” now superseded by cli
R
319
star
22

memoise

Easy memoisation for R
R
312
star
23

lobstr

Understanding complex R objects with tools similar to str()
R
295
star
24

callr

Call R from R
R
282
star
25

waldo

Find differences between R objects
R
275
star
26

vctrs

Generic programming with typed R vectors
C
273
star
27

slider

Sliding Window Functions
R
272
star
28

zeallot

Variable assignment with zeal! (or multiple, unpacking, and destructuring assignment in R)
R
250
star
29

bench

High Precision Timing of R Expressions
R
242
star
30

conflicted

An alternative conflict resolution strategy for R
R
242
star
31

gmailr

Access the Gmail RESTful API from R.
R
231
star
32

processx

Execute and Control Subprocesses from R
R
227
star
33

asciicast

Turn R scripts into terminal screencasts
R
217
star
34

httr2

Make HTTP requests and process their responses. A modern reimagining of httr.
R
215
star
35

xml2

Bindings to libxml2
R
213
star
36

gh

Minimalistic GitHub API client in R
R
213
star
37

cpp11

cpp11 helps you to interact with R objects using C++ code.
C++
190
star
38

keyring

πŸ” Access the system credential store from R
R
188
star
39

vdiffr

Visual regression testing and graphical diffing with testthat
C++
178
star
40

svglite

A lightweight svg graphics device for R
C++
177
star
41

pillar

Format columns with colour
R
172
star
42

withr

Methods For Temporarily Modifying Global State
R
167
star
43

ragg

Graphic Devices Based on AGG
C++
167
star
44

hugodown

Make websites with hugo and RMarkdown
R
165
star
45

ymlthis

write YAML for R Markdown, bookdown, blogdown, and more
R
162
star
46

rprojroot

Finding files in project subdirectories
R
147
star
47

coro

Coroutines for R
R
146
star
48

debugme

Easy and efficient debugging for R packages
R
142
star
49

available

Check if a package name is available to use
R
141
star
50

archive

R bindings to libarchive, supporting a large variety of archive formats
C++
139
star
51

ellipsis

Tools for Working with ...
R
138
star
52

later

Schedule an R function or formula to run after a specified period of time.
C++
135
star
53

gert

Simple git client for R
C
135
star
54

itdepends

R
133
star
55

rray

Simple Arrays
R
130
star
56

isoband

isoband: An R package to generate contour lines and polygons.
C++
130
star
57

fastmap

Fast map implementation for R
C++
128
star
58

prettyunits

Pretty, human readable formatting of quantities
JavaScript
125
star
59

desc

Manipulate DESCRIPTION files
R
121
star
60

tidyselect

A backend for functions taking tidyverse selections
R
120
star
61

gargle

Infrastructure for calling Google APIs from R, including auth
R
111
star
62

rcmdcheck

Run R CMD check from R and collect the results
R
109
star
63

evaluate

A version of eval for R that returns more information about what happened
R
106
star
64

prettycode

Syntax highlight R code in the terminal
R
99
star
65

sloop

S language OOP ⛡️
R
99
star
66

mockery

A mocking library for R.
R
98
star
67

revdepcheck

R package reverse dependency checking
R
95
star
68

clock

A Date-Time Library for R
R
94
star
69

pkgdepends

R Package Dependency Resolution
R
93
star
70

tree-sitter-r

C
93
star
71

systemfonts

System Native Font Handling in R
C++
91
star
72

lifecycle

Manage the life cycle of your exported functions and arguments
R
91
star
73

gtable

The layout packages that powers ggplot2
R
85
star
74

commonmark

High Performance CommonMark and Github Markdown Rendering in R
C
83
star
75

askpass

Password Entry for R, Git, and SSH
R
82
star
76

rappdirs

Find OS-specific directories to store data, caches, and logs. A port of python's AppDirs
R
81
star
77

zip

Platform independent zip compression via miniz
C
81
star
78

downlit

Syntax Highlighting and Automatic Linking
R
80
star
79

clisymbols

Unicode symbols for CLI applications, with fallbacks
R
76
star
80

sessioninfo

Print Session Information
R
72
star
81

ps

R package to query, list, manipulate system processes
C
71
star
82

pkgapi

Create a map of functions for an R package - WORK IN PROGRESS!
R
70
star
83

credentials

Tools for Managing SSH and Git Credentials
R
69
star
84

roxygen2md

Convert elements of roxygen documentation to markdown
R
68
star
85

sodium

R bindings to libsodium
R
68
star
86

backports

Reimplementations of Functions Introduced Since R-3.0.0
R
65
star
87

pkgbuild

Find tools needed to build R packages
R
65
star
88

cliapp

Rich Command Line Applications
R
61
star
89

webfakes

Fake web apps for HTTP testing R packages
C
60
star
90

generics

Common generic methods
R
58
star
91

diffviewer

HTML widget to visually compare files
JavaScript
56
star
92

liteq

Serverless R message queue using SQLite
R
56
star
93

pkgload

Simulate installing and loading a package
R
54
star
94

cachem

Key-value caches for R
R
53
star
95

carrier

Create standalone functions for remote execution
R
50
star
96

brio

Basic R Input Output
R
50
star
97

jose

Javascript Object Signing and Encryption for R
R
48
star
98

urlchecker

Run CRAN URL checks from older versions of R
R
45
star
99

pkgconfig

Private configuration for R packages
R
41
star
100

filelock

Cross platform file locking in R
R
39
star