Skip to content

Commit 8845bc5

Browse files
committed
Add CI, issue/PR templates, and Dependabot
- CI (.github/workflows/ci.yml): format check, strict `dart analyze`, tests on stable + the declared minimum SDK (3.5.0), example run, and a pana score gate (fail if >20 of 160 points are lost). - Issue forms (bug report, feature request) + config; PR template. - Dependabot for the `pub` and `github-actions` ecosystems (weekly). Signed-off-by: Alexander Salas Bastidas <ajsb85@firechip.dev>
1 parent 02fcee7 commit 8845bc5

6 files changed

Lines changed: 209 additions & 0 deletions

File tree

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: Bug report
2+
description: Report incorrect encoding/decoding or another defect in cobs_codec.
3+
title: "[bug]: "
4+
labels: ["bug"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: >
9+
Thanks for taking the time to file a bug! A minimal, byte-level
10+
reproduction is by far the most helpful thing you can provide.
11+
- type: input
12+
id: version
13+
attributes:
14+
label: cobs_codec version
15+
placeholder: "1.0.0"
16+
validations:
17+
required: true
18+
- type: input
19+
id: sdk
20+
attributes:
21+
label: Dart / Flutter version
22+
description: Output of `dart --version` (or `flutter --version`).
23+
placeholder: "Dart SDK version: 3.12.2 (stable)"
24+
validations:
25+
required: true
26+
- type: dropdown
27+
id: api
28+
attributes:
29+
label: Which part of the API?
30+
multiple: true
31+
options:
32+
- cobs (basic COBS)
33+
- cobsr (COBS/R)
34+
- framing / streaming (cobsFrame, CobsFrameEncoder/Decoder)
35+
- size helpers (encodingOverhead / maxEncodedLength)
36+
- other / not sure
37+
validations:
38+
required: true
39+
- type: textarea
40+
id: what-happened
41+
attributes:
42+
label: What happened?
43+
description: >
44+
Describe the problem. Include the **input bytes in hex**, what you
45+
expected, and what you actually got.
46+
placeholder: |
47+
Input: 0x11 0x00 0x22
48+
Expected: 0x02 0x11 0x02 0x22
49+
Actual: ...
50+
validations:
51+
required: true
52+
- type: textarea
53+
id: repro
54+
attributes:
55+
label: Minimal reproduction
56+
description: A short Dart snippet that reproduces the issue.
57+
render: dart
58+
validations:
59+
required: false
60+
- type: checkboxes
61+
id: checks
62+
attributes:
63+
label: Checklist
64+
options:
65+
- label: I searched existing issues and this is not a duplicate.
66+
required: true
67+
- label: I reproduced this with the latest version of cobs_codec.
68+
required: false

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Package page & documentation
4+
url: https://pub.dev/packages/cobs_codec
5+
about: API docs, usage examples, and versions on pub.dev.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Feature request
2+
description: Suggest a new capability or improvement for cobs_codec.
3+
title: "[feat]: "
4+
labels: ["enhancement"]
5+
body:
6+
- type: textarea
7+
id: problem
8+
attributes:
9+
label: What problem are you trying to solve?
10+
description: Describe the use case and the limitation you hit.
11+
validations:
12+
required: true
13+
- type: textarea
14+
id: proposal
15+
attributes:
16+
label: Proposed solution
17+
description: What API or behaviour would you like? A sketch is welcome.
18+
render: dart
19+
validations:
20+
required: false
21+
- type: textarea
22+
id: alternatives
23+
attributes:
24+
label: Alternatives considered
25+
validations:
26+
required: false
27+
- type: checkboxes
28+
id: scope
29+
attributes:
30+
label: Scope
31+
options:
32+
- label: >
33+
I understand cobs_codec aims to stay a small, focused byte-stuffing
34+
library (COBS/COBS-R + framing), not a general serialization
35+
framework.
36+
required: true

.github/dependabot.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
version: 2
2+
updates:
3+
# Dart/Flutter package dependencies (dev_dependencies in pubspec.yaml).
4+
- package-ecosystem: "pub"
5+
directory: "/"
6+
schedule:
7+
interval: "weekly"
8+
open-pull-requests-limit: 5
9+
labels:
10+
- "dependencies"
11+
commit-message:
12+
prefix: "deps"
13+
14+
# GitHub Actions used by the CI workflow.
15+
- package-ecosystem: "github-actions"
16+
directory: "/"
17+
schedule:
18+
interval: "weekly"
19+
open-pull-requests-limit: 5
20+
labels:
21+
- "dependencies"
22+
- "github-actions"
23+
commit-message:
24+
prefix: "ci"

.github/pull_request_template.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<!-- Thanks for contributing to cobs_codec! -->
2+
3+
## Description
4+
5+
<!-- What does this PR change, and why? Link any related issue. -->
6+
7+
## Checklist
8+
9+
- [ ] `dart format .` produces no changes
10+
- [ ] `dart analyze` reports no issues
11+
- [ ] `dart test` passes
12+
- [ ] Added or updated tests for the change (golden vectors for codec changes;
13+
`test/framing_test.dart` for streaming changes)
14+
- [ ] Updated `CHANGELOG.md` under an `## Unreleased` heading for user-visible
15+
changes
16+
- [ ] Commits are SSH/GPG-signed and signed-off (`git commit -s`, DCO)

.github/workflows/ci.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
# Cancel superseded runs for the same ref.
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: true
13+
14+
permissions:
15+
contents: read
16+
17+
jobs:
18+
analyze-and-test:
19+
name: Analyze & test (Dart ${{ matrix.sdk }})
20+
runs-on: ubuntu-latest
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
# `stable` is the enforcement leg; the pinned version guards the
25+
# declared minimum SDK (pubspec `environment: sdk`).
26+
sdk: [stable, "3.5.0"]
27+
steps:
28+
- uses: actions/checkout@v4
29+
- uses: dart-lang/setup-dart@v1
30+
with:
31+
sdk: ${{ matrix.sdk }}
32+
- name: Install dependencies
33+
run: dart pub get
34+
- name: Verify formatting
35+
if: matrix.sdk == 'stable'
36+
run: dart format --output=none --set-exit-if-changed .
37+
- name: Analyze (strict)
38+
if: matrix.sdk == 'stable'
39+
run: dart analyze --fatal-infos
40+
- name: Analyze (compatibility)
41+
if: matrix.sdk != 'stable'
42+
run: dart analyze
43+
- name: Run tests
44+
run: dart test
45+
- name: Run example
46+
run: dart run example/cobs_codec_example.dart
47+
48+
score:
49+
name: pub.dev score (pana)
50+
runs-on: ubuntu-latest
51+
steps:
52+
- uses: actions/checkout@v4
53+
- uses: dart-lang/setup-dart@v1
54+
- name: Install dependencies
55+
run: dart pub get
56+
- name: Run pana
57+
# Fail if more than 20 of the 160 points are lost.
58+
run: |
59+
dart pub global activate pana
60+
dart pub global run pana --no-warning --exit-code-threshold 20 .

0 commit comments

Comments
 (0)