diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 0000000..e0b443a --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,68 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, develop] + pull_request: + branches: [main, develop] + +name: R-CMD-check + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + - {os: macos-latest, r: 'release'} + - {os: windows-latest, r: 'release'} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} + - {os: ubuntu-latest, r: 'oldrel-1'} + + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes + + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' # See 'Supported distributions' for available options + java-version: '17' + + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - name: Set up for RProtoBuf on Windows + if: runner.os == 'Windows' + run: choco install protoc + + - name: Set up for RProtoBuf on macos + if: runner.os == 'macOS' + run: brew install protobuf + + - name: Set up for RProtoBuf on ubuntu + if: runner.os == 'Linux' + run: sudo apt-get update -y && sudo apt-get install protobuf-compiler libprotobuf-dev libprotoc-dev + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rcmdcheck + needs: check + + - uses: r-lib/actions/check-r-package@v2 + with: + upload-snapshots: true + build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")' + error-on: '"error"' diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 0000000..b74596b --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,42 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, develop] + pull_request: + branches: [main, develop] + +name: lint + +jobs: + lint: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' # See 'Supported distributions' for available options + java-version: '17' + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - name: Set up for RProtoBuf + run: sudo apt-get update -y && sudo apt-get install protobuf-compiler libprotobuf-dev libprotoc-dev + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::lintr, local::. + needs: lint + + - name: Lint + run: lintr::lint_package() + shell: Rscript {0} + env: + LINTR_ERROR_ON_LINT: true diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 0d7361d..498c6b2 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -24,7 +24,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: distribution: 'zulu' # See 'Supported distributions' for available options java-version: '17' diff --git a/.github/workflows/pr-commands.yaml b/.github/workflows/pr-commands.yaml new file mode 100644 index 0000000..f3e77c6 --- /dev/null +++ b/.github/workflows/pr-commands.yaml @@ -0,0 +1,139 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + issue_comment: + types: [created] + +name: Commands + +jobs: + document: + if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER') && startsWith(github.event.comment.body, '/document') }} + name: document + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/pr-fetch@v2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' # See 'Supported distributions' for available options + java-version: '17' + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - name: Set up for RProtoBuf + run: sudo apt-get update -y && sudo apt-get install protobuf-compiler libprotobuf-dev libprotoc-dev + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::roxygen2 + needs: pr-document + + - name: Document + run: roxygen2::roxygenise() + shell: Rscript {0} + + - name: Config git + run: | + git config --local user.name "$GITHUB_ACTOR" + git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com" + + # Check if there are any changes + - name: Check for changes + id: check-changes + run: | + if git diff --quiet -- NAMESPACE man/; then + echo "has-changed=false" >> "$GITHUB_OUTPUT" + else + echo "has-changed=true" >> "$GITHUB_OUTPUT" + fi + + - name: Commit the changes + if: ${{ steps.check-changes.outputs.has-changed == 'true' }} + run: | + git add man/\* NAMESPACE + git commit -m '[GHA] Document package' + + # Commit changes or a placeholder commit if no changes + - name: Commit no changes + if: ${{ steps.check-changes.outputs.has-changed == 'false' }} + run: | + git commit --allow-empty -m '[GHA] Package already documented' + + - uses: r-lib/actions/pr-push@v2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + style: + if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER') && startsWith(github.event.comment.body, '/style') }} + name: style + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/pr-fetch@v2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' # See 'Supported distributions' for available options + java-version: '17' + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - name: Set up for RProtoBuf + run: sudo apt-get update -y && sudo apt-get install protobuf-compiler libprotobuf-dev libprotoc-dev + + - name: Install dependencies + run: install.packages("styler") + shell: Rscript {0} + + - name: Style + run: styler::style_pkg(transformers = styler::tidyverse_style(indent_by = 4)) + shell: Rscript {0} + + - name: Config git + run: | + git config --local user.name "$GITHUB_ACTOR" + git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com" + + # Check if there are any changes + - name: Check for changes + id: check-changes + run: | + if git diff --quiet -- '*.R'; then + echo "has-changed=false" >> "$GITHUB_OUTPUT" + else + echo "has-changed=true" >> "$GITHUB_OUTPUT" + fi + + - name: Commit the changes + if: ${{ steps.check-changes.outputs.has-changed == 'true' }} + run: | + git add \*.R + git commit -m '[GHA] Style package' + + # Commit changes or a placeholder commit if no changes + - name: Commit no changes + if: ${{ steps.check-changes.outputs.has-changed == 'false' }} + run: | + git commit --allow-empty -m '[GHA] Package already styled' + + - uses: r-lib/actions/pr-push@v2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml new file mode 100644 index 0000000..7d814af --- /dev/null +++ b/.github/workflows/test-coverage.yaml @@ -0,0 +1,60 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, develop] + pull_request: + branches: [main, develop] + +name: test-coverage + +jobs: + test-coverage: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' # See 'Supported distributions' for available options + java-version: '17' + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - name: Set up for RProtoBuf + run: sudo apt-get update -y && sudo apt-get install protobuf-compiler libprotobuf-dev libprotoc-dev + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::covr + needs: coverage + + - name: Test coverage + run: | + covr::codecov( + quiet = FALSE, + clean = FALSE, + install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package") + ) + shell: Rscript {0} + + - name: Show testthat output + if: always() + run: | + ## -------------------------------------------------------------------- + find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true + shell: bash + + - name: Upload test results + if: failure() + uses: actions/upload-artifact@v4 + with: + name: coverage-test-failures + path: ${{ runner.temp }}/package diff --git a/.lintr b/.lintr new file mode 100644 index 0000000..af45940 --- /dev/null +++ b/.lintr @@ -0,0 +1,26 @@ +linters: linters_with_defaults( + indentation_linter = lintr::indentation_linter(indent = 4L), + indentation_linter = NULL, + trailing_blank_lines_linter = NULL, + trailing_whitespace_linter = NULL, + whitespace_linter = NULL, + brace_linter = NULL, + infix_spaces_linter = NULL, + paren_body_linter = NULL, + indentation_linter = NULL, + function_left_parentheses_linter = NULL, + spaces_left_parentheses_linter = NULL, + commas_linter = NULL, + quotes_linter = NULL, + spaces_inside_linter = NULL, + vector_logic_linter = NULL, + seq_linter = NULL, + object_length_linter = NULL, + semicolon_linter = NULL, + cyclocomp_linter = NULL, + object_usage_linter = NULL, + object_name_linter = NULL, + line_length_linter = NULL, + commented_code_linter = NULL + ) +encoding: "UTF-8" diff --git a/NEWS.md b/NEWS.md index 7dae6ca..e14ad43 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,8 +7,22 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] -[Unreleased]: https://github.com/rjdemetra/rjd3filters/compare/v2.0.0...HEAD ## [2.0.0] - 2023-12-12 -[2.0.0]: https://github.com/rjdemetra/rjd3filters/releases/tag/v2.0.0 +### Changed + +* Merge pull request #12 from rjdemetra/develop +* Merge pull request #11 from rjdemetra/main + + +## [1.0.0] - 2023-07-06 + +### Added + +* New Jars + + +[Unreleased]: https://github.com/rjdemetra/rjd3filters/compare/v2.0.0...HEAD +[2.0.0]: https://github.com/rjdemetra/rjd3filters/releases/tag/v1.0.0...v2.0.0 +[1.0.0]: https://github.com/rjdemetra/rjd3filters/releases/tag/v1.0.0 diff --git a/R/kernels.R b/R/kernels.R index a97543b..2a4e7ce 100644 --- a/R/kernels.R +++ b/R/kernels.R @@ -28,7 +28,7 @@ get_kernel <- function(kernel = c("Henderson","Uniform", "Triangular", jkernel <- .jcall("jdplus/toolkit/base/core/data/analysis/DiscreteKernel", "Ljava/util/function/IntToDoubleFunction;", tolower(kernel), h, sd_gauss) - }else{ + } else{ jkernel <- .jcall("jdplus/toolkit/base/core/data/analysis/DiscreteKernel", "Ljava/util/function/IntToDoubleFunction;", tolower(kernel), h) diff --git a/README.Rmd b/README.Rmd index 2f156c7..e273632 100644 --- a/README.Rmd +++ b/README.Rmd @@ -221,9 +221,11 @@ Proietti, Tommaso and Alessandra Luati (Dec. 2008). “Real time estimation in l Wildi, Marc and Tucker McElroy (2019). “The trilemma between accuracy, timeliness and smoothness in real-time signal extraction”. In: *International Journal of Forecasting* 35.3, pp. 1072–1084. URL: [https://EconPapers.repec.org/RePEc:eee:intfor:v:35:y:2019:i:3:p:1072-1084](https://EconPapers.repec.org/RePEc:eee:intfor:v:35:y:2019:i:3:p:1072-1084). -## Contributing +## Package Maintenance and contributing Any contribution is welcome and should be done through pull requests and/or issues. +pull requests should include **updated tests** and **updated documentation**. If functionality is changed, docstrings should be added or updated. + ## Licensing diff --git a/README.md b/README.md index 10cb82c..4112d99 100644 --- a/README.md +++ b/README.md @@ -332,11 +332,14 @@ timeliness and smoothness in real-time signal extraction”. In: *International Journal of Forecasting* 35.3, pp. 1072–1084. URL: [https://EconPapers.repec.org/RePEc:eee:intfor:v:35:y:2019:i:3:p:1072-1084](https://EconPapers.repec.org/RePEc:eee:intfor:v:35:y:2019:i:3:p:1072-1084). +## Package Maintenance and contributing -## Contributing - -Any contribution is welcome and should be done through pull requests and/or issues. +Any contribution is welcome and should be done through pull requests +and/or issues. pull requests should include **updated tests** and +**updated documentation**. If functionality is changed, docstrings +should be added or updated. ## Licensing -The code of this project is licensed under the [European Union Public Licence (EUPL)](https://joinup.ec.europa.eu/page/eupl-text-11-12). +The code of this project is licensed under the [European Union Public +Licence (EUPL)](https://joinup.ec.europa.eu/page/eupl-text-11-12).