--- title: "Introduction" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Introduction} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ## Basic idea Based on the definition proposed by [freecodecamp](https://www.freecodecamp.org/news/gitignore-what-is-it-and-how-to-add-to-repo/): > The .gitignore file is a text file that tells Git which files or folders to ignore in a project. A local .gitignore file is usually placed in the root directory of a project. You can also create a global .gitignore file and any entries in that file will be ignored in all of your Git repositories. For any project, it is therefore important to have a `.gitignore` file that is complete and accurate. The package `gitignore` provides a simple R interface to the [gitignore.io](https://www.toptal.com/developers/gitignore) API. It can be used to fetch gitignore templates that can be included into the `.gitignore` file of you git repository. The `gitignore` R package can be used with R package, R Studio project or with any `.gitignore` file. Note that by default, the `usethis` package populates the `.gitignore` for the R language when you create a R project. However, it is common to use many different programming languages in a project such as `LaTeX`, `python`, `matlab`, `julia` and so on. This is where the `gitignore` package shines as it can be used to programmatically modify the `.gitignore` file of your project. `gitignore` is a simple R package that provide an interface to query [gitignore.io](https://www.toptal.com/developers/gitignore) to fetch gitignore templates that can be included in the .gitignore file. More than 450 templates are currently available. There are actually two functions in the package: - `gi_available_templates()`: to get a list of all templates available on [gitignore.io](https://www.toptal.com/developers/gitignore). - `gi_fetch_templates()`: to get one or more template(s). This function can copy the returned template(s) in the clipboard as well as happening the the `.gitignore` file in your project directory. ## Examples ```r library(gitignore) ``` Get the list of all available templates from [gitignore.io](https://www.toptal.com/developers/gitignore): ```r head(gi_available_templates(), 50) #> [1] "1c" "1c-bitrix" #> [3] "a-frame" "actionscript" #> [5] "ada" "adobe" #> [7] "advancedinstaller" "adventuregamestudio" #> [9] "agda" "al" #> [11] "alteraquartusii" "altium" #> [13] "amplify" "android" #> [15] "androidstudio" "angular" #> [17] "anjuta" "ansible" #> [19] "ansibletower" "apachecordova" #> [21] "apachehadoop" "appbuilder" #> [23] "appceleratortitanium" "appcode" #> [25] "appcode+all" "appcode+iml" #> [27] "appengine" "aptanastudio" #> [29] "arcanist" "archive" #> [31] "archives" "archlinuxpackages" #> [33] "asdf" "aspnetcore" #> [35] "assembler" "astro" #> [37] "ate" "atmelstudio" #> [39] "ats" "audio" #> [41] "autohotkey" "automationstudio" #> [43] "autotools" "autotools+strict" #> [45] "awr" "azurefunctions" #> [47] "azurite" "backup" #> [49] "ballerina" "basercms" ``` The function `gi_fetch_templates()` can be used to fetch particular template(s). For example, one could want to get the `java` and `c++` templates as follow: ```r gi_fetch_templates(c("java", "c++")) #> # Created by https://www.toptal.com/developers/gitignore/api/java,c++ #> # Edit at https://www.toptal.com/developers/gitignore?templates=java,c++ #> #> ### C++ ### #> # Prerequisites #> *.d #> #> # Compiled Object files #> *.slo #> *.lo #> *.o #> *.obj #> #> # Precompiled Headers #> *.gch #> *.pch #> #> # Compiled Dynamic libraries #> *.so #> *.dylib #> *.dll #> #> # Fortran module files #> *.mod #> *.smod #> #> # Compiled Static libraries #> *.lai #> *.la #> *.a #> *.lib #> #> # Executables #> *.exe #> *.out #> *.app #> #> ### Java ### #> # Compiled class file #> *.class #> #> # Log file #> *.log #> #> # BlueJ files #> *.ctxt #> #> # Mobile Tools for Java (J2ME) #> .mtj.tmp/ #> #> # Package Files # #> *.jar #> *.war #> *.nar #> *.ear #> *.zip #> *.tar.gz #> *.rar #> #> # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml #> hs_err_pid* #> replay_pid* #> #> # End of https://www.toptal.com/developers/gitignore/api/java,c++ ``` By default, the template(s) are not copied into the clipboard, this can be changed by setting `copy_to_clipboard = TRUE`: ```r gi_fetch_templates(c("java", "c++"), copy_to_clipboard = TRUE) ``` Additionally, you can tell `gi_fetch_templates()` to append automatically the `.gitignore` file in your project by setting `append_gitignore = TRUE`: ```r gi_fetch_templates(c("R"), append_gitignore = TRUE) ``` It is also possible to specify the `.gitignore` file to be modified by specifying the `gitignore_file` argument. ```r f <- file.path(tempdir(), ".gitignore") file.create(f) #> [1] TRUE gi_fetch_templates("R", gitignore_file = f, append_gitignore = TRUE) #> # Created by https://www.toptal.com/developers/gitignore/api/r #> # Edit at https://www.toptal.com/developers/gitignore?templates=r #> #> ### R ### #> # History files #> .Rhistory #> .Rapp.history #> #> # Session Data files #> .RData #> .RDataTmp #> #> # User-specific files #> .Ruserdata #> #> # Example code in package build process #> *-Ex.R #> #> # Output files from R CMD build #> /*.tar.gz #> #> # Output files from R CMD check #> /*.Rcheck/ #> #> # RStudio files #> .Rproj.user/ #> #> # produced vignettes #> vignettes/*.html #> vignettes/*.pdf #> #> # OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3 #> .httr-oauth #> #> # knitr and R markdown default cache directories #> *_cache/ #> /cache/ #> #> # Temporary files created by R markdown #> *.utf8.md #> *.knit.md #> #> # R Environment Variables #> .Renviron #> #> # pkgdown site #> docs/ #> #> # translation temp files #> po/*~ #> #> # RStudio Connect folder #> rsconnect/ #> #> ### R.Bookdown Stack ### #> # R package: bookdown caching files #> /*_files/ #> #> # End of https://www.toptal.com/developers/gitignore/api/r #> ● .gitignore file successfully modified. readLines(f) #> [1] "# Created by https://www.toptal.com/developers/gitignore/api/r" #> [2] "# Edit at https://www.toptal.com/developers/gitignore?templates=r" #> [3] "" #> [4] "### R ###" #> [5] "# History files" #> [6] ".Rhistory" #> [7] ".Rapp.history" #> [8] "# Session Data files" #> [9] ".RData" #> [10] ".RDataTmp" #> [11] "# User-specific files" #> [12] ".Ruserdata" #> [13] "# Example code in package build process" #> [14] "*-Ex.R" #> [15] "# Output files from R CMD build" #> [16] "/*.tar.gz" #> [17] "# Output files from R CMD check" #> [18] "/*.Rcheck/" #> [19] "# RStudio files" #> [20] ".Rproj.user/" #> [21] "# produced vignettes" #> [22] "vignettes/*.html" #> [23] "vignettes/*.pdf" #> [24] "# OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3" #> [25] ".httr-oauth" #> [26] "# knitr and R markdown default cache directories" #> [27] "*_cache/" #> [28] "/cache/" #> [29] "# Temporary files created by R markdown" #> [30] "*.utf8.md" #> [31] "*.knit.md" #> [32] "# R Environment Variables" #> [33] ".Renviron" #> [34] "# pkgdown site" #> [35] "docs/" #> [36] "# translation temp files" #> [37] "po/*~" #> [38] "# RStudio Connect folder" #> [39] "rsconnect/" #> [40] "### R.Bookdown Stack ###" #> [41] "# R package: bookdown caching files" #> [42] "/*_files/" #> [43] "# End of https://www.toptal.com/developers/gitignore/api/r" ```