Compare commits

...

30 commits

Author SHA1 Message Date
Renovate Bot d9c7974cae chore(deps): update dependency mimic to v1.8.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-06-23 22:33:59 +12:00
Renovate Bot e70cca07ea chore(deps): update dependency mimic to v1.8.1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-06-23 00:34:44 +12:00
Renovate Bot 068191928e chore(deps): update dependency mimic to v1.8.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-06-22 22:34:24 +12:00
Renovate Bot 9d113abf03 chore(deps): update dependency elixir to v1.17.1
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
2024-06-19 01:15:18 +12:00
Renovate Bot b40d52321b chore(deps): update dependency elixir to v1.17.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-06-15 13:36:05 +12:00
Renovate Bot bfb8fc8dd7 chore(deps): update dependency credo to v1.7.7
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-06-15 12:45:08 +12:00
Renovate Bot b16a8bf079 chore(deps): update dependency elixir to v1.16.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-21 11:15:41 +12:00
Renovate Bot f389cf96d0 chore(deps): update dependency erlang to v27
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-20 21:37:37 +12:00
Renovate Bot 8d1e6a2379 chore(deps): update dependency git_ops to v2.6.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-11 10:34:59 +12:00
Renovate Bot 3018037fe3 chore(deps): update dependency credo to v1.7.6
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-09 23:53:52 +12:00
Renovate Bot 195902f581 chore(deps): update dependency erlang to v26.2.5
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-03 03:32:26 +12:00
Renovate Bot 9e15a4860e chore(deps): update dependency wafer to v1.1.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-24 14:36:53 +12:00
Renovate Bot 7f70af47c4 chore(deps): update dependency circuits_i2c to v2.0.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-21 00:28:58 +12:00
Renovate Bot 5f2666850e chore(deps): update dependency erlang to v26.2.4
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-13 00:30:58 +12:00
James Harton 3d17c73984
chore: fix docs release.
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-14 19:26:45 +13:00
Renovate Bot 2df4ee4714 chore(deps): update dependency git_ops to v2.6.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-14 15:17:28 +13:00
Renovate Bot 9e8bbb4979 chore(deps): update dependency credo to v1.7.5
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-14 00:45:09 +00:00
Renovate Bot 25c2e7b17c chore(deps): update dependency mimic to v1.7.4
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-14 12:22:06 +13:00
Renovate Bot 8d53fc4521 chore(deps): update dependency wafer to v1.0.3
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-14 12:14:06 +13:00
Renovate Bot fdd0d80fa9 chore(deps): update dependency earmark to v1.4.46
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-14 12:10:45 +13:00
Renovate Bot 8f07460bef chore(deps): update dependency circuits_i2c to v2.0.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-13 21:05:49 +00:00
Renovate Bot 3f52a94951 chore(deps): update dependency elixir to v1.16.2
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-11 00:32:15 +13:00
James Harton c8f232872e
chore: fix typo in readme
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-08 14:46:26 +13:00
Renovate Bot a998cbf1f5 chore(deps): update dependency erlang to v26.2.3
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-07 22:24:41 +13:00
Renovate Bot d20dd6fe0f chore(deps): update dependency ex_check to ~> 0.16
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-03-01 23:22:10 +13:00
James Harton c55527e916
chore: release version v1.0.1
All checks were successful
continuous-integration/drone/push Build is passing
2024-02-23 20:19:17 +13:00
James Harton 307953a27d
chore: Add ex_check. 2024-02-23 20:17:54 +13:00
James Harton e0718892ac
docs: Update README and package links. 2024-02-23 20:17:41 +13:00
Renovate Bot cc6ae62dbb chore: Configure Renovate (#24)
All checks were successful
continuous-integration/drone/push Build is passing
Welcome to [Renovate](https://github.com/renovatebot/renovate)! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.

---
### Detected Package Files

 * `.tool-versions` (asdf)
 * `.drone.yml` (droneci)
 * `mix.exs` (mix)

### Configuration Summary

Based on the default config's presets, Renovate will:

  - Start dependency updates only once this onboarding PR is merged
  - Enable Renovate Dependency Dashboard creation.
  - Use semantic commit type `fix` for dependencies and `chore` for all others if semantic commits are in use.
  - Ignore `node_modules`, `bower_components`, `vendor` and various test/tests directories.
  - Group known monorepo packages together.
  - Use curated list of recommended non-monorepo package groupings.
  - Apply crowd-sourced package replacement rules.
  - Apply crowd-sourced workarounds for known problems with packages.
  - Use semantic prefixes for commit messages and PR titles.
  - Use `chore` as semantic commit type for commit messages and PR titles.
  - Removes rate limit for PR creation per hour.
  - Remove limit for open PRs at any time.
  - Automerge all upgrades (including `major`) if they pass tests.
  - Assign PRs to `james`.
  - Rebase existing PRs any time the base branch has been updated.
  - Raise PR when vulnerability alerts are detected.
  - Disable Renovate Dependency Dashboard creation.

🔡 Do you want to change how Renovate upgrades your dependencies? Add your custom config to `renovate.json` in this branch. Renovate will update the Pull Request description the next time it runs.

---

### What to Expect

With your current configuration, Renovate will create 1 Pull Request:

<details>
<summary>chore(deps): update dependency ex_doc to ~> 0.31</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/ex_doc-0.x`
  - Merge into: `main`
  - Upgrade ex_doc to `~> 0.31`

</details>

---

 Got questions? Check out Renovate's [Docs](https://docs.renovatebot.com/), particularly the Getting Started section.
If you need any further assistance then you can also [request help here](https://github.com/renovatebot/renovate/discussions).

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).

<!--renovate-config-hash:758a0db051676a629cb8daada3244b6287c728a47d095002c4ae62062eae6bf3-->

Reviewed-on: #24
Co-authored-by: Renovate Bot <bot@harton.nz>
Co-committed-by: Renovate Bot <bot@harton.nz>
2024-02-14 17:42:26 +13:00
James Harton 16e91d3c47 chore: migrate to local (#23)
All checks were successful
continuous-integration/drone/push Build is passing
* Add Drone CI configuration
* Change URLs
* Remove Gitlab CI configuration

Reviewed-on: #23
Co-authored-by: James Harton <james@harton.nz>
Co-committed-by: James Harton <james@harton.nz>
2024-02-14 15:52:35 +13:00
10 changed files with 539 additions and 207 deletions

382
.drone.yml Normal file
View file

@ -0,0 +1,382 @@
kind: pipeline
type: docker
name: build
steps:
- name: restore ASDF cache
image: meltwater/drone-cache
pull: "always"
environment:
AWS_ACCESS_KEY_ID:
from_secret: ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY:
from_secret: SECRET_ACCESS_KEY
AWS_PLUGIN_PATH_STYLE: true
settings:
restore: true
endpoint:
from_secret: S3_ENDPOINT
bucket:
from_secret: CACHE_BUCKET
region: us-east-1
path-style: true
cache_key: 'asdf-{{ os }}-{{ arch }}-{{ checksum ".tool-versions" }}'
mount:
- .asdf
- name: restore build cache
image: meltwater/drone-cache
environment:
AWS_ACCESS_KEY_ID:
from_secret: ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY:
from_secret: SECRET_ACCESS_KEY
AWS_PLUGIN_PATH_STYLE: true
settings:
restore: true
endpoint:
from_secret: S3_ENDPOINT
bucket:
from_secret: CACHE_BUCKET
region: us-east-1
path-style: true
cache_key: 'elixir-{{ checksum "mix.lock" }}-{{ checksum ".tool-versions" }}'
mount:
- deps
- _build
- .hex
- .mix
- .rebar3
- name: install dependencies
image: harton.dev/james/asdf_container:latest
pull: "always"
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
ASDF_DIR: /root/.asdf
depends_on:
- restore ASDF cache
- restore build cache
commands:
- asdf_install
- rm -rf .asdf/downloads
- . $ASDF_DIR/asdf.sh
- mix local.hex --if-missing --force
- mix local.rebar --if-missing --force
- mix deps.get
- mix deps.compile
- mix dialyzer --plt
- name: store ASDF cache
image: meltwater/drone-cache
environment:
AWS_ACCESS_KEY_ID:
from_secret: ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY:
from_secret: SECRET_ACCESS_KEY
AWS_PLUGIN_PATH_STYLE: true
depends_on:
- install dependencies
settings:
rebuild: true
override: false
endpoint:
from_secret: S3_ENDPOINT
bucket:
from_secret: CACHE_BUCKET
region: us-east-1
path-style: true
cache_key: 'asdf-{{ os }}-{{ arch }}-{{ checksum ".tool-versions" }}'
mount:
- .asdf
- name: store build cache
image: meltwater/drone-cache
environment:
AWS_ACCESS_KEY_ID:
from_secret: ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY:
from_secret: SECRET_ACCESS_KEY
AWS_PLUGIN_PATH_STYLE: true
depends_on:
- install dependencies
settings:
rebuild: true
override: false
endpoint:
from_secret: S3_ENDPOINT
bucket:
from_secret: CACHE_BUCKET
region: us-east-1
path-style: true
cache_key: 'elixir-{{ checksum "mix.lock" }}-{{ checksum ".tool-versions" }}'
mount:
- deps
- _build
- .hex
- .mix
- .rebar3
- name: mix compile
image: harton.dev/james/asdf_container:latest
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
depends_on:
- install dependencies
commands:
- asdf mix compile --warnings-as-errors
- name: mix test
image: harton.dev/james/asdf_container:latest
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
depends_on:
- mix compile
commands:
- asdf mix test
- name: mix credo
image: harton.dev/james/asdf_container:latest
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
depends_on:
- mix compile
commands:
- asdf mix credo --strict
- name: mix dialyzer
image: harton.dev/james/asdf_container:latest
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
depends_on:
- mix compile
commands:
- asdf mix dialyzer
- name: mix hex.audit
image: harton.dev/james/asdf_container:latest
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
depends_on:
- mix compile
commands:
- asdf mix hex.audit
- name: mix format
image: harton.dev/james/asdf_container:latest
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
depends_on:
- mix compile
commands:
- asdf mix format --check-formatted
- name: mix deps.unlock
image: harton.dev/james/asdf_container:latest
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
depends_on:
- mix compile
commands:
- asdf mix deps.unlock --check-unused
- name: mix doctor
image: harton.dev/james/asdf_container:latest
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
depends_on:
- mix compile
commands:
- asdf mix doctor --full
- name: mix git_ops.check_message
image: harton.dev/james/asdf_container:latest
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
depends_on:
- mix compile
commands:
- git log -1 --format=%s > .last_commit_message
- asdf mix git_ops.check_message .last_commit_message
- name: mix git_ops.release
image: harton.dev/james/asdf_container:latest
when:
branch:
- main
event:
exclude:
- pull_request
depends_on:
- mix test
- mix credo
- mix dialyzer
- mix hex.audit
- mix format
- mix deps.unlock
- mix doctor
- mix git_ops.check_message
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
ASDF_DIR: /root/.asdf
DRONE_TOKEN:
from_secret: DRONE_TOKEN
commands:
- git fetch --tags
- . $ASDF_DIR/asdf.sh
- mix git_ops.project_info --format=shell > before.env
- mix git_ops.release --yes --no-major || true
- mix git_ops.project_info --format=shell > after.env
- . ./before.env
- export OLD_APP_VERSION=$${APP_VERSION}
- . ./after.env
- export NEW_APP_VERSION=$${APP_VERSION}
- if [ "v$${OLD_APP_VERSION}" != "v$${NEW_APP_VERSION}" ]; then
- export GIT_URL=$(echo $DRONE_GIT_HTTP_URL | sed -e "s/:\\/\\//:\\/\\/$DRONE_REPO_OWNER:$DRONE_TOKEN@/")
- git push $${GIT_URL} "HEAD:${DRONE_COMMIT_REF}" "refs/tags/v$${NEW_APP_VERSION}"
- fi
- name: build artifacts
image: harton.dev/james/asdf_container:latest
when:
event:
- tag
refs:
include:
- refs/tags/v*
depends_on:
- mix test
- mix credo
- mix dialyzer
- mix hex.audit
- mix format
- mix deps.unlock
- mix doctor
- mix git_ops.check_message
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
ASDF_DIR: /root/.asdf
commands:
- . $ASDF_DIR/asdf.sh
- mix git_ops.project_info --format=shell > app.env
- . ./app.env
- mkdir artifacts
- mix hex.build -o "artifacts/$${APP_NAME}-$${APP_VERSION}-pkg.tar"
- gzip "artifacts/$${APP_NAME}-$${APP_VERSION}-pkg.tar"
- mix docs
- tar zcvf "artifacts/$${APP_NAME}-$${APP_VERSION}-docs.tar.gz" doc/
- git tag -l --format='%(contents:subject)' v$${APP_VERSION} > tag_subject
- git tag -l --format='%(contents:body)' v$${APP_VERSION} > tag_body
- name: gitea release
image: plugins/gitea-release
when:
event:
- tag
refs:
include:
- refs/tags/v*
depends_on:
- build artifacts
settings:
api_key:
from_secret: DRONE_TOKEN
base_url: https://harton.dev
files: artifacts/*.tar.gz
checksum: sha256
title: tag_subject
note: tag_body
- name: docs release
when:
event:
- tag
refs:
include:
- refs/tags/v*
image: minio/mc
environment:
S3_ENDPOINT:
from_secret: S3_ENDPOINT
ACCESS_KEY:
from_secret: ACCESS_KEY_ID
SECRET_KEY:
from_secret: SECRET_ACCESS_KEY
depends_on:
- build artifacts
commands:
- mc alias set store $${S3_ENDPOINT} $${ACCESS_KEY} $${SECRET_KEY}
- mc mb -p store/docs.harton.nz
- mc mirror --overwrite doc/ store/docs.harton.nz/$${DRONE_REPO}/$${DRONE_TAG}
- mc mirror --overwrite doc/ store/docs.harton.nz/$${DRONE_REPO}
- name: hex release
image: harton.dev/james/asdf_container:latest
when:
event:
- tag
refs:
include:
- refs/tags/v*
depends_on:
- build artifacts
environment:
MIX_ENV: test
HEX_HOME: /drone/src/.hex
MIX_HOME: /drone/src/.mix
REBAR_BASE_DIR: /drone/src/.rebar3
ASDF_DATA_DIR: /drone/src/.asdf
ASDF_DIR: /root/.asdf
HEX_API_KEY:
from_secret: HEX_API_KEY
commands:
- . $ASDF_DIR/asdf.sh
- mix hex.publish --yes

View file

@ -1,139 +0,0 @@
stages:
- build
- test
- release
variables:
MIX_ENV: "test"
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/"
HEX_HOME: "$CI_PROJECT_DIR/.hex"
MIX_HOME: "$CI_PROJECT_DIR/.mix"
build:
image: elixir:latest
stage: build
cache:
key: "$CI_JOB_NAME"
paths:
- deps
- _build
- .hex
- .mix
script:
- mix local.hex --force
- mix local.rebar --force
- mix deps.get
- mix deps.compile
- mix git_ops.project_info -f dotenv > project_info.env
artifacts:
paths:
- _build/
- deps/
- .hex
- .mix
reports:
dotenv: project_info.env
test:
image: elixir:latest
dependencies:
- build
stage: test
script:
- mix test
credo:
image: elixir:latest
dependencies:
- build
stage: test
script:
- mix credo
audit:
image: elixir:latest
dependencies:
- build
stage: test
script:
- mix hex.audit
format:
image: elixir:latest
dependencies:
- build
stage: test
script:
- mix format --check-formatted
pages:
image: elixir:latest
dependencies:
- build
stage: release
script:
- mix docs -o public
artifacts:
paths:
- public
only:
- main
git_ops:
image: elixir:latest
dependencies:
- build
stage: release
only:
refs:
- main
except:
variables:
- $CI_COMMIT_MESSAGE =~ /chore\:\ release version/
script:
- |
export OLD_APP_VERSION=$APP_VERSION
mkdir -p artifacts
git config --global user.name "Gitlab Runner for ${GITLAB_USER_NAME}"
git config --global user.email "${GITLAB_USER_EMAIL}"
mix git_ops.release --yes || true
mix git_ops.project_info -f shell > artifacts/env
source artifacts/env
if [ "v${OLD_APP_VERSION}" != "v${APP_VERSION}" ]; then
mix hex.build -o "artifacts/${APP_NAME}-${APP_VERSION}.tar"
gzip "artifacts/${APP_NAME}-${APP_VERSION}.tar"
mix docs && tar zcvf "artifacts/${APP_NAME}-${APP_VERSION}-docs.tar.gz" doc/
curl --header "JOB_TOKEN: ${CI_JOB_TOKEN}" --upload-file "artifacts/${APP_NAME}-${APP_VERSION}.tar.gz" "${PACKAGE_REGISTRY_URL}/${APP_NAME}/${APP_VERSION}/${APP_NAME}-${APP_VERSION}.tar.gz"
curl --header "JOB_TOKEN: ${CI_JOB_TOKEN}" --upload-file "artifacts/${APP_NAME}-${APP_VERSION}-docs.tar.gz" "${PACKAGE_REGISTRY_URL}/${APP_NAME}/${APP_VERSION}/${APP_NAME}-${APP_VERSION}-docs.tar.gz"
git push "https://project_${CI_PROJECT_ID}_bot:${RELEASE_TOKEN}@gitlab.com/${CI_PROJECT_PATH}.git" "HEAD:${CI_COMMIT_REF_NAME}" "refs/tags/v${APP_VERSION}"
fi
artifacts:
paths:
- artifacts/*
release-gitlab:
image: registry.gitlab.com/gitlab-org/release-cli:latest
dependencies:
- build
stage: release
only:
- tags
- /^v\d+\.\d+\.\d+(-\w+)?$/
script:
- release-cli create \
--name "Release ${APP_NAME} ${APP_VERSION}" \
--description "./CHANGELOG.md" \
--tag-name "v${APP_VERSION}" \
--assets-link "{\"name\":\"${APP_NAME}-${APP_VERSION}.tar.gz\",\"url\":\"${PACKAGE_REGISTRY_URL}/${APP_NAME}/${APP_VERSION}/${APP_NAME}-${APP_VERSION}.tar.gz\"}" \
--assets-link "{\"name\":\"${APP_NAME}-${APP_VERSION}-docs.tar.gz\",\"url\":\"${PACKAGE_REGISTRY_URL}/${APP_NAME}/${APP_VERSION}/${APP_NAME}-${APP_VERSION}-docs.tar.gz\"}"
release-hex:
image: elixir:latest
dependencies:
- build
stage: release
only:
- tags
- /^v\d+\.\d+\.\d+(-\w+)?$/
script:
- mix hex.publish --yes

2
.tool-versions Normal file
View file

@ -0,0 +1,2 @@
erlang 27.0
elixir 1.17.1

View file

@ -5,14 +5,15 @@ See [Conventional Commits](Https://conventionalcommits.org) for commit guideline
<!-- changelog -->
## [v1.0.0](https://gitlab.com/jimsy/mpl3115a2/compare/v0.3.0...v1.0.0) (2023-01-16)
## [v1.0.1](https://harton.dev/james/mpl3115a2/compare/v1.0.0...v1.0.1) (2024-02-23)
## [v1.0.0](https://harton.dev/james/mpl3115a2/compare/v0.3.0...v1.0.0) (2023-01-16)
### Breaking Changes:
* Relicense to HL3-FULL.
## [v0.3.0](https://gitlab.com/jimsy/mpl3115a2/compare/v0.3.0...v0.3.0) (2020-12-28)
- Relicense to HL3-FULL.
## [v0.3.0](https://harton.dev/james/mpl3115a2/compare/v0.3.0...v0.3.0) (2020-12-28)

View file

@ -1,6 +1,6 @@
# MPL3115A2
[![pipeline status](https://gitlab.com/jimsy/mpl3115a2/badges/main/pipeline.svg)](https://gitlab.com/jimsy/mpl3115a2/commits/main)
[![Build Status](https://drone.harton.dev/api/badges/james/mpl3115a2/status.svg)](https://drone.harton.dev/james/mpl3115a2)
[![Hex.pm](https://img.shields.io/hexpm/v/mpl3115a2.svg)](https://hex.pm/packages/mpl3115a2)
[![Hippocratic License HL3-FULL](https://img.shields.io/static/v1?label=Hippocratic%20License&message=HL3-FULL&labelColor=5e2751&color=bc8c3d)](https://firstdonoharm.dev/version/3/0/full.html)
@ -32,7 +32,7 @@ by adding `mpl3115a2` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:mpl3115a2, "~> 1.0.0"}
{:mpl3115a2, "~> 1.0.1"}
]
end
```
@ -41,6 +41,12 @@ Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_do
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at [https://hexdocs.pm/mpl3115a2](https://hexdocs.pm/mpl3115a2).
## Github Mirror
This repository is mirrored [on Github](https://github.com/jimsynz/mpl3115a2)
from it's primary location [on my Forgejo instance](https://harton.dev/james/mpl3115a2).
Feel free to raise issues and open PRs on Github.
## License
This software is licensed under the terms of the

View file

@ -6,7 +6,7 @@ config :mpl3115a2,
config :git_ops,
mix_project: Mix.Project.get!(),
changelog_file: "CHANGELOG.md",
repository_url: "https://gitlab.com/jimsy/mpl3115a2",
repository_url: "https://harton.dev/james/mpl3115a2",
manage_mix_version?: true,
manage_readme_version: "README.md",
version_tag_prefix: "v"

View file

@ -4,7 +4,7 @@ defmodule MPL3115A2 do
@behaviour Wafer.Conn
alias MPL3115A2.Registers
alias Wafer.Conn
use Bitwise
import Bitwise
import Wafer.Twiddles
@moduledoc """
@ -533,8 +533,13 @@ defmodule MPL3115A2 do
Default value: `false`.
"""
@spec data_ready_event_mode(t, boolean) :: {:ok, t} | {:error, reason :: any}
def data_ready_event_mode(%MPL3115A2{conn: conn} = dev, value) when is_boolean(value) do
with {:ok, conn} <- Registers.update_pt_data_cfg(conn, &set_bit(&1, 2, value)),
def data_ready_event_mode(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_pt_data_cfg(conn, &set_bit(&1, 2)),
do: {:ok, %{dev | conn: conn}}
end
def data_ready_event_mode(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_pt_data_cfg(conn, &clear_bit(&1, 2)),
do: {:ok, %{dev | conn: conn}}
end
@ -557,9 +562,13 @@ defmodule MPL3115A2 do
Default value: `false`.
"""
@spec pressure_altitude_event_flag_enable(t, boolean) :: {:ok, t} | {:error, reason :: any}
def pressure_altitude_event_flag_enable(%MPL3115A2{conn: conn} = dev, value)
when is_boolean(value) do
with {:ok, conn} <- Registers.update_pt_data_cfg(conn, &set_bit(&1, 1, value)),
def pressure_altitude_event_flag_enable(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_pt_data_cfg(conn, &set_bit(&1, 1)),
do: {:ok, %{dev | conn: conn}}
end
def pressure_altitude_event_flag_enable(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_pt_data_cfg(conn, &clear_bit(&1, 1)),
do: {:ok, %{dev | conn: conn}}
end
@ -582,8 +591,13 @@ defmodule MPL3115A2 do
Default value: `false`.
"""
@spec temperature_event_flag_enable(t, boolean) :: {:ok, t} | {:error, reason :: any}
def temperature_event_flag_enable(%MPL3115A2{conn: conn} = dev, value) when is_boolean(value) do
with {:ok, conn} <- Registers.update_pt_data_cfg(conn, &set_bit(&1, 0, value)),
def temperature_event_flag_enable(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_pt_data_cfg(conn, &set_bit(&1, 0)),
do: {:ok, %{dev | conn: conn}}
end
def temperature_event_flag_enable(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_pt_data_cfg(conn, &clear_bit(&1, 0)),
do: {:ok, %{dev | conn: conn}}
end
@ -606,7 +620,7 @@ defmodule MPL3115A2 do
"""
@spec barometric_pressure_input(t, pressure) :: {:ok, pressure} | {:error, reason :: any}
def barometric_pressure_input(%MPL3115A2{conn: conn} = dev, pascals) do
data = div(pascals, 2)
data = pascals |> trunc() |> div(2)
msb = data >>> 8 &&& 0xFF
lsb = data &&& 0xFF
@ -640,6 +654,7 @@ defmodule MPL3115A2 do
"""
@spec pressure_or_altitude_target(t, pressure | altitude) :: {:ok, t} | {:error, reason :: any}
def pressure_or_altitude_target(%MPL3115A2{conn: conn} = dev, pressure_or_altitude) do
pressure_or_altitude = trunc(pressure_or_altitude)
msb = pressure_or_altitude >>> 8 &&& 0xFF
lsb = pressure_or_altitude &&& 0xFF
@ -661,6 +676,8 @@ defmodule MPL3115A2 do
"""
@spec temperature_target(t, temperature) :: {:ok, t} | {:error, reason :: any}
def temperature_target(%MPL3115A2{conn: conn} = dev, temperature) do
temperature = trunc(temperature)
with {:ok, conn} <- Registers.write_t_tgt(conn, <<temperature &&& 0xFF>>),
do: {:ok, %{dev | conn: conn}}
end
@ -686,6 +703,8 @@ defmodule MPL3115A2 do
"""
@spec pressure_altitude_window(t, pressure | altitude) :: {:ok, t} | {:error, reason :: any}
def pressure_altitude_window(%MPL3115A2{conn: conn} = dev, pressure_or_altitude) do
pressure_or_altitude = trunc(pressure_or_altitude)
msb = pressure_or_altitude >>> 8 &&& 0xFF
lsb = pressure_or_altitude &&& 0xFF
@ -707,6 +726,8 @@ defmodule MPL3115A2 do
"""
@spec temperature_window(t, temperature) :: {:ok, t} | {:error, reason :: any}
def temperature_window(%MPL3115A2{conn: conn} = dev, temperature) do
temperature = trunc(temperature)
with {:ok, conn} <- Registers.write_t_wnd(conn, <<temperature &&& 0xFF>>),
do: {:ok, %{dev | conn: conn}}
end
@ -902,6 +923,7 @@ defmodule MPL3115A2 do
value =
value
|> :math.sqrt()
|> trunc()
|> band(0x3)
with {:ok, conn} <-
@ -957,8 +979,13 @@ defmodule MPL3115A2 do
other interrupts are disabled.
"""
@spec raw_output(t, boolean) :: {:ok, t} | {:error, reason :: any}
def raw_output(%MPL3115A2{conn: conn} = dev, value) when is_boolean(value) do
with {:ok, conn} <- Registers.update_ctrl_reg1(conn, &set_bit(&1, 6, value)),
def raw_output(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_ctrl_reg1(conn, &set_bit(&1, 6)),
do: {:ok, %{dev | conn: conn}}
end
def raw_output(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_ctrl_reg1(conn, &clear_bit(&1, 6)),
do: {:ok, %{dev | conn: conn}}
end
@ -1012,6 +1039,7 @@ defmodule MPL3115A2 do
value =
value
|> :math.sqrt()
|> trunc()
with {:ok, conn} <-
Registers.update_ctrl_reg2(conn, fn <<data>> ->
@ -1249,8 +1277,13 @@ defmodule MPL3115A2 do
Defaults to `false`.
"""
@spec interrupt_enable_data_ready(t, boolean) :: {:ok, t} | {:error, reason :: any}
def interrupt_enable_data_ready(%MPL3115A2{conn: conn} = dev, value) when is_boolean(value) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 7, value)),
def interrupt_enable_data_ready(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 7)),
do: {:ok, %{dev | conn: conn}}
end
def interrupt_enable_data_ready(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &clear_bit(&1, 7)),
do: {:ok, %{dev | conn: conn}}
end
@ -1277,8 +1310,13 @@ defmodule MPL3115A2 do
true: FIFO interrupt enabled
"""
@spec interrupt_enable_fifo(t, boolean) :: {:ok, t} | {:error, reason :: any}
def interrupt_enable_fifo(%MPL3115A2{conn: conn} = dev, value) when is_boolean(value) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 6, value)),
def interrupt_enable_fifo(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 6)),
do: {:ok, %{dev | conn: conn}}
end
def interrupt_enable_fifo(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &clear_bit(&1, 6)),
do: {:ok, %{dev | conn: conn}}
end
@ -1305,9 +1343,13 @@ defmodule MPL3115A2 do
true: Pressure window interrupt enabled
"""
@spec interrupt_enable_pressure_window(t, boolean) :: {:ok, t} | {:error, reason :: any}
def interrupt_enable_pressure_window(%MPL3115A2{conn: conn} = dev, value)
when is_boolean(value) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 5, value)),
def interrupt_enable_pressure_window(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 5)),
do: {:ok, %{dev | conn: conn}}
end
def interrupt_enable_pressure_window(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &clear_bit(&1, 5)),
do: {:ok, %{dev | conn: conn}}
end
@ -1336,9 +1378,13 @@ defmodule MPL3115A2 do
true: Temperature window interrupt enabled
"""
@spec interrupt_enable_temperature_window(t, boolean) :: {:ok, t} | {:error, reason :: any}
def interrupt_enable_temperature_window(%MPL3115A2{conn: conn} = dev, value)
when is_boolean(value) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 4, value)),
def interrupt_enable_temperature_window(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 4)),
do: {:ok, %{dev | conn: conn}}
end
def interrupt_enable_temperature_window(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &clear_bit(&1, 4)),
do: {:ok, %{dev | conn: conn}}
end
@ -1365,9 +1411,13 @@ defmodule MPL3115A2 do
true: Pressure Threshold interrupt enabled
"""
@spec interrupt_enable_pressure_threshold(t, boolean) :: {:ok, t} | {:error, reason :: any}
def interrupt_enable_pressure_threshold(%MPL3115A2{conn: conn} = dev, value)
when is_boolean(value) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 3, value)),
def interrupt_enable_pressure_threshold(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 3)),
do: {:ok, %{dev | conn: conn}}
end
def interrupt_enable_pressure_threshold(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &clear_bit(&1, 3)),
do: {:ok, %{dev | conn: conn}}
end
@ -1394,9 +1444,13 @@ defmodule MPL3115A2 do
true: Temperature Threshold interrupt enabled
"""
@spec interrupt_enable_temperature_threshold(t, boolean) :: {:ok, t} | {:error, reason :: any}
def interrupt_enable_temperature_threshold(%MPL3115A2{conn: conn} = dev, value)
when is_boolean(value) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 2, value)),
def interrupt_enable_temperature_threshold(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 2)),
do: {:ok, %{dev | conn: conn}}
end
def interrupt_enable_temperature_threshold(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &clear_bit(&1, 2)),
do: {:ok, %{dev | conn: conn}}
end
@ -1423,9 +1477,13 @@ defmodule MPL3115A2 do
true: Pressure Change interrupt enabled
"""
@spec interrupt_enable_pressure_change(t, boolean) :: {:ok, t} | {:error, reason :: any}
def interrupt_enable_pressure_change(%MPL3115A2{conn: conn} = dev, value)
when is_boolean(value) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 1, value)),
def interrupt_enable_pressure_change(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 1)),
do: {:ok, %{dev | conn: conn}}
end
def interrupt_enable_pressure_change(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &clear_bit(&1, 1)),
do: {:ok, %{dev | conn: conn}}
end
@ -1452,9 +1510,13 @@ defmodule MPL3115A2 do
true: Temperature Change interrupt enabled
"""
@spec interrupt_enable_temperature_change(t, boolean) :: {:ok, t} | {:error, reason :: any}
def interrupt_enable_temperature_change(%MPL3115A2{conn: conn} = dev, value)
when is_boolean(value) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 0, value)),
def interrupt_enable_temperature_change(%MPL3115A2{conn: conn} = dev, true) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &set_bit(&1, 0)),
do: {:ok, %{dev | conn: conn}}
end
def interrupt_enable_temperature_change(%MPL3115A2{conn: conn} = dev, false) do
with {:ok, conn} <- Registers.update_ctrl_reg4(conn, &clear_bit(&1, 0)),
do: {:ok, %{dev | conn: conn}}
end
@ -1770,7 +1832,7 @@ defmodule MPL3115A2 do
do: {:ok, whole + fractional / 16.0}
defp to_pressure(
<<whole::unsigned-integer-size(18), fractional::unsigned-integer-size(2), _::size(2)>>
<<whole::unsigned-integer-size(18), fractional::unsigned-integer-size(2), _::size(4)>>
),
do: {:ok, whole + fractional / 4.0}

20
mix.exs
View file

@ -1,7 +1,7 @@
defmodule MPL3115A2.MixProject do
use Mix.Project
@version "1.0.0"
@version "1.0.1"
def project do
[
@ -11,7 +11,11 @@ defmodule MPL3115A2.MixProject do
start_permanent: Mix.env() == :prod,
description: "Driver for the MPL3115A2 altimeter connected via I2C.",
deps: deps(),
package: package()
package: package(),
docs: [
main: "readme",
extras: ["README.md", "CHANGELOG.md"]
]
]
end
@ -27,7 +31,10 @@ defmodule MPL3115A2.MixProject do
maintainers: ["James Harton <james@harton.nz>"],
licenses: ["HL3-FULL"],
links: %{
"Source" => "https://gitlab.com/jimsy/mpl3115a2"
"Source" => "https://harton.dev/james/mpl3115a2",
"GitHub" => "https://github.com/jimsynz/mpl3115a2",
"Changelog" => "https://docs.harton.nz/james/mpl3115a2/changelog.html",
"Sponsor" => "https://github.com/sponsors/jimsynz"
}
]
end
@ -37,9 +44,12 @@ defmodule MPL3115A2.MixProject do
[
{:circuits_i2c, "~> 2.0", optional: true},
{:credo, "~> 1.6", only: ~w[dev test]a, runtime: false},
{:earmark, "~> 1.4", only: ~w[dev test]a},
{:dialyxir, "~> 1.4", only: ~w[dev test]a, runtime: false},
{:doctor, "~> 0.21", only: ~w[dev test]a, runtime: false},
{:earmark, "~> 1.4", only: ~w[dev test]a, runtime: false},
{:elixir_ale, "~> 1.2", optional: true},
{:ex_doc, "~> 0.30", only: ~w[dev test]a},
{:ex_check, "~> 0.16", only: ~w[dev test]a, runtime: false},
{:ex_doc, "~> 0.30", only: ~w[dev test]a, runtime: false},
{:git_ops, "~> 2.4", only: ~w[dev test]a, runtime: false},
{:mimic, "~> 1.5", only: :test},
{:wafer, "~> 1.0"}

View file

@ -1,20 +1,25 @@
%{
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"},
"circuits_i2c": {:hex, :circuits_i2c, "2.0.0", "8343b12879189f844835abeaf31a36c5626b8ace58413a582794fdfe60c2dc0e", [:make, :mix], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "06eccd33b36bcedf41730cac8da58e359967ea63a2cd899cea58c2a138634cc4"},
"credo": {:hex, :credo, "1.6.1", "7dc76dcdb764a4316c1596804c48eada9fff44bd4b733a91ccbf0c0f368be61e", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "698607fb5993720c7e93d2d8e76f2175bba024de964e160e2f7151ef3ab82ac5"},
"earmark": {:hex, :earmark, "1.4.19", "3854a17305c880cc46305af15fb1630568d23a709aba21aaa996ced082fc29d7", [:mix], [{:earmark_parser, ">= 1.4.18", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "d5a8c9f9e37159a8fdd3ea8437fb4e229eaf56d5129b9a011dc4780a4872079d"},
"earmark_parser": {:hex, :earmark_parser, "1.4.33", "3c3fd9673bb5dcc9edc28dd90f50c87ce506d1f71b70e3de69aa8154bc695d44", [:mix], [], "hexpm", "2d526833729b59b9fdb85785078697c72ac5e5066350663e5be6a1182da61b8f"},
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
"circuits_i2c": {:hex, :circuits_i2c, "2.0.4", "d08568730ca8a8237d0221b0fdf81f3e2e20385e449d4aa70fcb4c90b3b6543c", [:make, :mix], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "fbfe2630bc30944aab7920818f1a2bf8a18acc1148385c947990aa0724f52f36"},
"credo": {:hex, :credo, "1.7.7", "771445037228f763f9b2afd612b6aa2fd8e28432a95dbbc60d8e03ce71ba4446", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8bc87496c9aaacdc3f90f01b7b0582467b69b4bd2441fe8aae3109d843cc2f2e"},
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
"doctor": {:hex, :doctor, "0.21.0", "20ef89355c67778e206225fe74913e96141c4d001cb04efdeba1a2a9704f1ab5", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "a227831daa79784eb24cdeedfa403c46a4cb7d0eab0e31232ec654314447e4e0"},
"earmark": {:hex, :earmark, "1.4.46", "8c7287bd3137e99d26ae4643e5b7ef2129a260e3dcf41f251750cb4563c8fb81", [:mix], [], "hexpm", "798d86db3d79964e759ddc0c077d5eb254968ed426399fbf5a62de2b5ff8910a"},
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
"elixir_ale": {:hex, :elixir_ale, "1.2.1", "07ac2f17a0191b8bd3b0df6b526c7f699a3a4d690c9def573fcb5824eef24d98", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "bfb099137500a3b8c4a1750cf07f2d704897ef9feac3412064bf9edc7d74193c"},
"elixir_make": {:hex, :elixir_make, "0.7.7", "7128c60c2476019ed978210c245badf08b03dbec4f24d05790ef791da11aa17c", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c"},
"elixir_make": {:hex, :elixir_make, "0.8.3", "d38d7ee1578d722d89b4d452a3e36bcfdc644c618f0d063b874661876e708683", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.0", [hex: :certifi, repo: "hexpm", optional: true]}], "hexpm", "5c99a18571a756d4af7a4d89ca75c28ac899e6103af6f223982f09ce44942cc9"},
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
"ex_check": {:hex, :ex_check, "0.16.0", "07615bef493c5b8d12d5119de3914274277299c6483989e52b0f6b8358a26b5f", [:mix], [], "hexpm", "4d809b72a18d405514dda4809257d8e665ae7cf37a7aee3be6b74a34dec310f5"},
"ex_doc": {:hex, :ex_doc, "0.30.0", "ed94bf5183f559d2f825e4f866cc0eab277bbb17da76aff40f8e0f149656943e", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "6743fe46704fe27e2f2558faa61f00e5356528768807badb2092d38476d6dac2"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"file_system": {:hex, :file_system, "1.0.0", "b689cc7dcee665f774de94b5a832e578bd7963c8e637ef940cd44327db7de2cd", [:mix], [], "hexpm", "6752092d66aec5a10e662aefeed8ddb9531d79db0bc145bb8c40325ca1d8536d"},
"git_cli": {:hex, :git_cli, "0.3.0", "a5422f9b95c99483385b976f5d43f7e8233283a47cda13533d7c16131cb14df5", [:mix], [], "hexpm", "78cb952f4c86a41f4d3511f1d3ecb28edb268e3a7df278de2faa1bd4672eaf9b"},
"git_ops": {:hex, :git_ops, "2.4.5", "185a724dfde3745edd22f7571d59c47a835cf54ded67e9ccbc951920b7eec4c2", [:mix], [{:git_cli, "~> 0.2", [hex: :git_cli, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e323a5b01ad53bc8c19c3a444be3e61ed7803ecd2e95530446ae9327d0143ecc"},
"jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"},
"git_ops": {:hex, :git_ops, "2.6.1", "cc7799a68c26cf814d6d1a5121415b4f5bf813de200908f930b27a2f1fe9dad5", [:mix], [{:git_cli, "~> 0.2", [hex: :git_cli, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "ce62d07e41fe993ec22c35d5edb11cf333a21ddaead6f5d9868fcb607d42039e"},
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.2", "ad87296a092a46e03b7e9b0be7631ddcf64c790fa68a9ef5323b6cbb36affc72", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f3f5a1ca93ce6e092d92b6d9c049bcda58a3b617a8d888f8e7231c85630e8108"},
"mimic": {:hex, :mimic, "1.5.1", "085f7ebfeb5b579a13a167aec3c712d71fecfc6cb8b298c0dd3056f97ea2c2a0", [:mix], [], "hexpm", "33a50ef9ff38f8f24b2586d52e529981a3ba2b8d061c872084aff0e993bf4bd5"},
"nimble_parsec": {:hex, :nimble_parsec, "1.3.1", "2c54013ecf170e249e9291ed0a62e5832f70a476c61da16f6aac6dca0189f2af", [:mix], [], "hexpm", "2682e3c0b2eb58d90c6375fc0cc30bc7be06f365bf72608804fb9cffa5e1b167"},
"wafer": {:hex, :wafer, "1.0.2", "4b1f25fe1d9220cb9b060ddd002c0c51f71067a996f2d541b1951457de6c9702", [:mix], [{:circuits_gpio, "~> 1.0", [hex: :circuits_gpio, repo: "hexpm", optional: true]}, {:circuits_i2c, "~> 1.0 or ~> 2.0", [hex: :circuits_i2c, repo: "hexpm", optional: true]}, {:circuits_spi, "~> 1.3", [hex: :circuits_spi, repo: "hexpm", optional: true]}, {:elixir_ale, "~> 1.2", [hex: :elixir_ale, repo: "hexpm", optional: true]}], "hexpm", "58fd27785d66de3703a51b1a13a8de6fac77bfa284f4e2eaec22ecf94ab4bb5a"},
"mimic": {:hex, :mimic, "1.8.2", "f4cf6ad13a305c5ee1a6c304ee36fc7afb3ad748e2af8cd5fbf122f44a283534", [:mix], [], "hexpm", "abc982d5fdcc4cb5292980cb698cd47c0c5d9541b401e540fb695b69f1d46485"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
"wafer": {:hex, :wafer, "1.1.0", "21947fb1e23038390351bd26b22bf4b849b88841e38ff6cc7c463b37915a9ce8", [:mix], [{:circuits_gpio, "< 3.0.0", [hex: :circuits_gpio, repo: "hexpm", optional: true]}, {:circuits_i2c, "< 3.0.0", [hex: :circuits_i2c, repo: "hexpm", optional: true]}, {:circuits_spi, "< 3.0.0", [hex: :circuits_spi, repo: "hexpm", optional: true]}], "hexpm", "777cd98681a5bbd74f01a39795fc0ab204788f3813742968ab350fd0ee81955b"},
}

View file

@ -1,3 +1,6 @@
{
"extends": ["gitlab>jimsy/renovate"]
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>renovate/renovate"
]
}