<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

The specified entity already exists.
RequestId:522ca922-2002-0088-699d-e8a9c4000000
Time:2019-04-01T15:14:00.5038368Z

</details>


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

The specified entity already exists.
RequestId:7e66c5cb-1002-006e-269d-e8b834000000
Time:2019-04-01T15:14:00.8338964Z

</details>


просто `type`


@shargon Sorry for this.


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

The specified entity already exists.
RequestId:36389048-1002-0003-729d-e8121a000000
Time:2019-04-01T15:14:18.7419246Z

</details>


It should be vlc_playlist_export.


@NicolasDorier this helper is better named `WithWaitCancellation` as per https://stackoverflow.com/questions/14524209/what-is-the-correct-way-to-cancel-an-async-operation-that-doesnt-accept-a-cance/14524565#14524565


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

The specified entity already exists.
RequestId:50dcf712-3002-001f-759d-e8ca0d000000
Time:2019-04-01T15:14:45.3548548Z

</details>


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

The specified entity already exists.
RequestId:02c3751e-6002-0103-019d-e8544f000000
Time:2019-04-01T15:14:45.4387427Z

</details>


"multiple requests based on the same JrdStatement" is not "theoretical". PSQL routines creates many requests per statement.


Changements effectués


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

The specified entity already exists.
RequestId:3638c425-1002-0003-429d-e8121a000000
Time:2019-04-01T15:15:35.9751067Z

</details>


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

The specified entity already exists.
RequestId:7d7a30f8-8002-00e8-4b9d-e8ece6000000
Time:2019-04-01T15:15:39.0507421Z

</details>


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

The specified entity already exists.
RequestId:3638c5a3-1002-0003-199d-e8121a000000
Time:2019-04-01T15:15:39.2190671Z

</details>


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

The specified entity already exists.
RequestId:f5287715-4002-0010-4f9d-e827fb000000
Time:2019-04-01T15:15:39.4142299Z

</details>


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

Internal Server Error, incidentId 8a022273-2934-47c1-a8b8-a09979b75eda.

---

* method:     createTask
* errorCode:  InternalServerError
* statusCode: 500
* time:       2019-04-01T15:15:50.668Z

</details>


Tu me diras si strlen fonctionne bien sur un entier.


@Vivekrajput20 always put only the most lines that you think can fail the try/except block, the rest outside of it


Nettoyé


Corrigé


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

Internal Server Error, incidentId 29e0f7e2-2e6e-46e2-9e49-cc9f917961ec.

---

* method:     createTask
* errorCode:  InternalServerError
* statusCode: 500
* time:       2019-04-01T15:17:41.001Z

</details>


I haven’t done a thorough audit of this, but the overall approach looks good to me.

One thing I noticed is that a signature can be “replayed” more than once.

It’s looks like you try to prevent that starting at [line 654](https://github.com/OpenBazaar/smart-contracts/blob/4686e1236adc87d0bf9a40a0bcb1e919216df195/contracts/escrow/Escrow_v1_0.sol#L654).

But I don't think that will work to prevent reuse of a signature.

For example, suppose the owner of `addressA` signs a release, and suppose that same signature is used during the first release and the second release (two separate transactions).

Then `addressHash` will be (abbreviating here) `SHA3(addressA,1)` for the first release and so `transactions[scriptHash].voted[SHA3(addressA,1)] ` will be set to `true`.

Then, for the second release, `addressHash` will be calculated as `SHA3(addressA,2)`. The value `transactions[scriptHash].voted[addressHash]` will be `false` so the `require` statement on [line 654](https://github.com/OpenBazaar/smart-contracts/blob/4686e1236adc87d0bf9a40a0bcb1e919216df195/contracts/escrow/Escrow_v1_0.sol#L654) will pass.

The best way I can think of to prevent reuse of a signature in multiple releases is to have the signature _cover_ `noOfReleases`. That is, `noOfReleases` must be part of what the signer signs.

Coupling this with the [proposed solution](https://github.com/OpenBazaar/smart-contracts/issues/17#issuecomment-474064950) to issue #17, we would have: `destinationsAndAmountsHash = H(H(destinations)||H(amounts)||noOfReleases)`.


Почему-то это сломало биндинг


bespotrebno


@Vivekrajput20 this code expects a `OPENWISP_RADIUS_PASSWORD_RESET_URLS` setting but it provide a default value. I added some code that checks the value, if the supplied value is garbage, the application won't start (fail early and loud approach).


Oops, yeah. I'll correct that.


Changé en newUser


Also note that, this helper is dangerous to use, because it doesn't actually cancel the task, it just abandons it.


test again


[R/gen_requirements_helpers.R:2:67:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L2) *style:* **Only use double-quotes.**
```r
read_package_lines_from_file = function(file_path, filter_words=c('::', 'library', 'require', 'p_load')) {
                                                                  ^~~~
```
[R/gen_requirements_helpers.R:2:73:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L2) *style:* **Only use double-quotes.**
```r
read_package_lines_from_file = function(file_path, filter_words=c('::', 'library', 'require', 'p_load')) {
                                                                        ^~~~~~~~~
```
[R/gen_requirements_helpers.R:2:84:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L2) *style:* **Only use double-quotes.**
```r
read_package_lines_from_file = function(file_path, filter_words=c('::', 'library', 'require', 'p_load')) {
                                                                                ^~~~~~~~~
```
[R/gen_requirements_helpers.R:2:95:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L2) *style:* **Only use double-quotes.**
```r
read_package_lines_from_file = function(file_path, filter_words=c('::', 'library', 'require', 'p_load')) {
                                                                                ^~~~~~~~
```
[R/gen_requirements_helpers.R:12:53:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L12) *style:* **Only use double-quotes.**
```r
  package_lines_re = paste(filter_words, collapse = '|')
                                                    ^~~
```
[R/gen_requirements_helpers.R:19:69:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L19) *style:* **Only use double-quotes.**
```r
read_package_lines_from_files = function(file_paths, filter_words=c('::', 'library', 'require', 'p_load')) {
                                                                    ^~~~
```
[R/gen_requirements_helpers.R:19:75:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L19) *style:* **Only use double-quotes.**
```r
read_package_lines_from_files = function(file_paths, filter_words=c('::', 'library', 'require', 'p_load')) {
                                                                          ^~~~~~~~~
```
[R/gen_requirements_helpers.R:19:86:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L19) *style:* **Only use double-quotes.**
```r
read_package_lines_from_files = function(file_paths, filter_words=c('::', 'library', 'require', 'p_load')) {
                                                                                ^~~~~~~~~
```
[R/gen_requirements_helpers.R:19:97:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L19) *style:* **Only use double-quotes.**
```r
read_package_lines_from_files = function(file_paths, filter_words=c('::', 'library', 'require', 'p_load')) {
                                                                                ^~~~~~~~
```
[R/gen_requirements_helpers.R:27:43:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L27) *warning:* **no visible binding for global variable ‘read_package_lines_from_file’**
```r
  package_lines_list = lapply(file_paths, read_package_lines_from_file)
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/gen_requirements_helpers.R:58:52:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L58) *warning:* **no visible global function definition for ‘match_package’**
```r
  match_list = lapply(package_regexes, function(r) match_package(candidate_lines, r))
                                                   ^~~~~~~~~~~~~
```
[R/gen_requirements_helpers.R:90:51:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L90) *style:* **Only use double-quotes.**
```r
append_version_requirement = function(pkg, eq_sym='>=', rm_missing=FALSE) {
                                                  ^~~~
```
[R/gen_requirements_helpers.R:99:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L99) *style:* **Lines should not be more than 120 characters.**
```r
  #' @return Character vector of versioned package names; \code{NA} if package unavailable and \code{isTRUE(rm_missing)}.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/gen_requirements_helpers.R:100:17:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L100) *warning:* **no visible global function definition for ‘safe_package_version’**
```r
  pkg_version = safe_package_version(pkg)
                ^~~~~~~~~~~~~~~~~~~~
```
[R/gen_requirements_helpers.R:107:14:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L107) *warning:* **no visible global function definition for ‘validate_eq_sym’**
```r
    eq_sym = validate_eq_sym(eq_sym)
             ^~~~~~~~~~~~~~~
```
[R/gen_requirements_helpers.R:115:62:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L115) *style:* **Only use double-quotes.**
```r
append_version_requirements = function(package_names, eq_sym='>=', rm_missing=FALSE) {
                                                             ^~~~
```
[R/gen_requirements_helpers.R:126:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L126) *warning:* **no visible global function definition for ‘append_version_requirement’**
```r
    append_version_requirement(p, eq_sym, rm_missing)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/gen_requirements_helpers.R:133:68:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements_helpers.R#L133) *style:* **Only use double-quotes.**
```r
write_requirements_file = function(package_requirements, file_path='requirements.txt') {
                                                                   ^~~~~~~~~~~~~~~~~~
```
[R/gen_requirements.R:35:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L35) *style:* **Lines should not be more than 120 characters.**
```r
#'   \item using a character vector to load; e.g. \code{pkg = 'testthat'; library(pkg, character.only = TRUE)} (will match \code{pkg} as package instead of \code{testthat})
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/gen_requirements.R:36:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L36) *style:* **Lines should not be more than 120 characters.**
```r
#'   \item using a string resembling a package load; e.g. \code{'library(fake.package)'} (will match \code{fake.package})
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/gen_requirements.R:51:45:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L51) *style:* **Only use double-quotes.**
```r
generate_requirements = function(glob_paths='*.R', output_path='requirements.txt', eq_sym='>=', rm_missing=FALSE) {
                                            ^~~~~
```
[R/gen_requirements.R:51:64:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L51) *style:* **Only use double-quotes.**
```r
generate_requirements = function(glob_paths='*.R', output_path='requirements.txt', eq_sym='>=', rm_missing=FALSE) {
                                                               ^~~~~~~~~~~~~~~~~~
```
[R/gen_requirements.R:51:91:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L51) *style:* **Only use double-quotes.**
```r
generate_requirements = function(glob_paths='*.R', output_path='requirements.txt', eq_sym='>=', rm_missing=FALSE) {
                                                                                ^~~~
```
[R/gen_requirements.R:53:24:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L53) *warning:* **no visible global function definition for ‘read_package_lines_from_files’**
```r
  package_text_lines = read_package_lines_from_files(file_paths)
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/gen_requirements.R:55:22:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L55) *warning:* **no visible global function definition for ‘match_packages’, Did you mean 'matched_packages'?**
```r
  matched_packages = match_packages(package_text_lines, PACKAGE_RES)
                     ^~~~~~~~~~~~~~
```
[R/gen_requirements.R:55:57:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L55) *warning:* **no visible binding for global variable ‘PACKAGE_RES’**
```r
  matched_packages = match_packages(package_text_lines, PACKAGE_RES)
                                                        ^~~~~~~~~~~
```
[R/gen_requirements.R:58:32:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L58) *warning:* **no visible global function definition for ‘append_version_requirements’**
```r
  versioned_matched_packages = append_version_requirements(sorted_matched_packages, eq_sym, rm_missing)
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/gen_requirements.R:60:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/gen_requirements.R#L60) *warning:* **no visible global function definition for ‘write_requirements_file’**
```r
  write_requirements_file(versioned_matched_packages, output_path)
  ^~~~~~~~~~~~~~~~~~~~~~~
```
[R/install_reqs.R:25:7:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L25) *warning:* **no visible global function definition for ‘vmess’, Did you mean 'loess'?**
```r
      vmess(sprintf(INSTALL, url, ""), verbose)
      ^~~~~
```
[R/install_reqs.R:25:21:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L25) *warning:* **no visible binding for global variable ‘INSTALL’**
```r
      vmess(sprintf(INSTALL, url, ""), verbose)
                    ^~~~~~~
```
[R/install_reqs.R:30:36:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L30) *warning:* **no visible binding for global variable ‘OTHER_FAIL’**
```r
                   message(sprintf(OTHER_FAIL, url))
                                   ^~~~~~~~~~
```
[R/install_reqs.R:62:30:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L62) *warning:* **no visible global function definition for ‘get_available_versions’**
```r
        available_versions = get_available_versions(i)
                             ^~~~~~~~~~~~~~~~~~~~~~
```
[R/install_reqs.R:63:9:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L63) *warning:* **no visible global function definition for ‘vmess’, Did you mean 'loess'?**
```r
        vmess(sprintf(NOT_INSTALLED, i), verbose)
        ^~~~~
```
[R/install_reqs.R:63:23:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L63) *warning:* **no visible binding for global variable ‘NOT_INSTALLED’**
```r
        vmess(sprintf(NOT_INSTALLED, i), verbose)
                      ^~~~~~~~~~~~~
```
[R/install_reqs.R:65:9:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L65) *warning:* **no visible global function definition for ‘vmess’, Did you mean 'loess'?**
```r
        vmess(sprintf(INSTALL, i, sprintf(INSTALL_VERSION, version)), verbose)
        ^~~~~
```
[R/install_reqs.R:65:23:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L65) *warning:* **no visible binding for global variable ‘INSTALL’**
```r
        vmess(sprintf(INSTALL, i, sprintf(INSTALL_VERSION, version)), verbose)
                      ^~~~~~~
```
[R/install_reqs.R:65:43:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L65) *warning:* **no visible binding for global variable ‘INSTALL_VERSION’**
```r
        vmess(sprintf(INSTALL, i, sprintf(INSTALL_VERSION, version)), verbose)
                                          ^~~~~~~~~~~~~~~
```
[R/install_reqs.R:70:38:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L70) *warning:* **no visible binding for global variable ‘OTHER_FAIL’**
```r
                     message(sprintf(OTHER_FAIL, i))
                                     ^~~~~~~~~~
```
[R/install_reqs.R:81:36:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L81) *warning:* **no visible binding for global variable ‘COMPS’**
```r
  comp = sub(paste0("^.*?(", paste(COMPS, collapse = "|"), ").*$"), "\\1", req)
                                   ^~~~~
```
[R/install_reqs.R:83:31:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L83) *warning:* **no visible binding for global variable ‘COMPS’**
```r
  split = strsplit(req, paste(COMPS, collapse = "|"))[[1]]
                              ^~~~~
```
[R/install_reqs.R:94:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L94) *warning:* **no visible global function definition for ‘vmess’, Did you mean 'loess'?**
```r
    vmess(sprintf(NOT_INSTALLED, package), verbose)
    ^~~~~
```
[R/install_reqs.R:94:19:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L94) *warning:* **no visible binding for global variable ‘NOT_INSTALLED’**
```r
    vmess(sprintf(NOT_INSTALLED, package), verbose)
                  ^~~~~~~~~~~~~
```
[R/install_reqs.R:97:23:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L97) *warning:* **no visible global function definition for ‘compare_version’, Did you mean 'compareVersion'?**
```r
    install_needed = !compare_version(installed[package], version, comp)
                      ^~~~~~~~~~~~~~~
```
[R/install_reqs.R:114:27:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L114) *warning:* **no visible global function definition for ‘process_versioned_requirement’**
```r
      processed_element = process_versioned_requirement(i)
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/install_reqs.R:119:24:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L119) *warning:* **no visible global function definition for ‘is_versioned_install_needed’**
```r
      install_needed = is_versioned_install_needed(package, version, comp, installed, verbose)
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/install_reqs.R:123:11:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L123) *warning:* **no visible global function definition for ‘vmess’, Did you mean 'loess'?**
```r
          vmess(sprintf(BAD_VERSION, package, installed[package]), verbose)
          ^~~~~
```
[R/install_reqs.R:123:25:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L123) *warning:* **no visible binding for global variable ‘BAD_VERSION’**
```r
          vmess(sprintf(BAD_VERSION, package, installed[package]), verbose)
                        ^~~~~~~~~~~
```
[R/install_reqs.R:126:30:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L126) *warning:* **no visible global function definition for ‘get_available_versions’**
```r
        available_versions = get_available_versions(package)
                             ^~~~~~~~~~~~~~~~~~~~~~
```
[R/install_reqs.R:136:11:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L136) *warning:* **no visible global function definition for ‘vmess’, Did you mean 'loess'?**
```r
          vmess(sprintf(NONE_EXISTS, package), verbose)
          ^~~~~
```
[R/install_reqs.R:136:25:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L136) *warning:* **no visible binding for global variable ‘NONE_EXISTS’**
```r
          vmess(sprintf(NONE_EXISTS, package), verbose)
                        ^~~~~~~~~~~
```
[R/install_reqs.R:148:40:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L148) *warning:* **no visible binding for global variable ‘OTHER_FAIL’**
```r
                       message(sprintf(OTHER_FAIL, i))
                                       ^~~~~~~~~~
```
[R/install_reqs.R:167:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L167) *style:* **Variable or function name should be snake_case.**
```r
  INSTALL = "Installing %s %s"
  ^~~~~~~
```
[R/install_reqs.R:167:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L167) *warning:* **local variable ‘INSTALL’ assigned but may not be used**
```r
  INSTALL = "Installing %s %s"
  ^~~~~~~
```
[R/install_reqs.R:168:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L168) *style:* **Variable or function name should be snake_case.**
```r
  INSTALL_VERSION = "at version %s"
  ^~~~~~~~~~~~~~~
```
[R/install_reqs.R:168:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L168) *warning:* **local variable ‘INSTALL_VERSION’ assigned but may not be used**
```r
  INSTALL_VERSION = "at version %s"
  ^~~~~~~~~~~~~~~
```
[R/install_reqs.R:169:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L169) *style:* **Variable or function name should be snake_case.**
```r
  NOT_INSTALLED = "NOTE: %s is not currently installed."
  ^~~~~~~~~~~~~
```
[R/install_reqs.R:169:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L169) *warning:* **local variable ‘NOT_INSTALLED’ assigned but may not be used**
```r
  NOT_INSTALLED = "NOTE: %s is not currently installed."
  ^~~~~~~~~~~~~
```
[R/install_reqs.R:170:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L170) *style:* **Variable or function name should be snake_case.**
```r
  BAD_VERSION = "NOTE: %s is current installed at version %s which is not sufficient."
  ^~~~~~~~~~~
```
[R/install_reqs.R:170:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L170) *warning:* **local variable ‘BAD_VERSION’ assigned but may not be used**
```r
  BAD_VERSION = "NOTE: %s is current installed at version %s which is not sufficient."
  ^~~~~~~~~~~
```
[R/install_reqs.R:171:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L171) *style:* **Variable or function name should be snake_case.**
```r
  NONE_EXISTS = "ERROR: No version exists for %s which meets requirements."
  ^~~~~~~~~~~
```
[R/install_reqs.R:171:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L171) *warning:* **local variable ‘NONE_EXISTS’ assigned but may not be used**
```r
  NONE_EXISTS = "ERROR: No version exists for %s which meets requirements."
  ^~~~~~~~~~~
```
[R/install_reqs.R:172:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L172) *style:* **Variable or function name should be snake_case.**
```r
  OTHER_FAIL = "ERROR: Requirement %s could not be satisified for some reason."
  ^~~~~~~~~~
```
[R/install_reqs.R:172:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L172) *warning:* **local variable ‘OTHER_FAIL’ assigned but may not be used**
```r
  OTHER_FAIL = "ERROR: Requirement %s could not be satisified for some reason."
  ^~~~~~~~~~
```
[R/install_reqs.R:174:15:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_reqs.R#L174) *warning:* **no visible global function definition for ‘get_installed’**
```r
  installed = get_installed(...)
              ^~~~~~~~~~~~~
```
[R/install_requirements.R:2:68:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L2) *style:* **Trailing whitespace is superfluous.**
```r
install_requirements <- function(requirements = "requirements.txt",
                                                                   ^
```
[R/install_requirements.R:5:67:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L5) *style:* **Trailing whitespace is superfluous.**
```r
                                 gen = !file.exists(requirements),
                                                                  ^
```
[R/install_requirements.R:6:79:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L6) *style:* **Commas should always have a space after.**
```r
                                 glob_paths = file.path(dirname(requirements),"*.R")) {
                                                                              ^
```
[R/install_requirements.R:18:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L18) *style:* **Lines should not be more than 120 characters.**
```r
  #' @param glob_paths Character vector of patterns for relative or absolute filepaths. Missing values will be ignored. See ?Sys.glob for more details.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/install_requirements.R:25:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L25) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(gen) generate_requirements(glob_paths = glob_paths,
    ^
```
[R/install_requirements.R:27:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L27) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/install_requirements.R:28:10:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L28) *warning:* **no visible global function definition for ‘process_requirements_file’**
```r
  reqs = process_requirements_file(requirements)
         ^~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/install_requirements.R:30:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L30) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(packrat) activate_packrat()
    ^
```
[R/install_requirements.R:30:15:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L30) *warning:* **no visible global function definition for ‘activate_packrat’**
```r
  if(packrat) activate_packrat()
              ^~~~~~~~~~~~~~~~
```
[R/install_requirements.R:33:38:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L33) *style:* **Trailing whitespace is superfluous.**
```r
                     dryrun = dryrun,
                                     ^
```
[R/install_requirements.R:34:40:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L34) *style:* **Trailing whitespace is superfluous.**
```r
                     verbose = verbose,
                                       ^
```
[R/install_requirements.R:37:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/install_requirements.R#L37) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(dryrun) cat("NOTE: This was just a dry run. No packages have been installed.")
    ^
```
[R/read_process_req_file.R:4:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L4) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/read_process_req_file.R:5:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L5) *style:* **Variable or function name should be snake_case.**
```r
  EXIST_ERR = 'The specified requirements file, %s, does not exist'
  ^~~~~~~~~
```
[R/read_process_req_file.R:5:15:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L5) *style:* **Only use double-quotes.**
```r
  EXIST_ERR = 'The specified requirements file, %s, does not exist'
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:6:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L6) *style:* **Variable or function name should be snake_case.**
```r
  EMPTY_ERR = 'The requirements file %s is empty.'
  ^~~~~~~~~
```
[R/read_process_req_file.R:6:15:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L6) *style:* **Only use double-quotes.**
```r
  EMPTY_ERR = 'The requirements file %s is empty.'
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:7:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L7) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(!file.exists(req)) stop(sprintf(EXIST_ERR, req))
    ^
```
[R/read_process_req_file.R:8:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L8) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/read_process_req_file.R:10:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L10) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(length(content) == 0) stop(sprintf(EMPTY_ERR, req))
    ^
```
[R/read_process_req_file.R:11:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L11) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/read_process_req_file.R:12:27:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L12) *style:* **Only use double-quotes.**
```r
  additional_files = grep('^ *\\-r', content, value=TRUE)
                          ^~~~~~~~~
```
[R/read_process_req_file.R:12:52:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L12) *style:* **Put spaces around all infix operators.**
```r
  additional_files = grep('^ *\\-r', content, value=TRUE)
                                                  ~^~
```
[R/read_process_req_file.R:13:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L13) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(length(additional_files) > 0){
    ^
```
[R/read_process_req_file.R:14:8:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L14) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    for(af in additional_files){
       ^
```
[R/read_process_req_file.R:15:40:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L15) *style:* **Only use double-quotes.**
```r
      tmp = read_requirements_file(sub('^ *\\-r *','',af))
                                       ^~~~~~~~~~~
```
[R/read_process_req_file.R:15:52:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L15) *style:* **Commas should always have a space after.**
```r
      tmp = read_requirements_file(sub('^ *\\-r *','',af))
                                                   ^
```
[R/read_process_req_file.R:15:52:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L15) *style:* **Only use double-quotes.**
```r
      tmp = read_requirements_file(sub('^ *\\-r *','',af))
                                                   ^~
```
[R/read_process_req_file.R:15:55:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L15) *style:* **Commas should always have a space after.**
```r
      tmp = read_requirements_file(sub('^ *\\-r *','',af))
                                                      ^
```
[R/read_process_req_file.R:23:28:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L23) *style:* **Only use double-quotes.**
```r
  content = content[!grepl('^ *#',content)]
                           ^~~~~~
```
[R/read_process_req_file.R:23:35:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L23) *style:* **Commas should always have a space after.**
```r
  content = content[!grepl('^ *#',content)]
                                  ^
```
[R/read_process_req_file.R:24:28:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L24) *style:* **Only use double-quotes.**
```r
  content = content[!grepl('^ *\\-r',content)]
                           ^~~~~~~~~
```
[R/read_process_req_file.R:24:38:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L24) *style:* **Commas should always have a space after.**
```r
  content = content[!grepl('^ *\\-r',content)]
                                     ^
```
[R/read_process_req_file.R:29:18:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L29) *style:* **Only use double-quotes.**
```r
  git_req = grep('^git[\\+:]',content,value=TRUE)
                 ^~~~~~~~~~~~
```
[R/read_process_req_file.R:29:31:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L29) *style:* **Commas should always have a space after.**
```r
  git_req = grep('^git[\\+:]',content,value=TRUE)
                              ^
```
[R/read_process_req_file.R:29:39:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L29) *style:* **Commas should always have a space after.**
```r
  git_req = grep('^git[\\+:]',content,value=TRUE)
                                      ^
```
[R/read_process_req_file.R:29:44:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L29) *style:* **Put spaces around all infix operators.**
```r
  git_req = grep('^git[\\+:]',content,value=TRUE)
                                          ~^~
```
[R/read_process_req_file.R:30:18:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L30) *style:* **Only use double-quotes.**
```r
  svn_req = grep('^svn\\+',content,value=TRUE)
                 ^~~~~~~~~
```
[R/read_process_req_file.R:30:28:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L30) *style:* **Commas should always have a space after.**
```r
  svn_req = grep('^svn\\+',content,value=TRUE)
                           ^
```
[R/read_process_req_file.R:30:36:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L30) *style:* **Commas should always have a space after.**
```r
  svn_req = grep('^svn\\+',content,value=TRUE)
                                   ^
```
[R/read_process_req_file.R:30:41:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L30) *style:* **Put spaces around all infix operators.**
```r
  svn_req = grep('^svn\\+',content,value=TRUE)
                                       ~^~
```
[R/read_process_req_file.R:31:19:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L31) *style:* **Only use double-quotes.**
```r
  bioc_req = grep('^bioc\\+',content,value=TRUE)
                  ^~~~~~~~~~
```
[R/read_process_req_file.R:31:30:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L31) *style:* **Commas should always have a space after.**
```r
  bioc_req = grep('^bioc\\+',content,value=TRUE)
                             ^
```
[R/read_process_req_file.R:31:38:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L31) *style:* **Commas should always have a space after.**
```r
  bioc_req = grep('^bioc\\+',content,value=TRUE)
                                     ^
```
[R/read_process_req_file.R:31:43:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L31) *style:* **Put spaces around all infix operators.**
```r
  bioc_req = grep('^bioc\\+',content,value=TRUE)
                                         ~^~
```
[R/read_process_req_file.R:32:18:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L32) *style:* **Only use double-quotes.**
```r
  url_req = grep('^https?:',content,value=TRUE)
                 ^~~~~~~~~~
```
[R/read_process_req_file.R:32:29:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L32) *style:* **Commas should always have a space after.**
```r
  url_req = grep('^https?:',content,value=TRUE)
                            ^
```
[R/read_process_req_file.R:32:37:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L32) *style:* **Commas should always have a space after.**
```r
  url_req = grep('^https?:',content,value=TRUE)
                                    ^
```
[R/read_process_req_file.R:32:42:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L32) *style:* **Put spaces around all infix operators.**
```r
  url_req = grep('^https?:',content,value=TRUE)
                                        ~^~
```
[R/read_process_req_file.R:41:28:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L41) *warning:* **no visible binding for global variable ‘COMPS’**
```r
  version_req = grep(paste(COMPS,collapse='|'),content,value=TRUE)
                           ^~~~~
```
[R/read_process_req_file.R:41:34:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L41) *style:* **Commas should always have a space after.**
```r
  version_req = grep(paste(COMPS,collapse='|'),content,value=TRUE)
                                 ^
```
[R/read_process_req_file.R:41:42:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L41) *style:* **Put spaces around all infix operators.**
```r
  version_req = grep(paste(COMPS,collapse='|'),content,value=TRUE)
                                        ~^~
```
[R/read_process_req_file.R:41:43:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L41) *style:* **Only use double-quotes.**
```r
  version_req = grep(paste(COMPS,collapse='|'),content,value=TRUE)
                                          ^~~
```
[R/read_process_req_file.R:41:48:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L41) *style:* **Commas should always have a space after.**
```r
  version_req = grep(paste(COMPS,collapse='|'),content,value=TRUE)
                                               ^
```
[R/read_process_req_file.R:41:56:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L41) *style:* **Commas should always have a space after.**
```r
  version_req = grep(paste(COMPS,collapse='|'),content,value=TRUE)
                                                       ^
```
[R/read_process_req_file.R:41:61:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L41) *style:* **Put spaces around all infix operators.**
```r
  version_req = grep(paste(COMPS,collapse='|'),content,value=TRUE)
                                                           ~^~
```
[R/read_process_req_file.R:42:30:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L42) *style:* **Commas should always have a space after.**
```r
  tmp = strsplit(version_req,paste(COMPS,collapse='|'))
                             ^
```
[R/read_process_req_file.R:42:36:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L42) *warning:* **no visible binding for global variable ‘COMPS’**
```r
  tmp = strsplit(version_req,paste(COMPS,collapse='|'))
                                   ^~~~~
```
[R/read_process_req_file.R:42:42:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L42) *style:* **Commas should always have a space after.**
```r
  tmp = strsplit(version_req,paste(COMPS,collapse='|'))
                                         ^
```
[R/read_process_req_file.R:42:50:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L42) *style:* **Put spaces around all infix operators.**
```r
  tmp = strsplit(version_req,paste(COMPS,collapse='|'))
                                                ~^~
```
[R/read_process_req_file.R:42:51:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L42) *style:* **Only use double-quotes.**
```r
  tmp = strsplit(version_req,paste(COMPS,collapse='|'))
                                                  ^~~
```
[R/read_process_req_file.R:43:25:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L43) *style:* **Commas should always have a space after.**
```r
  pkg_name = vapply(tmp,`[[`,"pkg",1)
                        ^
```
[R/read_process_req_file.R:43:30:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L43) *style:* **Commas should always have a space after.**
```r
  pkg_name = vapply(tmp,`[[`,"pkg",1)
                             ^
```
[R/read_process_req_file.R:43:36:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L43) *style:* **Commas should always have a space after.**
```r
  pkg_name = vapply(tmp,`[[`,"pkg",1)
                                   ^
```
[R/read_process_req_file.R:44:29:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L44) *warning:* **no visible global function definition for ‘legal_r_package_name’**
```r
  version_req = version_req[legal_r_package_name(trimws(pkg_name))]
                            ^~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:50:27:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L50) *style:* **Only use double-quotes.**
```r
  local_source_req = grep('\\.tar\\.gz$',content,value=TRUE)
                          ^~~~~~~~~~~~~~
```
[R/read_process_req_file.R:50:42:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L50) *style:* **Commas should always have a space after.**
```r
  local_source_req = grep('\\.tar\\.gz$',content,value=TRUE)
                                         ^
```
[R/read_process_req_file.R:50:50:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L50) *style:* **Commas should always have a space after.**
```r
  local_source_req = grep('\\.tar\\.gz$',content,value=TRUE)
                                                 ^
```
[R/read_process_req_file.R:50:55:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L50) *style:* **Put spaces around all infix operators.**
```r
  local_source_req = grep('\\.tar\\.gz$',content,value=TRUE)
                                                     ~^~
```
[R/read_process_req_file.R:51:24:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L51) *style:* **Only use double-quotes.**
```r
  local_win_req = grep('\\.zip$',content,value=TRUE)
                       ^~~~~~~~~
```
[R/read_process_req_file.R:51:34:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L51) *style:* **Commas should always have a space after.**
```r
  local_win_req = grep('\\.zip$',content,value=TRUE)
                                 ^
```
[R/read_process_req_file.R:51:42:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L51) *style:* **Commas should always have a space after.**
```r
  local_win_req = grep('\\.zip$',content,value=TRUE)
                                         ^
```
[R/read_process_req_file.R:51:47:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L51) *style:* **Put spaces around all infix operators.**
```r
  local_win_req = grep('\\.zip$',content,value=TRUE)
                                             ~^~
```
[R/read_process_req_file.R:52:24:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L52) *style:* **Only use double-quotes.**
```r
  local_mac_req = grep('\\.tgz$',content,value=TRUE)
                       ^~~~~~~~~
```
[R/read_process_req_file.R:52:34:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L52) *style:* **Commas should always have a space after.**
```r
  local_mac_req = grep('\\.tgz$',content,value=TRUE)
                                 ^
```
[R/read_process_req_file.R:52:42:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L52) *style:* **Commas should always have a space after.**
```r
  local_mac_req = grep('\\.tgz$',content,value=TRUE)
                                         ^
```
[R/read_process_req_file.R:52:47:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L52) *style:* **Put spaces around all infix operators.**
```r
  local_mac_req = grep('\\.tgz$',content,value=TRUE)
                                             ~^~
```
[R/read_process_req_file.R:53:34:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L53) *style:* **Commas should always have a space after.**
```r
  local_req = c(local_source_req,local_win_req,local_mac_req)
                                 ^
```
[R/read_process_req_file.R:53:48:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L53) *style:* **Commas should always have a space after.**
```r
  local_req = c(local_source_req,local_win_req,local_mac_req)
                                               ^
```
[R/read_process_req_file.R:61:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L61) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/read_process_req_file.R:62:13:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L62) *warning:* **no visible global function definition for ‘read_requirements_file’**
```r
  content = read_requirements_file(req)
            ^~~~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:63:13:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L63) *warning:* **no visible global function definition for ‘remove_comments_from_req’**
```r
  content = remove_comments_from_req(content)
            ^~~~~~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:65:12:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L65) *warning:* **no visible global function definition for ‘capture_special_installs’**
```r
  output = capture_special_installs(content)
           ^~~~~~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:68:22:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L68) *warning:* **no visible global function definition for ‘capture_versioned_requirements’**
```r
  output$versioned = capture_versioned_requirements(content)
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:70:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L70) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/read_process_req_file.R:71:18:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L71) *warning:* **no visible global function definition for ‘capture_local_requirements’**
```r
  output$local = capture_local_requirements(content)
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:74:32:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L74) *warning:* **no visible global function definition for ‘legal_r_package_name’**
```r
  output$unversioned = content[legal_r_package_name(trimws(content))]
                               ^~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:76:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L76) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/read_process_req_file.R:77:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L77) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(length(content) > 0){
    ^
```
[R/read_process_req_file.R:78:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L78) *style:* **Variable or function name should be snake_case.**
```r
    RESOLUTION_ERR = 'Not all requirements are allowed: %s'
    ^~~~~~~~~~~~~~
```
[R/read_process_req_file.R:78:22:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L78) *style:* **Only use double-quotes.**
```r
    RESOLUTION_ERR = 'Not all requirements are allowed: %s'
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/read_process_req_file.R:79:33:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L79) *style:* **Commas should always have a space after.**
```r
    stop(sprintf(RESOLUTION_ERR,paste(content,collapse=', ')))
                                ^
```
[R/read_process_req_file.R:79:47:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L79) *style:* **Commas should always have a space after.**
```r
    stop(sprintf(RESOLUTION_ERR,paste(content,collapse=', ')))
                                              ^
```
[R/read_process_req_file.R:79:55:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L79) *style:* **Put spaces around all infix operators.**
```r
    stop(sprintf(RESOLUTION_ERR,paste(content,collapse=', ')))
                                                     ~^~
```
[R/read_process_req_file.R:79:56:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L79) *style:* **Only use double-quotes.**
```r
    stop(sprintf(RESOLUTION_ERR,paste(content,collapse=', ')))
                                                       ^~~~
```
[R/read_process_req_file.R:81:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/read_process_req_file.R#L81) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/requirements_helpers.R:3:17:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L3) *style:* **Put spaces around all infix operators.**
```r
           error=function(x){packrat::init();packrat::on()})
               ~^~
```
[R/requirements_helpers.R:3:29:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L3) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
           error=function(x){packrat::init();packrat::on()})
                            ^
```
[R/requirements_helpers.R:12:16:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L12) *warning:* **no visible binding for global variable ‘CANONICAL_PACKAGE_NAME_RE_STANDALONE’**
```r
  return(grepl(CANONICAL_PACKAGE_NAME_RE_STANDALONE,name))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/requirements_helpers.R:12:53:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L12) *style:* **Commas should always have a space after.**
```r
  return(grepl(CANONICAL_PACKAGE_NAME_RE_STANDALONE,name))
                                                    ^
```
[R/requirements_helpers.R:58:37:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L58) *style:* **Only use double-quotes.**
```r
  compatible_version_wildcard = sub('(.*\\.)(.+)', '\\1*', target)
                                    ^~~~~~~~~~~~~
```
[R/requirements_helpers.R:58:52:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L58) *style:* **Only use double-quotes.**
```r
  compatible_version_wildcard = sub('(.*\\.)(.+)', '\\1*', target)
                                                   ^~~~~~
```
[R/requirements_helpers.R:61:58:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L61) *style:* **Only use double-quotes.**
```r
  compare_version(existing, compatible_version_wildcard, '==') &
                                                         ^~~~
```
[R/requirements_helpers.R:62:39:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L62) *style:* **Only use double-quotes.**
```r
    compare_version(existing, target, '>=')
                                      ^~~~
```
[R/requirements_helpers.R:85:28:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L85) *warning:* **no visible global function definition for ‘compare_compatible_version’**
```r
  if (comp == "~=") return(compare_compatible_version(existing, target))
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/requirements_helpers.R:88:35:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L88) *style:* **Only use double-quotes.**
```r
  is_equality_check = comp %in% c('>=', '<=', '~=', '==')
                                  ^~~~
```
[R/requirements_helpers.R:88:41:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L88) *style:* **Only use double-quotes.**
```r
  is_equality_check = comp %in% c('>=', '<=', '~=', '==')
                                        ^~~~
```
[R/requirements_helpers.R:88:47:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L88) *style:* **Only use double-quotes.**
```r
  is_equality_check = comp %in% c('>=', '<=', '~=', '==')
                                              ^~~~
```
[R/requirements_helpers.R:88:53:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L88) *style:* **Only use double-quotes.**
```r
  is_equality_check = comp %in% c('>=', '<=', '~=', '==')
                                                    ^~~~
```
[R/requirements_helpers.R:91:6:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L91) *warning:* **no visible global function definition for ‘equivalent_version’**
```r
  is_equivalent_version = equivalent_version(existing, target)
     ^~~~~~~~~~~~~~~~~~
```
[R/requirements_helpers.R:97:31:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L97) *style:* **Only use double-quotes.**
```r
  non_wild_card_target = gsub('*', '0', target, fixed = TRUE)
                              ^~~
```
[R/requirements_helpers.R:97:36:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L97) *style:* **Only use double-quotes.**
```r
  non_wild_card_target = gsub('*', '0', target, fixed = TRUE)
                                   ^~~
```
[R/requirements_helpers.R:109:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L109) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(!is.null(dummy)){
    ^
```
[R/requirements_helpers.R:112:34:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L112) *style:* **Commas should always have a space after.**
```r
    return(installed.packages()[,3])
                                 ^
```
[R/requirements_helpers.R:139:20:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L139) *style:* **Commas should always have a space after.**
```r
vmess = function(x,v){
                   ^
```
[R/requirements_helpers.R:145:5:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/R/requirements_helpers.R#L145) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(v){
    ^
```
[tests/testthat/test_gen_requirements.R:1:9:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L1) *style:* **Only use double-quotes.**
```r
context('gen_requirements')
        ^~~~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:3:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L3) *style:* **Variable or function name should be snake_case.**
```r
TMP_DIR = tempdir()
^~~~~~~
```
[tests/testthat/test_gen_requirements.R:4:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L4) *style:* **Variable or function name should be snake_case.**
```r
FILE_1 = file.path(TMP_DIR, 'file_1.R')
^~~~~~
```
[tests/testthat/test_gen_requirements.R:4:29:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L4) *style:* **Only use double-quotes.**
```r
FILE_1 = file.path(TMP_DIR, 'file_1.R')
                            ^~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:5:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L5) *style:* **Variable or function name should be snake_case.**
```r
FILE_2 = file.path(TMP_DIR, 'file_2.R')
^~~~~~
```
[tests/testthat/test_gen_requirements.R:5:29:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L5) *style:* **Only use double-quotes.**
```r
FILE_2 = file.path(TMP_DIR, 'file_2.R')
                            ^~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:6:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L6) *style:* **Variable or function name should be snake_case.**
```r
FILE_3 = file.path(TMP_DIR, 'file_3.R')
^~~~~~
```
[tests/testthat/test_gen_requirements.R:6:29:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L6) *style:* **Only use double-quotes.**
```r
FILE_3 = file.path(TMP_DIR, 'file_3.R')
                            ^~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:8:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L8) *style:* **Variable or function name should be snake_case.**
```r
FILE_TEXT_1 = c(
^~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:9:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L9) *style:* **Only use double-quotes.**
```r
  'library(fake.package, quietly = TRUE)',
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:10:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L10) *style:* **Only use double-quotes.**
```r
  'require(testthat)',
  ^~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:12:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L12) *style:* **Only use double-quotes.**
```r
  'requirements::requirements()',
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:13:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L13) *style:* **Only use double-quotes.**
```r
  'devtools:::fake_function()',
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:14:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L14) *style:* **Only use double-quotes.**
```r
  'stringr::function(readr:::function)',
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:15:3:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L15) *style:* **Only use double-quotes.**
```r
  'dt[, x := 1]\n'
  ^~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:18:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L18) *style:* **Variable or function name should be snake_case.**
```r
FILE_TEXT_2 = c('library(packrat)',
^~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:18:17:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L18) *style:* **Only use double-quotes.**
```r
FILE_TEXT_2 = c('library(packrat)',
                ^~~~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:19:17:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L19) *style:* **Only use double-quotes.**
```r
                'library(fake_package)\n')
                ^~~~~~~~~~~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:20:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L20) *style:* **Variable or function name should be snake_case.**
```r
FILE_TEXT_3 = ''
^~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:20:15:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L20) *style:* **Only use double-quotes.**
```r
FILE_TEXT_3 = ''
              ^~
```
[tests/testthat/test_gen_requirements.R:22:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L22) *style:* **Variable or function name should be snake_case.**
```r
FILES = c(FILE_1, FILE_2, FILE_3)
^~~~~
```
[tests/testthat/test_gen_requirements.R:23:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L23) *style:* **Variable or function name should be snake_case.**
```r
FILE_TEXTS = list(FILE_TEXT_1, FILE_TEXT_2, FILE_TEXT_3)
^~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:25:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L25) *style:* **Variable or function name should be snake_case.**
```r
PACKAGE_LINES_1 = FILE_TEXT_1[-length(FILE_TEXT_1)]
^~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:26:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L26) *style:* **Variable or function name should be snake_case.**
```r
PACKAGE_LINES_2 = trimws(FILE_TEXT_2)
^~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:27:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L27) *style:* **Variable or function name should be snake_case.**
```r
PACKAGE_LINES_3 = character(0)
^~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:29:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L29) *style:* **Variable or function name should be snake_case.**
```r
PACKAGE_LINES_ALL = c(PACKAGE_LINES_1, PACKAGE_LINES_2, PACKAGE_LINES_3)
^~~~~~~~~~~~~~~~~
```
[tests/testthat/test_gen_requirements.R:30:1:](https://github.com/bmewing/requirements/blob/65cb5e6934c948b259b937f3f74e5109acaf7310/tests/testthat/test_gen_requirements.R#L30) *style:* **Variable or function name should be snake_case.**
```r
PACKAGE_LINES_ALL = unique(PACKAGE_LINES_ALL)
^~~~~~~~~~~~~~~~~
```


@lacrioque or @dominikvitt : can you gulpify ? [I still have issue with gulp on fedora](https://stackoverflow.com/questions/55380575/gulp-babel-shown-syntax-error-on-comments) .


I compared 2 pdfs, the color highlighting is shown rightly and the differences are right. But when I am printing the result, if there are multiple differences I would expect the PageArea to have multiple x,y coordinate sets. But it is just giving 1 set(x1,y1,x2,y2).  So wondering how to provide x,y coordinates if there are multiple regions to be excluded in 1 page.
Is there a tool that you would recommend to find the x,y coordinates in a pdf.  Thanks much!


for consistency, PMD 6.0.0 would be a major release, wouldn't it?


Successfully aliased the URL <https://magento-venia-pgktihybli.now.sh> to the following aliases.

* https://magento-venia.now.sh
* https://veniapwa.com


# work on exercise 2


This commit has been mentioned on **Discourse Meta**. There might be relevant details there:

https://meta.discourse.org/t/svg-broken-only-in-firefox-when-discourse-copies-it-from-external-url/112835/12


Successfully aliased the URL <https://imagineadrian-f0k78evf7.now.sh> to the following aliases.

* https://imagineadrian.com
* https://imagineadrian-git-master.hadrianix.now.sh


@smithsp: Replying to an old commit is not the appropriate forum to bring this up and will likely not get noticed by anyone. Open a Trac ticket if you think edit is broken.

https://trac.macports.org/newticket


@janschulte Does this mean we might have the same problem again should our servers be slower to respond (e.g. during high work load senario's).


Successfully aliased the URL <https://imagineadrian-iv1h6513g.now.sh> to the following aliases.

* https://imagineadrian.com
* https://imagineadrian-git-master.hadrianix.now.sh