rdecaf is an R library that provides client functionality to DECAF API suite.
DECAF is a proprietary Financial Portfolio Management, Analytics, Reporting and Productivity Suite offered as a Software as a Service (SaaS) solution. It provides an API suite over HTTP exposing its functionality and data it hosts. rdecaf is used internally to enhance DECAF's own functionality, and by third-parties to integrate into third-party systems.
rdecaf is currently NOT on CRAN. A typical way to install rdecaf is via devtools. For latest released version:
devtools::install_github("teloscube/rdecaf", ref = "main", upgrade = "ask")
... and for the development version:
devtools::install_github("teloscube/rdecaf", ref = "develop", upgrade = "ask")
Development is carried on under a Nix Shell. If you are on Nix, you can enter the Nix Shell provided with:
nix-shell
A few things to note:
-
Make sure that the package is in good shape:
devtools::check(".")
-
We are using Semantic Versioning. However, we have NOT released a major version YET. Therefore, expect breaking changes between releases.
-
We are using Conventional Commits since the development version
0.0.5.9000
. Make sure that your commit messages are compliant to these conventions. This will ensure a nice, automated changelog (./NEWS.md) generation. -
Development is carried under the
develop
branch. Pull Requests (PRs) are preferred over direct commits todevelop
branch. -
main
branch is for the latest released version. No development shall be done against themain
branch. -
We do not have strong preference over core formatting YET. We are currently using the
lintr
tool for this purposes. This can change or.lintr
configuration may change over time.
Let's assume that we are about to release 0.1.0
and the next development version will be 0.1.0.9000
.
First, enter the Nix Shell:
nix-shell
Set and export next version and next development version variables. For example:
export _NEXT_VERSION="0.1.0"
export _NEXT_DEV_VERSION="0.1.0.9000"
Ensure that you are on develop
branch and it is up-to-date:
git checkout develop
git pull
Checkout to main
branch:
git checkout main
Merge develop
branch to main
branch:
git merge --no-ff develop
Edit DESCRIPTION and update the version:
nano ./DESCRIPTION
Open R console, and check the package:
devtools::check(".")
This should pass with no errors, warnings or notes:
0 errors ✔ | 0 warnings ✔ | 0 notes ✔
Build the package:
devtools::build(".")
Exit the R console. The build package should be in the parent directory now:
$ ls "../rdecaf_${_NEXT_VERSION}.tar.gz"
../rdecaf_0.1.0.tar.gz
Update the changelog (NEWS.md):
git-chglog --next-tag "${_NEXT_VERSION}" --output NEWS.md
Commit changes:
git commit -am "chore(release): ${_NEXT_VERSION}"
... and push:
git push --follow-tags origin main
Now, we can create a new GitHub release:
gh release create "${_NEXT_VERSION}" --title "v${_NEXT_VERSION}" --generate-notes --draft
Upload the package to the release:
gh release upload "${_NEXT_VERSION}" "../rdecaf_${_NEXT_VERSION}.tar.gz"
Close the release:
gh release edit "${_NEXT_VERSION}" --draft=false
Now, change to develop
branch:
git checkout develop
Rebase onto main:
git rebase main
Update DESCRIPTION to reflect next development version:
nano DESCRIPTION
Commit:
git commit -am "chore: bump development version to ${_NEXT_DEV_VERSION}"
And, push:
git push
This work is released under MIT license.
See ./LICENSE.