@ifi/oh-pi-skills 0.2.8 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/btw/SKILL.md +149 -0
- package/skills/flutter-serverpod-mvp/SKILL.md +199 -0
- package/skills/rust-workspace-bootstrap/SKILL.md +86 -0
- package/skills/rust-workspace-bootstrap/scaffold.js +222 -0
- package/skills/rust-workspace-bootstrap/template/.cargo/config.toml +7 -0
- package/skills/rust-workspace-bootstrap/template/.changeset/.gitkeep +0 -0
- package/skills/rust-workspace-bootstrap/template/.envrc +7 -0
- package/skills/rust-workspace-bootstrap/template/.github/actions/devenv/action.yml +42 -0
- package/skills/rust-workspace-bootstrap/template/.github/workflows/ci.yml +130 -0
- package/skills/rust-workspace-bootstrap/template/.github/workflows/coverage.yml +45 -0
- package/skills/rust-workspace-bootstrap/template/.github/workflows/docs-pages.yml +60 -0
- package/skills/rust-workspace-bootstrap/template/.github/workflows/release-preview.yml +52 -0
- package/skills/rust-workspace-bootstrap/template/.github/workflows/release.yml +87 -0
- package/skills/rust-workspace-bootstrap/template/.github/workflows/semver.yml +63 -0
- package/skills/rust-workspace-bootstrap/template/Cargo.toml +64 -0
- package/skills/rust-workspace-bootstrap/template/changelog.md +3 -0
- package/skills/rust-workspace-bootstrap/template/clippy.toml +1 -0
- package/skills/rust-workspace-bootstrap/template/crates/__CLI_CRATE__/Cargo.toml +20 -0
- package/skills/rust-workspace-bootstrap/template/crates/__CLI_CRATE__/src/main.rs +21 -0
- package/skills/rust-workspace-bootstrap/template/crates/__CORE_CRATE__/Cargo.toml +15 -0
- package/skills/rust-workspace-bootstrap/template/crates/__CORE_CRATE__/src/lib.rs +32 -0
- package/skills/rust-workspace-bootstrap/template/deny.toml +18 -0
- package/skills/rust-workspace-bootstrap/template/devenv.nix +214 -0
- package/skills/rust-workspace-bootstrap/template/devenv.yaml +10 -0
- package/skills/rust-workspace-bootstrap/template/docs/book.toml +6 -0
- package/skills/rust-workspace-bootstrap/template/docs/src/SUMMARY.md +3 -0
- package/skills/rust-workspace-bootstrap/template/docs/src/index.md +3 -0
- package/skills/rust-workspace-bootstrap/template/dprint.json +40 -0
- package/skills/rust-workspace-bootstrap/template/knope.toml +73 -0
- package/skills/rust-workspace-bootstrap/template/readme.md +77 -0
- package/skills/rust-workspace-bootstrap/template/rust-toolchain.toml +4 -0
- package/skills/rust-workspace-bootstrap/template/rustfmt.toml +21 -0
- package/skills/rust-workspace-bootstrap/template/scripts/release.sh +61 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
{
|
|
2
|
+
pkgs,
|
|
3
|
+
lib,
|
|
4
|
+
config,
|
|
5
|
+
inputs,
|
|
6
|
+
...
|
|
7
|
+
}:
|
|
8
|
+
|
|
9
|
+
{
|
|
10
|
+
packages =
|
|
11
|
+
with pkgs;
|
|
12
|
+
[
|
|
13
|
+
cargo-binstall
|
|
14
|
+
cargo-run-bin
|
|
15
|
+
dprint
|
|
16
|
+
mdbook
|
|
17
|
+
nixfmt
|
|
18
|
+
rustup
|
|
19
|
+
shfmt
|
|
20
|
+
]
|
|
21
|
+
++ lib.optionals stdenv.isDarwin [
|
|
22
|
+
coreutils
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
enterShell = ''
|
|
26
|
+
set -e
|
|
27
|
+
rustup toolchain install nightly --component rustfmt --no-self-update 2>/dev/null || true
|
|
28
|
+
rustup update stable --no-self-update 2>/dev/null || true
|
|
29
|
+
'';
|
|
30
|
+
|
|
31
|
+
# Disable dotenv hint since direnv interpolation is preferred.
|
|
32
|
+
dotenv.disableHint = true;
|
|
33
|
+
|
|
34
|
+
scripts = {
|
|
35
|
+
"__PROJECT_NAME__" = {
|
|
36
|
+
exec = ''
|
|
37
|
+
set -e
|
|
38
|
+
cargo run --quiet -p __CLI_CRATE__ -- $@
|
|
39
|
+
'';
|
|
40
|
+
description = "Run the __PROJECT_NAME__ CLI from source.";
|
|
41
|
+
binary = "bash";
|
|
42
|
+
};
|
|
43
|
+
"install:all" = {
|
|
44
|
+
exec = ''
|
|
45
|
+
set -e
|
|
46
|
+
install:cargo:bin
|
|
47
|
+
'';
|
|
48
|
+
description = "Install all local development binaries.";
|
|
49
|
+
binary = "bash";
|
|
50
|
+
};
|
|
51
|
+
"install:cargo:bin" = {
|
|
52
|
+
exec = ''
|
|
53
|
+
set -e
|
|
54
|
+
cargo bin --install
|
|
55
|
+
'';
|
|
56
|
+
description = "Install cargo binaries from [workspace.metadata.bin].";
|
|
57
|
+
binary = "bash";
|
|
58
|
+
};
|
|
59
|
+
"update:deps" = {
|
|
60
|
+
exec = ''
|
|
61
|
+
set -e
|
|
62
|
+
cargo update
|
|
63
|
+
devenv update
|
|
64
|
+
'';
|
|
65
|
+
description = "Update Cargo and Nix dependencies.";
|
|
66
|
+
binary = "bash";
|
|
67
|
+
};
|
|
68
|
+
"build:all" = {
|
|
69
|
+
exec = ''
|
|
70
|
+
set -e
|
|
71
|
+
if [ -z "$CI" ]; then
|
|
72
|
+
cargo build --workspace --all-features
|
|
73
|
+
else
|
|
74
|
+
cargo build --workspace --all-features --locked
|
|
75
|
+
fi
|
|
76
|
+
'';
|
|
77
|
+
description = "Build all crates with all features activated.";
|
|
78
|
+
binary = "bash";
|
|
79
|
+
};
|
|
80
|
+
"build:default" = {
|
|
81
|
+
exec = ''
|
|
82
|
+
set -e
|
|
83
|
+
cargo build --workspace --locked
|
|
84
|
+
'';
|
|
85
|
+
description = "Build workspace crates with default features.";
|
|
86
|
+
binary = "bash";
|
|
87
|
+
};
|
|
88
|
+
"test:all" = {
|
|
89
|
+
exec = ''
|
|
90
|
+
set -e
|
|
91
|
+
test:cargo
|
|
92
|
+
test:docs
|
|
93
|
+
'';
|
|
94
|
+
description = "Run all tests across workspace crates.";
|
|
95
|
+
binary = "bash";
|
|
96
|
+
};
|
|
97
|
+
"test:cargo" = {
|
|
98
|
+
exec = ''
|
|
99
|
+
set -e
|
|
100
|
+
cargo nextest run --workspace --all-features --locked
|
|
101
|
+
'';
|
|
102
|
+
description = "Run rust tests with cargo-nextest.";
|
|
103
|
+
binary = "bash";
|
|
104
|
+
};
|
|
105
|
+
"test:docs" = {
|
|
106
|
+
exec = ''
|
|
107
|
+
set -e
|
|
108
|
+
cargo test --workspace --doc --locked
|
|
109
|
+
'';
|
|
110
|
+
description = "Run Rust documentation tests.";
|
|
111
|
+
binary = "bash";
|
|
112
|
+
};
|
|
113
|
+
"coverage:all" = {
|
|
114
|
+
exec = ''
|
|
115
|
+
set -e
|
|
116
|
+
mkdir -p "$DEVENV_ROOT/target/coverage"
|
|
117
|
+
cargo llvm-cov nextest \
|
|
118
|
+
--workspace \
|
|
119
|
+
--all-features \
|
|
120
|
+
--locked \
|
|
121
|
+
--lcov \
|
|
122
|
+
--output-path "$DEVENV_ROOT/target/coverage/lcov.info"
|
|
123
|
+
'';
|
|
124
|
+
description = "Generate lcov coverage report for the whole workspace.";
|
|
125
|
+
binary = "bash";
|
|
126
|
+
};
|
|
127
|
+
"fix:all" = {
|
|
128
|
+
exec = ''
|
|
129
|
+
set -e
|
|
130
|
+
fix:clippy
|
|
131
|
+
fix:format
|
|
132
|
+
'';
|
|
133
|
+
description = "Apply all autofixable lint/format changes.";
|
|
134
|
+
binary = "bash";
|
|
135
|
+
};
|
|
136
|
+
"fix:format" = {
|
|
137
|
+
exec = ''
|
|
138
|
+
set -e
|
|
139
|
+
dprint fmt --config "$DEVENV_ROOT/dprint.json"
|
|
140
|
+
'';
|
|
141
|
+
description = "Format files with dprint.";
|
|
142
|
+
binary = "bash";
|
|
143
|
+
};
|
|
144
|
+
"fix:clippy" = {
|
|
145
|
+
exec = ''
|
|
146
|
+
set -e
|
|
147
|
+
cargo clippy --workspace --all-features --all-targets --fix --allow-dirty --allow-staged
|
|
148
|
+
'';
|
|
149
|
+
description = "Apply clippy autofixes for all workspace crates.";
|
|
150
|
+
binary = "bash";
|
|
151
|
+
};
|
|
152
|
+
"docs:build" = {
|
|
153
|
+
exec = ''
|
|
154
|
+
set -e
|
|
155
|
+
mdbook build "$DEVENV_ROOT/docs"
|
|
156
|
+
'';
|
|
157
|
+
description = "Build mdBook documentation.";
|
|
158
|
+
binary = "bash";
|
|
159
|
+
};
|
|
160
|
+
"verify:docs" = {
|
|
161
|
+
exec = ''
|
|
162
|
+
set -e
|
|
163
|
+
[ -f "$DEVENV_ROOT/docs/book.toml" ]
|
|
164
|
+
[ -f "$DEVENV_ROOT/docs/src/SUMMARY.md" ]
|
|
165
|
+
mdbook build "$DEVENV_ROOT/docs" -d "$DEVENV_ROOT/target/mdbook"
|
|
166
|
+
'';
|
|
167
|
+
description = "Validate docs layout and build mdBook.";
|
|
168
|
+
binary = "bash";
|
|
169
|
+
};
|
|
170
|
+
"deny:check" = {
|
|
171
|
+
exec = ''
|
|
172
|
+
set -e
|
|
173
|
+
cargo deny check
|
|
174
|
+
'';
|
|
175
|
+
description = "Run cargo-deny checks.";
|
|
176
|
+
binary = "bash";
|
|
177
|
+
};
|
|
178
|
+
"lint:all" = {
|
|
179
|
+
exec = ''
|
|
180
|
+
set -e
|
|
181
|
+
lint:clippy
|
|
182
|
+
lint:format
|
|
183
|
+
verify:docs
|
|
184
|
+
deny:check
|
|
185
|
+
'';
|
|
186
|
+
description = "Run all lint and quality gates.";
|
|
187
|
+
binary = "bash";
|
|
188
|
+
};
|
|
189
|
+
"lint:format" = {
|
|
190
|
+
exec = ''
|
|
191
|
+
set -e
|
|
192
|
+
dprint check
|
|
193
|
+
'';
|
|
194
|
+
description = "Check formatting with dprint.";
|
|
195
|
+
binary = "bash";
|
|
196
|
+
};
|
|
197
|
+
"lint:clippy" = {
|
|
198
|
+
exec = ''
|
|
199
|
+
set -e
|
|
200
|
+
cargo clippy --workspace --all-features --all-targets --locked
|
|
201
|
+
'';
|
|
202
|
+
description = "Run clippy checks across the workspace.";
|
|
203
|
+
binary = "bash";
|
|
204
|
+
};
|
|
205
|
+
"release:dry-run" = {
|
|
206
|
+
exec = ''
|
|
207
|
+
set -e
|
|
208
|
+
knope release --dry-run
|
|
209
|
+
'';
|
|
210
|
+
description = "Preview the next release without mutating files.";
|
|
211
|
+
binary = "bash";
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"incremental": true,
|
|
3
|
+
"indentWidth": 2,
|
|
4
|
+
"useTabs": true,
|
|
5
|
+
"exec": {
|
|
6
|
+
"commands": [
|
|
7
|
+
{
|
|
8
|
+
"command": "rustup run nightly rustfmt --unstable-features --edition 2024",
|
|
9
|
+
"exts": ["rs"]
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"command": "nixfmt",
|
|
13
|
+
"exts": ["nix"]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"command": "shfmt --filename {{file_path}} -i 0",
|
|
17
|
+
"exts": ["sh", "bash"]
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"toml": {
|
|
22
|
+
"useTabs": true,
|
|
23
|
+
"indentWidth": 2,
|
|
24
|
+
"cargo.applyConventions": true
|
|
25
|
+
},
|
|
26
|
+
"markdown": {
|
|
27
|
+
"textWrap": "never"
|
|
28
|
+
},
|
|
29
|
+
"excludes": [
|
|
30
|
+
".devenv/**",
|
|
31
|
+
"**/target",
|
|
32
|
+
".bin/",
|
|
33
|
+
"**/node_modules"
|
|
34
|
+
],
|
|
35
|
+
"plugins": [
|
|
36
|
+
"https://plugins.dprint.dev/markdown-0.20.0.wasm",
|
|
37
|
+
"https://plugins.dprint.dev/exec-0.6.0.json@a054130d458f124f9b5c91484833828950723a5af3f8ff2bd1523bd47b83b364",
|
|
38
|
+
"https://plugins.dprint.dev/toml-0.7.0.wasm"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
[changes]
|
|
2
|
+
ignore_conventional_commits = true
|
|
3
|
+
|
|
4
|
+
[package]
|
|
5
|
+
versioned_files = [
|
|
6
|
+
"Cargo.toml",
|
|
7
|
+
{ dependency = "__CORE_CRATE__", path = "Cargo.lock" },
|
|
8
|
+
{ dependency = "__CORE_CRATE__", path = "Cargo.toml" },
|
|
9
|
+
{ dependency = "__CLI_CRATE__", path = "Cargo.lock" },
|
|
10
|
+
{ dependency = "__CLI_CRATE__", path = "Cargo.toml" },
|
|
11
|
+
]
|
|
12
|
+
scopes = ["core", "cli"]
|
|
13
|
+
changelog = "changelog.md"
|
|
14
|
+
extra_changelog_sections = [
|
|
15
|
+
{ name = "Notes", types = ["note"] },
|
|
16
|
+
{ name = "Documentation", types = ["docs"] },
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
[[workflows]]
|
|
20
|
+
name = "release"
|
|
21
|
+
|
|
22
|
+
[[workflows.steps]]
|
|
23
|
+
type = "PrepareRelease"
|
|
24
|
+
|
|
25
|
+
[[workflows.steps]]
|
|
26
|
+
type = "Command"
|
|
27
|
+
command = "dprint fmt"
|
|
28
|
+
|
|
29
|
+
[[workflows.steps]]
|
|
30
|
+
type = "Command"
|
|
31
|
+
command = "cargo check --workspace --locked"
|
|
32
|
+
|
|
33
|
+
[[workflows.steps]]
|
|
34
|
+
type = "Command"
|
|
35
|
+
command = "git add --all"
|
|
36
|
+
|
|
37
|
+
[[workflows.steps]]
|
|
38
|
+
type = "Command"
|
|
39
|
+
command = 'git commit -m "chore: prepare releases $version"'
|
|
40
|
+
|
|
41
|
+
[[workflows.steps]]
|
|
42
|
+
type = "Command"
|
|
43
|
+
command = "git push"
|
|
44
|
+
|
|
45
|
+
[[workflows.steps]]
|
|
46
|
+
type = "Release"
|
|
47
|
+
|
|
48
|
+
[[workflows]]
|
|
49
|
+
name = "document-change"
|
|
50
|
+
|
|
51
|
+
[[workflows.steps]]
|
|
52
|
+
type = "CreateChangeFile"
|
|
53
|
+
|
|
54
|
+
[[workflows.steps]]
|
|
55
|
+
type = "Command"
|
|
56
|
+
command = "dprint fmt .changeset/* --allow-no-files"
|
|
57
|
+
|
|
58
|
+
[[workflows]]
|
|
59
|
+
name = "forced-release"
|
|
60
|
+
|
|
61
|
+
[[workflows.steps]]
|
|
62
|
+
type = "Release"
|
|
63
|
+
|
|
64
|
+
[[workflows]]
|
|
65
|
+
name = "publish"
|
|
66
|
+
|
|
67
|
+
[[workflows.steps]]
|
|
68
|
+
type = "Command"
|
|
69
|
+
command = "cargo publish --workspace"
|
|
70
|
+
|
|
71
|
+
[github]
|
|
72
|
+
owner = "__GITHUB_OWNER__"
|
|
73
|
+
repo = "__GITHUB_REPO__"
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# __PROJECT_TITLE__
|
|
2
|
+
|
|
3
|
+
__DESCRIPTION__
|
|
4
|
+
|
|
5
|
+
A Rust workspace starter inspired by the structure used in `mdt` and `pina`, with strong defaults for:
|
|
6
|
+
|
|
7
|
+
- **knope changeset + release workflows**
|
|
8
|
+
- **devenv/direnv reproducible environments**
|
|
9
|
+
- **GitHub Actions CI, coverage, semver, and release assets**
|
|
10
|
+
|
|
11
|
+
## Crate naming rule
|
|
12
|
+
|
|
13
|
+
Use underscores (`_`) in crate names, not hyphens (`-`).
|
|
14
|
+
|
|
15
|
+
## Workspace Layout
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
__PROJECT_NAME__/
|
|
19
|
+
├── crates/
|
|
20
|
+
│ ├── __CORE_CRATE__/ # shared library crate
|
|
21
|
+
│ └── __CLI_CRATE__/ # CLI crate (binary name: __PROJECT_NAME__)
|
|
22
|
+
├── .changeset/ # knope change files
|
|
23
|
+
├── .github/
|
|
24
|
+
│ ├── actions/devenv/
|
|
25
|
+
│ └── workflows/
|
|
26
|
+
├── docs/ # mdBook docs source
|
|
27
|
+
├── scripts/release.sh
|
|
28
|
+
├── knope.toml
|
|
29
|
+
├── devenv.nix
|
|
30
|
+
└── Cargo.toml
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Quick Start
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
direnv allow
|
|
37
|
+
# or: devenv shell
|
|
38
|
+
|
|
39
|
+
install:cargo:bin
|
|
40
|
+
build:all
|
|
41
|
+
lint:all
|
|
42
|
+
test:all
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Changesets
|
|
46
|
+
|
|
47
|
+
Every change should include a change file:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
knope document-change
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Change types:
|
|
54
|
+
|
|
55
|
+
- `major` — breaking changes
|
|
56
|
+
- `minor` — new features
|
|
57
|
+
- `patch` — fixes/docs/refactors
|
|
58
|
+
|
|
59
|
+
## Release
|
|
60
|
+
|
|
61
|
+
Dry run:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
knope release --dry-run
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Full local release:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
./scripts/release.sh
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Publish:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
knope publish
|
|
77
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
edition = "2024"
|
|
2
|
+
style_edition = "2024"
|
|
3
|
+
unstable_features = true
|
|
4
|
+
condense_wildcard_suffixes = true
|
|
5
|
+
force_multiline_blocks = true
|
|
6
|
+
format_code_in_doc_comments = true
|
|
7
|
+
format_macro_matchers = true
|
|
8
|
+
format_strings = true
|
|
9
|
+
group_imports = "StdExternalCrate"
|
|
10
|
+
hard_tabs = true
|
|
11
|
+
imports_granularity = "Item"
|
|
12
|
+
imports_layout = "HorizontalVertical"
|
|
13
|
+
indent_style = "Block"
|
|
14
|
+
max_width = 100
|
|
15
|
+
newline_style = "Unix"
|
|
16
|
+
normalize_comments = true
|
|
17
|
+
reorder_impl_items = true
|
|
18
|
+
reorder_imports = true
|
|
19
|
+
reorder_modules = true
|
|
20
|
+
use_field_init_shorthand = true
|
|
21
|
+
wrap_comments = false
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Local release helper for __PROJECT_NAME__
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# ./scripts/release.sh
|
|
8
|
+
# ./scripts/release.sh --dry-run
|
|
9
|
+
#
|
|
10
|
+
# This script validates the workspace, then delegates versioning/tagging/changelog
|
|
11
|
+
# orchestration to `knope release`.
|
|
12
|
+
|
|
13
|
+
DRY_RUN=""
|
|
14
|
+
if [[ "${1:-}" == "--dry-run" ]]; then
|
|
15
|
+
DRY_RUN="--dry-run"
|
|
16
|
+
echo "🏃 Dry run mode — no repository changes will be made"
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
echo "📋 Checking prerequisites..."
|
|
20
|
+
command -v knope >/dev/null 2>&1 || {
|
|
21
|
+
echo "❌ knope not found. Install with cargo-binstall or nix/devenv."
|
|
22
|
+
exit 1
|
|
23
|
+
}
|
|
24
|
+
command -v cargo >/dev/null 2>&1 || {
|
|
25
|
+
echo "❌ cargo not found."
|
|
26
|
+
exit 1
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
echo "📋 Checking working tree..."
|
|
30
|
+
if [[ -n $(git status --porcelain) ]] && [[ -z "$DRY_RUN" ]]; then
|
|
31
|
+
echo "❌ Working tree is dirty. Commit or stash your changes first."
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
echo "📋 Checking for pending changesets..."
|
|
36
|
+
CHANGESET_COUNT=$(find .changeset -name '*.md' ! -name 'README.md' 2>/dev/null | wc -l | tr -d ' ')
|
|
37
|
+
if [[ "$CHANGESET_COUNT" -eq 0 ]]; then
|
|
38
|
+
echo "❌ No changesets found. Run 'knope document-change' first."
|
|
39
|
+
exit 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
echo ""
|
|
43
|
+
echo "🔍 Running quality checks..."
|
|
44
|
+
if command -v devenv >/dev/null 2>&1; then
|
|
45
|
+
devenv shell -c -- bash -e -c 'lint:all && test:all && build:all'
|
|
46
|
+
else
|
|
47
|
+
cargo clippy --workspace --all-features --all-targets --locked
|
|
48
|
+
cargo test --workspace --all-features --locked
|
|
49
|
+
cargo build --workspace --all-features --locked
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
echo ""
|
|
53
|
+
echo "🚀 Running knope release..."
|
|
54
|
+
knope release $DRY_RUN
|
|
55
|
+
|
|
56
|
+
echo ""
|
|
57
|
+
if [[ -z "$DRY_RUN" ]]; then
|
|
58
|
+
echo "✅ Release complete"
|
|
59
|
+
else
|
|
60
|
+
echo "✅ Dry run complete — no changes made"
|
|
61
|
+
fi
|