Skip to content

Commit

Permalink
Merge pull request #1 from telostat/vst/initial-chores
Browse files Browse the repository at this point in the history
Initial Chores
  • Loading branch information
vst authored Dec 2, 2022
2 parents d6690f4 + 60e02b9 commit 849b0e3
Show file tree
Hide file tree
Showing 9 changed files with 238 additions and 8 deletions.
2 changes: 2 additions & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
^.chglog
^.vscode
^LICENSE\.md$
^nix
^release.sh
^shell.nix$
^tmp
56 changes: 56 additions & 0 deletions .chglog/CHANGELOG.tpl.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{{ if .Versions -}}
<a name="unreleased"></a>
## [Unreleased]

{{ if .Unreleased.CommitGroups -}}
{{ range .Unreleased.CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{ range .Versions }}
<a name="{{ .Tag.Name }}"></a>
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
{{ range .CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}

{{- if .RevertCommits -}}
### Reverts
{{ range .RevertCommits -}}
- {{ .Revert.Header }}
{{ end }}
{{ end -}}

{{- if .MergeCommits -}}
### Pull Requests
{{ range .MergeCommits -}}
- {{ .Header }}
{{ end }}
{{ end -}}

{{- if .NoteGroups -}}
{{ range .NoteGroups -}}
### {{ .Title }}
{{ range .Notes }}
{{ .Body }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{- if .Versions }}
[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
{{ end -}}
{{ end -}}
28 changes: 28 additions & 0 deletions .chglog/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
style: github
template: CHANGELOG.tpl.md
info:
title: CHANGELOG
repository_url: https://github.com/telostat/rocketbase
options:
commits:
# filters:
# Type:
# - feat
# - fix
# - perf
# - refactor
commit_groups:
# title_maps:
# feat: Features
# fix: Bug Fixes
# perf: Performance Improvements
# refactor: Code Refactoring
header:
pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$"
pattern_maps:
- Type
- Scope
- Subject
notes:
keywords:
- BREAKING CHANGE
17 changes: 17 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<a name="unreleased"></a>
## [Unreleased]


<a name="0.0.0.9000"></a>
## 0.0.0.9000 - 2022-12-02
### Chore
- **dev:** add Language Server Protocol implementation for R

### Feat
- init codebase with bare API client implementation

### Refactor
- **style:** format the code using lsp document format provider


[Unreleased]: https://github.com/telostat/rocketbase/compare/0.0.0.9000...HEAD
32 changes: 25 additions & 7 deletions R/base.R
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ RocketBase <- R6::R6Class("RocketBase", ## nolint
private$setup()
},

#' @description Prints rudimentary information about the remote PocketBase API instance.
#' @description Prints rudimentary information about the remote
#' PocketBase API instance.
info = function() {
cat(sprintf("PocketBase Instance URL: %s\n", self$url))
},
Expand Down Expand Up @@ -73,8 +74,8 @@ RocketBase <- R6::R6Class("RocketBase", ## nolint
self$bare <- crul::HttpClient$new(
url = self$url,
headers = list(
Authorization=sprintf("%s", private$token),
"User-Agent"=private$useragent()
Authorization = sprintf("%s", private$token),
"User-Agent" = private$useragent()
)
)
},
Expand All @@ -84,24 +85,41 @@ RocketBase <- R6::R6Class("RocketBase", ## nolint
## Build the HTTP client:
client <- crul::HttpClient$new(url = self$url)

## Define authentication endpoint path:
path <- "/api/admins/auth-with-password"

## Define credentials payload:
credentials <- list(
identity = private$identity,
password = private$password
)

## Issue the authentication request and get a response:
response <- client$post("/api/admins/auth-with-password", body=list(identity=private$identity, password=private$password))
response <- client$post(path, body = credentials)

## Check if response status is 200. If not, raise error as it implies that authentication has failed.
## If response status is not 200, raise error as it implies
## failed authentication:
if (response$status_code != 200) {
stop("Authentication failed.")
}

## Parse the content of the response:
content <- jsonlite::fromJSON(response$parse(encoding="UTF-8"))
content <- jsonlite::fromJSON(response$parse(encoding = "UTF-8"))

## Return the authentication token:
content$token
},

## Builds the user-agent string.
useragent = function() {
sprintf( "rocketbase/%s (%s; on:%s)", utils::packageVersion("rocketbase"), Sys.info()["sysname"], Sys.info()["nodename"])
## Get package version:
version <- utils::packageVersion("rocketbase")

## Get operating system:
sysname <- Sys.info()["sysname"]

## Build the "User-Agent" header value:
sprintf("rocketbase/%s (%s)", version, sysname)
}
)
)
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,21 @@ my_data <- jsonlite::fromJSON(response$parse(encoding = "UTF-8"))
print(my_data)
```

## Releasing

Make sure that your `main` branch is up to date:

```sh
git checkout main
git pull
```

Then, run the release script with new version information:

```sh
./release.sh -n <X.Y.Z>
```

## License

This work is licensed under MIT license. See [LICENSE](./LICENSE.md).
3 changes: 2 additions & 1 deletion man/RocketBase.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

91 changes: 91 additions & 0 deletions release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
#!/usr/bin/env bash

## Stop on errors:
set -eo pipefail

## Helper function to print log messages.
_log() {
echo "[RELEASE LOG]" "${@}"
}

## Helper function to print errors.
_error() {
echo 1>&2 "[RELEASE ERROR]" "${@}"
}

## Helper function to print usage.
_usage() {
echo "Usage: $0 [-h] -n <VERSION>"
}

## Declare variables:
_version=""

## Parse command line arguments:
while getopts "n:h" o; do
case "${o}" in
n)
_version="${OPTARG}"
;;
h)
_usage
exit 0
;;
*)
_usage 1>&2
exit 1
;;
esac
done
shift $((OPTIND - 1))

_log "Checking variables..."
if [ -z "${_version}" ]; then
_usage 1>&2
exit 1
else
_log "Version is \"${_version}\". Proceeding..."
fi

_log "Checking git repository state..."
if [[ -z "$(git status --porcelain)" ]]; then
_log "Git repository is clean. Proceeding..."
else
_error "Git repository is not clean. Aborting..."
exit 1
fi

_log "Updating application version..."
sed -i -E "s/^Version:([ ]+).*/Version:\\1${_version}/g" DESCRIPTION

_log "Generating changelog..."
git-chglog --output NEWS.md --next-tag "${_version}"

_log "Staging changes..."
git add NEWS.md DESCRIPTION

_log "Committing changes..."
git commit -m "chore(release): ${_version}"

_log "Tagging version..."
git tag -a -m "Release ${_version}" "${_version}"

_log "Pushing changes to remote..."
git push --follow-tags origin main

_log "Creating the release..."
gh release create "${_version}" --title "${_version}" --generate-notes

_log "Updating application version for development..."
sed -i -E "s/^Version:([ ]+).*/Version:\\1${_version}.9000/g" DESCRIPTION

_log "Staging changes..."
git add DESCRIPTION

_log "Committing changes..."
git commit -m "chore: bump development version to ${_version}.9000"

_log "Pushing changes to remote..."
git push

_log "Finished!"
2 changes: 2 additions & 0 deletions shell.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ let

devDependencies = [
pkgs.rPackages.devtools
pkgs.rPackages.languageserver
pkgs.rPackages.roxygen2
];

Expand All @@ -20,6 +21,7 @@ in
pkgs.mkShell {
buildInputs = [
thisR
pkgs.git-chglog
pkgs.pocketbase
];

Expand Down

0 comments on commit 849b0e3

Please sign in to comment.