Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev sync to main for 0.2.0 #28

Merged
merged 55 commits into from
Dec 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
f263a27
chore(build): fix autopublish of Debian packages
crazyscot Nov 2, 2024
98eb49c
chore(skip,build): update changelog config
crazyscot Nov 9, 2024
828f063
chore(skip,ci): make better use of BUILT_DEB_FILE, set RUST_BACKTRACE…
crazyscot Nov 9, 2024
c7e9b8f
fix(deps): bump rustls from 0.23.16 to 0.23.18 (#15)
dependabot[bot] Nov 27, 2024
e5201c9
Merge branch 'main' into dev
crazyscot Dec 7, 2024
38de519
feat!: configuration file system (#17)
crazyscot Nov 18, 2024
1ac2397
fix: Always use the same address family with ssh and quic
crazyscot Dec 7, 2024
bdee71e
chore: tidy up clippy warnings for rust 1.82
crazyscot Dec 7, 2024
44d7668
docs: Update project policies and notes
crazyscot Dec 8, 2024
4cac73a
chore(release): add download notes to GH releases page
crazyscot Dec 8, 2024
3ac4944
tidyup: ProgressWriter is really a newtype
crazyscot Dec 8, 2024
6ff1b28
tidyup: consolidate use of ANSI styling as far as possible
crazyscot Dec 8, 2024
5987cce
feat: log entries use local time
crazyscot Dec 8, 2024
ff3c5cc
refactor: tracing layer setup
crazyscot Dec 9, 2024
3ea1876
feat: allow user to specify the time stamp format for printed/logged …
crazyscot Dec 9, 2024
3dde118
fix: make all configuration members non-optional
crazyscot Dec 10, 2024
39dc1a6
package: Add Debian postinst script (#13)
crazyscot Dec 10, 2024
d888da0
misc: add 'package' commit type
crazyscot Dec 10, 2024
a12df26
build: speed up link times
crazyscot Dec 10, 2024
68afab3
chore(deps): bump taiki-e/install-action from 2.44.58 to 2.46.6
crazyscot Dec 12, 2024
598b442
chore(deps): update 17 explicit dependencies
crazyscot Dec 12, 2024
c356930
chore(deps): update myriad implicit dependencies
crazyscot Dec 12, 2024
21f8fb7
tidyup: comments around Optionalify
crazyscot Dec 12, 2024
6513a04
fix: use correct format for the remote endpoint network config debug …
crazyscot Dec 12, 2024
8f00f51
refactor: client works out remote_host once and passes it along
crazyscot Dec 13, 2024
25d3a1e
refactor: move test tempfile helper function out to util
crazyscot Dec 13, 2024
bf52d64
misc: introduce a generic OS abstraction, populate with system_ssh_co…
crazyscot Dec 13, 2024
1425692
feat: look up host name aliases in ssh_config (#22)
crazyscot Dec 13, 2024
c7b20d1
refactor: move config file paths into Platform abstraction
crazyscot Dec 13, 2024
7b5398f
chore(release): rearrange changelog sections
crazyscot Dec 13, 2024
0fe943b
test: unignore doc test on Optionalify
crazyscot Dec 14, 2024
384a870
misc: add AbstractPlatform::user_ssh_config
crazyscot Dec 17, 2024
8f397d9
misc: implement our own ssh config file parser
crazyscot Dec 15, 2024
f6860c2
feat: option to not parse ssh config file
crazyscot Dec 18, 2024
93bee7c
misc: make PortRange parse errors more useful
crazyscot Dec 20, 2024
513c0f5
misc: make HumanU64 parse errors more useful
crazyscot Dec 20, 2024
856e2c0
misc: enhance ssh config file parsing
crazyscot Dec 19, 2024
58c2d98
tidy: Manager constructors
crazyscot Dec 22, 2024
ec3a245
refactor: unify add_*_config into Manager
crazyscot Dec 22, 2024
2672ed7
misc: allow config extraction for an unspecified host i.e. return all…
crazyscot Dec 23, 2024
9f4d03a
feat: move to ssh style config files, with options for the targetted …
crazyscot Dec 23, 2024
eb935b6
refactor: overhaul & simplify internal types
crazyscot Dec 24, 2024
92089be
feat: negative host matching
crazyscot Dec 25, 2024
02de3ab
feat: apply Postel's Law to config files
crazyscot Dec 25, 2024
2623bbb
fix: command-line takes precedence over config when a host is selected
crazyscot Dec 26, 2024
8f0b958
misc: rename ssh_opt to ssh_options, for better UX
crazyscot Dec 26, 2024
4530565
build: add cargo doc task to include private items; fix that build
crazyscot Dec 24, 2024
14655bd
ci: set git_release_draft=true, update MAINTENANCE.md
crazyscot Dec 24, 2024
c0b3e49
ci: build rust binaries with --locked
crazyscot Dec 24, 2024
38bcaad
docs: tidy up --help ordering, update man pages, tidy up doc comments
crazyscot Dec 25, 2024
fa4fbc9
misc: add template system configuration file
crazyscot Dec 26, 2024
7a8deac
style: show Opening control channel message
crazyscot Dec 26, 2024
b54ee50
misc: add feature flag to enable rustls logging (on by default)
crazyscot Dec 26, 2024
1194c24
tidyup: Reduce unnecessary complexity in terminal styling
crazyscot Dec 26, 2024
73bf6d9
chore(release): update dependencies & github actions
crazyscot Dec 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
[target.'cfg(target_os="linux")']
# using mold breaks cargo cross on musl (the image is based on focal, which does not have a mold package)
#rustflags = ["-C", "link-arg=-fuse-ld=mold"]
[future-incompat-report]
frequency = 'always'

#[target.'cfg(target_os="linux")']
# Caution! Unconditionally specifying mold breaks cargo cross on musl.
# (the base docker image cross uses is based on focal, which does not have a mold package)
# So for now, we use defaults to not break CI.
# To speed up local builds, set up your own ~/.cargo/config.toml something like this:
# [target.'cfg(target_os="linux")']
# linker = "clang-15"
# rustflags = ["-C", "link-arg=--ld-path=mold"]


[target.'cfg(target_os="windows")']
rustflags = ["-C", "link-arg=-fuse-ld=lld"]
Expand Down
11 changes: 6 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ on:
workflow_dispatch:

env:
BUILT_DEB_FILE: "invalid.deb" # updated by make-debian-package script
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1

jobs:
# Build the app on all supported platforms, at least for the time being
Expand All @@ -39,7 +41,7 @@ jobs:
toolchain: ${{ matrix.rust }}
targets: ${{ matrix.target }}
- name: Install tools
uses: taiki-e/install-action@v2.44.58
uses: taiki-e/install-action@v2.46.20
with:
tool: cross,cargo-deb
#- name: Set minimal profile (Windows only)
Expand All @@ -56,14 +58,15 @@ jobs:

#- name: Build
# run: cross build --release --locked --target ${{ matrix.target }}
- uses: taiki-e/upload-rust-binary-action@v1.22.1
- uses: taiki-e/upload-rust-binary-action@v1.24.0
id: build
with:
bin: qcp
token: ${{ secrets.GITHUB_TOKEN }}
target: ${{ matrix.target }}
include: README.md,LICENSE,CHANGELOG.md
leading-dir: true
locked: true
tar: unix
zip: windows
dry_run: true
Expand Down Expand Up @@ -98,10 +101,8 @@ jobs:
- name: install packages
run: scripts/install-ubuntu-packages
# Checks begin here!
- run: cargo fmt --all -- --check
- run: cargo fmt --all --check
- run: cargo test --locked
- run: cargo clippy --locked --all-targets
# We care that the benchmarks build and run, not about their numeric output.
# To keep the CI a bit leaner, do this in the dev profile.
- run: cargo build --locked --all-targets
- run: cargo doc --no-deps --locked
11 changes: 7 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ on:
workflow_dispatch: # for testing

env:
BUILT_DEB_FILE: "invalid.deb" # updated by make-debian-package script
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1

permissions:
contents: write
Expand Down Expand Up @@ -34,7 +36,7 @@ jobs:
with:
toolchain: ${{ matrix.rust }}
targets: ${{ matrix.target }}
- uses: taiki-e/install-action@v2.44.58
- uses: taiki-e/install-action@v2.46.20
with:
tool: cross,cargo-deb
- uses: Swatinem/rust-cache@v2
Expand All @@ -47,14 +49,15 @@ jobs:

#- name: Build
# run: cross build --release --locked --target ${{ matrix.target }}
- uses: taiki-e/upload-rust-binary-action@v1.22.1
- uses: taiki-e/upload-rust-binary-action@v1.24.0
id: build
with:
bin: qcp
token: ${{ secrets.GITHUB_TOKEN }}
target: ${{ matrix.target }}
include: README.md,LICENSE,CHANGELOG.md
leading-dir: true
locked: true
tar: unix
zip: windows
dry_run: ${{ github.event_name != 'release' }}
Expand All @@ -71,9 +74,9 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: qcp-deb-${{ matrix.target }}
path: target/**/debian/qcp*.deb
path: ${{ env.BUILT_DEB_FILE }}
- name: Publish deb package to release
if: ${{ github.event_name == 'release' }}
if: ${{ matrix.build_deb }} && ${{ github.event_name == 'release' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ github.ref_name }} ${{ env.BUILT_DEB_FILE }}
16 changes: 8 additions & 8 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
{
"type": "lldb",
"request": "launch",
"name": "Debug executable 'qcpt'",
"name": "Debug executable 'qcp'",
"cargo": {
"args": [
"build",
"--bin=qcpt",
"--package=qcpt"
"--bin=qcp",
"--package=qcp"
],
"filter": {
"name": "qcpt",
"name": "qcp",
"kind": "bin"
}
},
Expand All @@ -25,16 +25,16 @@
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in executable 'qcpt'",
"name": "Debug unit tests in executable 'qcp'",
"cargo": {
"args": [
"test",
"--no-run",
"--bin=qcpt",
"--package=qcpt"
"--bin=qcp",
"--package=qcp"
],
"filter": {
"name": "qcpt",
"name": "qcp",
"kind": "bin"
}
},
Expand Down
15 changes: 14 additions & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{
"type": "cargo",
"command": "doc",
"args": ["--no-deps"],
"args": ["--no-deps", "--locked"],
"problemMatcher": [
"$rustc"
],
Expand All @@ -13,6 +13,19 @@
"isDefault": false
},
"label": "rust: cargo doc"
},
{
"type": "cargo",
"command": "doc",
"args": ["--no-deps", "--locked", "--document-private-items"],
"problemMatcher": [
"$rustc"
],
"group": {
"kind": "build",
"isDefault": false
},
"label": "rust: cargo doc --document-private-items"
}
]
}
39 changes: 39 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Contributing to QCP

## 🐛 Bug reports & Feature requests

Bug reports and feature requests are welcome, please open an [issue].

- It may be useful to check the [issues list] and the [discussions] first in case somebody else has already raised it.
- Please be aware that I mostly work on this project in my own time.

## 🏗️ Pull request policy

If you're thinking of contributing something non-trivial, it might be best to raise it in [discussions] first so you can get feedback early. This is particularly important for new features, to ensure they are aligned with the project goals and your approach is suitable.

* Changes should normally be based on the `dev` branch. _(Exception: hotfixes may be branched against `main`.)_
* PRs must pass the full set of CI checks (see below). No exceptions.
* Unit tests are encouraged, particularly those which fail before and pass after a fix.
* Refactoring for its own sake is OK if driven by a feature or bugfix.
* Clean commit histories are preferred, but don't be discouraged if you don't know how to do this. git can be a tricky tool.
* Commit messages should follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).
* Begin the commit message for a feature with `feat:`. If it's a bugfix, use `fix:`.
* For a full list of supported message tags, look at `commit_parsers` in [release-plz.toml](release-plz.toml).
* This policy is in force since release 0.1.0. Earlier commits are considered grandfathered in.
* Where there is an issue number, commit messages should reference it, e.g. (#12)
* Do not edit CHANGELOG.md, that will be done for you on release.

## ☑️ CI checks applied

| Check | How to run it yourself | Notes |
| ----- | ---------------------- | ----- |
| Code style | `cargo fmt --all --check` | For VS Code users, `editor.formatOnSave=true` is set |
| Everything must build | `cargo build --all-targets` |
| Unit tests pass | `cargo test` |
| Lints | `cargo clippy --all-targets` | This is a reasonably pedantic set of lints, which I make no apologies for |
| Docs build | `cargo doc --no-deps` |


[issue]: https://github.com/crazyscot/qcp/issues/new/choose
[issues list]: https://github.com/crazyscot/qcp/issues
[discussions]: https://github.com/crazyscot/qcp/discussions
Loading
Loading