{IssueTrackeR} is an R package designed to retrieve and manage GitHub issues directly within R. This package allows users to efficiently track and handle issues from their GitHub repositories.
This package relies a lot on the package {gh} to use the GitHub API and retrieve data from GitHub.
You can install the development version of {IssueTrackeR} from GitHub with:
# install.packages("remotes")
::install_github("TanguyBarthelemy/IssueTrackeR") remotes
library("IssueTrackeR")
#>
#> Attaching package: 'IssueTrackeR'
#> The following object is masked from 'package:base':
#>
#> append
To get information from a repository, you can call the functions
get_issues
, get_labels
and
get_milestones
# From online
<- get_issues(source = "online", owner = "jdemetra", repo = "jdplus-main", verbose = FALSE)
my_issues #> Running gh query ■■■■■■■■■■■■■■■■ 50% | ETA: 1sRunning gh query
#> ■■■■■■■■■■■■■■■■■■■■■■■ 75% | ETA: 1s
<- get_labels(source = "online", owner = "jdemetra", repo = "jdplus-main")
my_labels #> Reading labels... Done!
#> 12 labels found.
<- get_milestones(source = "online", owner = "jdemetra", repo = "jdplus-main")
my_milestones #> Reading milestones...
#> - backlog ... Done!
#> - 3.2.2 ... Done!
#> - 3.2.3 ... Done!
#> - 3.4.0 ... Done!
#> - 3.5.0 ... Done!
#> - 3.6.0 ... Done!
#> Done! 6 milestones found.
You can also write the datasets in local with
write_issues_to_dataset()
,
write_labels_to_dataset()
and
write_milestones_to_dataset()
:
write_issues_to_dataset(
issues = my_issues,
dataset_dir = tempdir()
)#> The datasets will be exported to C:\Users\UTZK0M\AppData\Local\Temp\RtmpeiMGSd\list_issues.yaml.
write_labels_to_dataset(
labels = my_labels,
dataset_dir = tempdir()
)#> The datasets will be exported to C:\Users\UTZK0M\AppData\Local\Temp\RtmpeiMGSd\list_labels.yaml.
write_milestones_to_dataset(
milestones = my_milestones,
dataset_dir = tempdir()
)#> The datasets will be exported to C:\Users\UTZK0M\AppData\Local\Temp\RtmpeiMGSd\list_milestones.yaml.
It is also possible to set option for a R session:
# The directory containing the yaml files in local
options(IssueTrackeR.dataset.dir = tempdir())
# The default GitHub owner
options(IssueTrackeR.owner = "jdemetra")
# the default GitHub repository
options(IssueTrackeR.repo = "jdplus-main")
Then it’s possible to read Issues from local yaml files:
# From local
<- get_issues(source = "local")
my_issues <- get_labels(source = "local")
my_labels <- get_milestones(source = "local") my_milestones
You can update your full database of issues, labels and milestones
with update_database()
:
# From online
update_database(verbose = FALSE)
#> Running gh query ■■■■■■■■■■■■■■■■ 50% | ETA: 1sRunning gh query
#> ■■■■■■■■■■■■■■■■■■■■■■■ 75% | ETA: 1s Running gh query ■■■■■■■■■■■ 33% | ETA:
#> 3sRunning gh query ■■■■■■■■■■■■■■■■ 50% | ETA: 2sRunning gh query
#> ■■■■■■■■■■■■■■■■■■■■■ 67% | ETA: 2sRunning gh query ■■■■■■■■■■■■■■■■■■■■■■■■■■
#> 83% | ETA: 1s
There are plenty of different filtering ways.
# Condition: issues containing "README" in its body OR title
<- filter_issues(
filtered_issues x = my_issues,
fields = c("body", "title"),
values = "README",
fields_logic_gate = "OR"
)
See ?filter_issues
and ?contains
to explore
more options.
Finally you can also sort your issues according to certain variable
(quantitative) and impose sole filtering factors (conditions as in
filter_issues()
), which will be applied one after the
other:
<- sort(
sorted_issues x = my_issues,
sorting_variables = list(list(object = "milestones", field = "due_on"),
list(object = "issues", field = "created_at")),
filtering_factors = list(list(values = "bug",
fields = "labels",
values_logic_gate = "OR"),
list(values = "package", fields = "title")),
milestones = my_milestones
)
Contributions are welcome! Please feel free to submit a pull request or report any issues.
This project is licensed under the MIT License. See the LICENSE file for details.