Compare commits
4 Commits
v0.5.0-alp
...
5084f5b10d
| Author | SHA1 | Date | |
|---|---|---|---|
|
5084f5b10d
|
|||
|
55fb234db6
|
|||
|
d8db96603b
|
|||
|
c45e12ed9a
|
@@ -1,3 +0,0 @@
|
||||
kind: Added
|
||||
body: Add a web extension
|
||||
time: 2025-11-12T20:13:11.961655215+01:00
|
||||
@@ -24,15 +24,3 @@ newlines:
|
||||
beforeChangelogVersion: 1
|
||||
endOfVersion: 1
|
||||
envPrefix: CHANGIE_
|
||||
|
||||
# update the version in relevant files
|
||||
replacements:
|
||||
- path: Cargo.toml
|
||||
find: '^version = ".*"'
|
||||
replace: 'version = "{{.VersionNoPrefix}}"'
|
||||
- path: web-extension/cl/manifest.json
|
||||
find: '"version": ".*"'
|
||||
replace: '"version": "{{.VersionNoPrefix}}"'
|
||||
- path: web-extension/cl/package.json
|
||||
find: '"version": ".*"'
|
||||
replace: '"version": "{{.VersionNoPrefix}}"'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Release binary and debian package for cl-cli
|
||||
name: Release binary for cl-cli
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -6,79 +6,28 @@ on:
|
||||
- v**
|
||||
|
||||
jobs:
|
||||
webext-build:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: node:24
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
- name: Install dependencies
|
||||
run: cd web-extension/cl && npm install
|
||||
- name: Build and sign web extension
|
||||
env:
|
||||
AMO_API_KEY: ${{ secrets.AMO_API_KEY }}
|
||||
AMO_API_SECRET: ${{ secrets.AMO_API_SECRET }}
|
||||
run: cd web-extension/cl && npm run sign
|
||||
- name: Upload web extension artifact
|
||||
uses: https://github.com/actions/upload-artifact@v3
|
||||
with:
|
||||
name: webext-xpi
|
||||
path: web-extension/cl/web-ext-artifacts/*.xpi
|
||||
retention-days: 7
|
||||
if-no-files-found: error
|
||||
|
||||
build-and-release:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [webext-build]
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
- name: Install rust toolchain
|
||||
uses: https://github.com/dtolnay/rust-toolchain@stable
|
||||
- name: Install cargo-deb
|
||||
run: cargo install --quiet cargo-deb
|
||||
- name: Build Debian package
|
||||
run: cargo deb --quiet
|
||||
- name: Upload Debian package to Gitea registry
|
||||
env:
|
||||
GITEA_OWNER: ${{ vars.PUBLISH_USERNAME }}
|
||||
GITEA_SERVER_URL: ${{ github.server_url }}
|
||||
GITEA_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
|
||||
DEB_DISTRIBUTIONS: noble,plucky,questing
|
||||
DEB_COMPONENT: main
|
||||
DEB_ARCH: amd64
|
||||
run: |
|
||||
set -euo pipefail
|
||||
DEB_FILE=$(ls target/debian/*.deb | head -n1)
|
||||
if [ -z "${DEB_FILE}" ]; then
|
||||
echo "No .deb file found in target/debian" >&2
|
||||
exit 1
|
||||
fi
|
||||
# comma-separated in DEB_DISTRIBUTIONS, e.g. "noble,plucky,questing"
|
||||
IFS=',' read -r -a DISTROS <<< "$DEB_DISTRIBUTIONS"
|
||||
for DISTRO in "${DISTROS[@]}"; do
|
||||
echo "Uploading ${DEB_FILE} to ${GITEA_SERVER_URL} for owner ${GITEA_OWNER}"
|
||||
curl -sSf -X PUT \
|
||||
--user "${GITEA_OWNER}:${GITEA_TOKEN}" \
|
||||
--upload-file "${DEB_FILE}" \
|
||||
"${GITEA_SERVER_URL}/api/packages/${GITEA_OWNER}/debian/pool/${DISTRO}/main/upload"
|
||||
done
|
||||
- name: Download web extension artifact
|
||||
uses: https://github.com/actions/download-artifact@v3
|
||||
- name: Build binaries
|
||||
run: cargo build --release
|
||||
- name: Read release content
|
||||
uses: https://github.com/jaywcjlove/github-action-read-file@main
|
||||
id: read_release
|
||||
with:
|
||||
name: webext-xpi
|
||||
path: web-extension/cl/web-ext-artifacts
|
||||
path: .changes/${{ github.ref_name }}.md
|
||||
- name: Release
|
||||
uses: https://gitea.com/akkuman/gitea-release-action@v1
|
||||
env:
|
||||
NODE_OPTIONS: '--experimental-fetch' # if nodejs < 18
|
||||
with:
|
||||
files: |-
|
||||
target/release/cl-cli
|
||||
config.toml.dist
|
||||
web-extension/cl/web-ext-artifacts/*.xpi
|
||||
md5sum: true
|
||||
sha256sum: true
|
||||
body: Test release
|
||||
prerelease: true
|
||||
#body_path: .changes/${{ github.ref_name }}.md
|
||||
body_path: .changes/${{ github.ref_name }}.md
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
# cl-cli — Project-specific development guidelines
|
||||
|
||||
This document captures project-specific knowledge to help advanced contributors work efficiently on this repository. It focuses on practical, non-obvious details (build, configuration, testing, and development tips) specific to this codebase.
|
||||
|
||||
## 1. Build and configuration
|
||||
|
||||
- Rust workspace/binaries
|
||||
- Single crate with two binaries defined in `Cargo.toml`:
|
||||
- `cl-cli` → `src/main.rs`: the CLI entrypoint.
|
||||
- `webext` → `src/webext.rs`: a Native Messaging host used by the browser extension.
|
||||
- Library module tree under `src/lib.rs` exposes common code to both binaries.
|
||||
- Toolchain: stable Rust; CI uses dtolnay/rust-toolchain@stable.
|
||||
- Dependencies and async runtime
|
||||
- Async via `tokio` (features: `rt`, `rt-multi-thread`, `macros`). Both binaries use `#[tokio::main]`.
|
||||
- HTTP via `reqwest`; serialization via `serde`/`serde_json`; configuration via `toml`.
|
||||
- Build
|
||||
- Standard build works without extra flags:
|
||||
- `cargo build` (debug) or `cargo build --release` (optimized).
|
||||
- Individual binaries:
|
||||
- `cargo build --bin cl-cli`
|
||||
- `cargo build --bin webext`
|
||||
- The web extension host (`webext`) is a regular Rust binary; it is not bundled by NPM tooling.
|
||||
- Configuration file
|
||||
- Expected location by default: `$HOME/.config/cl-cli/config.toml`.
|
||||
- The CLI allows overriding the path via `--config <PATH>`; the webext host always reads the default path.
|
||||
- Template: `config.toml.dist`. Minimal fields:
|
||||
- `[[gitlab]] { token, domain }`
|
||||
- `[[gitea]] { token, domain }`
|
||||
- `[openproject] { token, base_url }`
|
||||
- Example of initial setup (copy the dist and edit):
|
||||
```bash
|
||||
mkdir -p "$HOME/.config/cl-cli"
|
||||
cp config.toml.dist "$HOME/.config/cl-cli/config.toml"
|
||||
$EDITOR "$HOME/.config/cl-cli/config.toml"
|
||||
```
|
||||
- Error surface: parsing and IO errors are surfaced as `GeneralError`; the CLI will print and exit non‑zero, the `webext` host will return an error payload.
|
||||
- Local OpenProject for development
|
||||
- `docker-compose.yaml` provides a local OpenProject (13.x) at `http://localhost:8080` with persisted volumes under `.docker-data/`.
|
||||
|
||||
## 2. Testing
|
||||
|
||||
- Test types present
|
||||
- Unit tests live alongside code under `#[cfg(test)]` modules (e.g., `src/gitea/issue.rs`, `src/webext.rs`, `src/planning/utils.rs`).
|
||||
- Integration tests can be placed under `tests/`. The crate exposes internal modules via `src/lib.rs` for integration testing.
|
||||
- Running tests
|
||||
- `cargo test` runs unit and integration tests. CI also runs `cargo test` on every push/PR.
|
||||
- Tests are pure and do not require network or external services; avoid adding network‑bound tests.
|
||||
- Adding new tests
|
||||
- Prefer unit tests near the logic being tested. For integration coverage across modules, place files under `tests/` and use public items from `cl_cli`.
|
||||
- Keep tests deterministic: no real HTTP calls; if needed, mock boundaries at the client layer.
|
||||
- Example integration test (verified locally during preparation)
|
||||
- Minimal example using a pure helper. Create `tests/example_gitea_url.rs`:
|
||||
```rust
|
||||
use url::Url;
|
||||
|
||||
#[test]
|
||||
fn converts_gitea_issue_html_url_to_api_url() {
|
||||
// Pure transformation; no network
|
||||
let input = Url::parse("https://gitea.champs-libres.be/champs-libres/test/issues/1").unwrap();
|
||||
let out = cl_cli::gitea::issue::issue_html_url_to_api(&input).unwrap();
|
||||
assert_eq!(
|
||||
out.as_str(),
|
||||
"https://gitea.champs-libres.be/api/v1/repos/champs-libres/test/issues/1"
|
||||
);
|
||||
}
|
||||
```
|
||||
- Run it with `cargo test`. Remove the file if it was only created as a demo.
|
||||
|
||||
## 3. CLI usage tips (project‑specific)
|
||||
|
||||
- `cl-cli planning i2work <gitlab_issue_url> <openproject_project_identifier>` creates an OpenProject work package from a GitLab issue.
|
||||
- The OpenProject project identifier is the short slug in URLs, e.g. `chill` in `.../projects/chill/...`.
|
||||
- The command uses tokens from the configuration file to authenticate to GitLab and OpenProject.
|
||||
- Example:
|
||||
```bash
|
||||
cl-cli planning i2work \
|
||||
https://gitlab.com/Chill-Projet/chill-bundles/-/issues/240 \
|
||||
chill
|
||||
```
|
||||
- `cl-cli test` invokes a debug routine (see `src/debug.rs`) primarily for local diagnostics.
|
||||
|
||||
## 4. Web extension native host (`webext`)
|
||||
|
||||
- Purpose: acts as a Native Messaging host for a browser extension under `web-extension/`.
|
||||
- Protocol: communicates via stdin/stdout using 4‑byte length‑prefixed JSON messages.
|
||||
- Input `serde` enum is tagged with `type`; currently supports `{"type":"Issue2Work", ...}`.
|
||||
- Output is tagged with `result` (`Ok` or `Error`) and contains `data` when successful.
|
||||
- Business flow: the host reads config from `$HOME/.config/cl-cli/config.toml`, translates the input into `Issue2Work` CLI arguments, delegates to `planning::issue2work::handle_issue2work`, and returns the created work package URL.
|
||||
- Testing the transport: see unit tests in `src/webext.rs` that exercise message framing and deserialization.
|
||||
|
||||
## 5. Code style and architectural notes
|
||||
|
||||
- Module layout
|
||||
- Public library facade (`src/lib.rs`) re‑exports internal modules for reuse by both binaries and tests.
|
||||
- Planning features under `src/planning/` with a trait (`Issue2WorkActionTrait`) and concrete actions per platform.
|
||||
- Git providers (`src/gitlab`, `src/gitea`) and OpenProject client live in dedicated modules.
|
||||
- Error handling
|
||||
- Unified lightweight `GeneralError` encapsulates user‑facing messages; conversions from `reqwest::Error` and header errors are provided.
|
||||
- Data parsing
|
||||
- Input/Output types rely on `serde` with explicit tagging for clarity and forward compatibility.
|
||||
- Concurrency
|
||||
- All async entrypoints are `#[tokio::main]`; downstream async functions return `impl Future` to stay generic and testable.
|
||||
- External calls
|
||||
- Wrap external service interactions behind client modules; this eases mocking in tests and keeps pure helpers (like URL mappers) easily testable.
|
||||
|
||||
## 6. Continuous Integration
|
||||
|
||||
- `.gitea/workflows/release/check.yaml` performs:
|
||||
- Checkout → install stable toolchain → `cargo build` → `cargo test`.
|
||||
- Release job (see `.gitea/workflows/release/build-and-release.yaml`) builds release artifacts for distribution.
|
||||
|
||||
## 7. Troubleshooting / gotchas (project‑specific)
|
||||
|
||||
- Config path
|
||||
- The CLI accepts `--config`, but the webext host reads the default path only. Ensure `$HOME/.config/cl-cli/config.toml` exists when using the browser integration.
|
||||
- Tokens scope
|
||||
- Ensure personal access tokens for GitLab and OpenProject have sufficient scopes for reading issues and creating work packages respectively.
|
||||
- Locale/URLs
|
||||
- `Issue2Work` requires the OpenProject project identifier (slug), not its display name.
|
||||
- HTTP environment
|
||||
- `reqwest` honors proxy vars (`HTTP_PROXY`, `HTTPS_PROXY`) if present; be aware for corporate environments.
|
||||
|
||||
## 8. Commands quick reference
|
||||
|
||||
- Build: `cargo build --release`
|
||||
- Run CLI: `cargo run --bin cl-cli -- <args>`
|
||||
- Run webext host directly for dev: `cargo run --bin webext`
|
||||
- Tests: `cargo test`
|
||||
- Linting: `cargo clippy` (not enforced in CI but recommended)
|
||||
|
||||
285
Cargo.lock
generated
285
Cargo.lock
generated
@@ -111,7 +111,7 @@ dependencies = [
|
||||
"miniz_oxide",
|
||||
"object",
|
||||
"rustc-demangle",
|
||||
"windows-link",
|
||||
"windows-link 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -169,12 +169,12 @@ dependencies = [
|
||||
"iana-time-zone",
|
||||
"num-traits",
|
||||
"serde",
|
||||
"windows-link",
|
||||
"windows-link 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cl-cli"
|
||||
version = "0.5.0-alpha16"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"gitlab",
|
||||
@@ -245,6 +245,16 @@ dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.8.7"
|
||||
@@ -360,6 +370,22 @@ version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
||||
|
||||
[[package]]
|
||||
name = "errno"
|
||||
version = "0.3.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "2.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
|
||||
|
||||
[[package]]
|
||||
name = "find-msvc-tools"
|
||||
version = "0.1.4"
|
||||
@@ -372,6 +398,21 @@ version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
||||
dependencies = [
|
||||
"foreign-types-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types-shared"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
||||
|
||||
[[package]]
|
||||
name = "form_urlencoded"
|
||||
version = "1.2.2"
|
||||
@@ -665,6 +706,22 @@ dependencies = [
|
||||
"webpki-roots",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-tls"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"http-body-util",
|
||||
"hyper",
|
||||
"hyper-util",
|
||||
"native-tls",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-util"
|
||||
version = "0.1.17"
|
||||
@@ -684,9 +741,11 @@ dependencies = [
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"system-configuration",
|
||||
"tokio",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
"windows-registry",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -914,6 +973,12 @@ version = "0.2.177"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
|
||||
|
||||
[[package]]
|
||||
name = "litemap"
|
||||
version = "0.8.0"
|
||||
@@ -964,6 +1029,23 @@ dependencies = [
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "native-tls"
|
||||
version = "0.2.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
"openssl",
|
||||
"openssl-probe",
|
||||
"openssl-sys",
|
||||
"schannel",
|
||||
"security-framework",
|
||||
"security-framework-sys",
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.19"
|
||||
@@ -1005,6 +1087,50 @@ dependencies = [
|
||||
"pathdiff",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.10.74"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"cfg-if",
|
||||
"foreign-types",
|
||||
"libc",
|
||||
"once_cell",
|
||||
"openssl-macros",
|
||||
"openssl-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-macros"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-probe"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.110"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pathdiff"
|
||||
version = "0.2.3"
|
||||
@@ -1029,6 +1155,12 @@ version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
|
||||
|
||||
[[package]]
|
||||
name = "potential_utf"
|
||||
version = "0.1.3"
|
||||
@@ -1173,10 +1305,12 @@ dependencies = [
|
||||
"http-body-util",
|
||||
"hyper",
|
||||
"hyper-rustls",
|
||||
"hyper-tls",
|
||||
"hyper-util",
|
||||
"js-sys",
|
||||
"log",
|
||||
"mime",
|
||||
"native-tls",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"quinn",
|
||||
@@ -1187,6 +1321,7 @@ dependencies = [
|
||||
"serde_urlencoded",
|
||||
"sync_wrapper",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
"tokio-rustls",
|
||||
"tower",
|
||||
"tower-http",
|
||||
@@ -1224,6 +1359,19 @@ version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "1.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls"
|
||||
version = "0.23.34"
|
||||
@@ -1271,6 +1419,38 @@ version = "1.0.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
|
||||
|
||||
[[package]]
|
||||
name = "schannel"
|
||||
version = "0.1.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
|
||||
dependencies = [
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "2.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"core-foundation",
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
"security-framework-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "2.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.228"
|
||||
@@ -1429,6 +1609,40 @@ dependencies = [
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-configuration"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"core-foundation",
|
||||
"system-configuration-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-configuration-sys"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
version = "3.23.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"getrandom 0.3.4",
|
||||
"once_cell",
|
||||
"rustix",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.69"
|
||||
@@ -1520,6 +1734,16 @@ dependencies = [
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-native-tls"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
|
||||
dependencies = [
|
||||
"native-tls",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-rustls"
|
||||
version = "0.26.4"
|
||||
@@ -1688,6 +1912,12 @@ version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
||||
|
||||
[[package]]
|
||||
name = "vcpkg"
|
||||
version = "0.2.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||
|
||||
[[package]]
|
||||
name = "want"
|
||||
version = "0.3.1"
|
||||
@@ -1821,9 +2051,9 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
|
||||
dependencies = [
|
||||
"windows-implement",
|
||||
"windows-interface",
|
||||
"windows-link",
|
||||
"windows-result",
|
||||
"windows-strings",
|
||||
"windows-link 0.2.1",
|
||||
"windows-result 0.4.1",
|
||||
"windows-strings 0.5.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1848,19 +2078,54 @@ dependencies = [
|
||||
"syn 2.0.108",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-link"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
|
||||
|
||||
[[package]]
|
||||
name = "windows-link"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
||||
|
||||
[[package]]
|
||||
name = "windows-registry"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
|
||||
dependencies = [
|
||||
"windows-link 0.1.3",
|
||||
"windows-result 0.3.4",
|
||||
"windows-strings 0.4.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-result"
|
||||
version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
|
||||
dependencies = [
|
||||
"windows-link 0.1.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-result"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
|
||||
dependencies = [
|
||||
"windows-link",
|
||||
"windows-link 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-strings"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
|
||||
dependencies = [
|
||||
"windows-link 0.1.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1869,7 +2134,7 @@ version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
|
||||
dependencies = [
|
||||
"windows-link",
|
||||
"windows-link 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1896,7 +2161,7 @@ version = "0.61.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
|
||||
dependencies = [
|
||||
"windows-link",
|
||||
"windows-link 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1921,7 +2186,7 @@ version = "0.53.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
|
||||
dependencies = [
|
||||
"windows-link",
|
||||
"windows-link 0.2.1",
|
||||
"windows_aarch64_gnullvm 0.53.1",
|
||||
"windows_aarch64_msvc 0.53.1",
|
||||
"windows_i686_gnu 0.53.1",
|
||||
|
||||
18
Cargo.toml
18
Cargo.toml
@@ -1,9 +1,7 @@
|
||||
[package]
|
||||
name = "cl-cli"
|
||||
version = "0.5.0-alpha16"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
license = "GPL-3.0-or-later"
|
||||
description = "Some helpers scripts for Champs-Libres"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
@@ -18,7 +16,7 @@ path="src/webext.rs"
|
||||
[dependencies]
|
||||
clap = { version = "4.1.13", features = ["derive"] }
|
||||
gitlab = "0.1804.0"
|
||||
reqwest = { version = "0.12.24", default-features = false, features = ["rustls-tls", "http2", "charset"] }
|
||||
reqwest = "0.12.24"
|
||||
serde = { version = "1.0.228", features = ["derive"] }
|
||||
toml = "0.9.8"
|
||||
url = "2.5.7"
|
||||
@@ -27,15 +25,3 @@ simple-home-dir = "0.5.2"
|
||||
log = "0.4.28"
|
||||
open = "5.3.2"
|
||||
serde_json = "1.0.145"
|
||||
|
||||
[package.metadata.deb]
|
||||
maintainer = "Julien Fastré <julien.fastre@champs-libres.coop>"
|
||||
extended-description = """Helpers for Champs-Libres"""
|
||||
depends = "$auto"
|
||||
section = "utility"
|
||||
priority = "optional"
|
||||
assets = [
|
||||
["target/release/cl-cli", "usr/bin/cl", "755"],
|
||||
["target/release/webext", "usr/bin/cl-webext", "755"],
|
||||
["web-extension/_native-messaging/cl_cli.json", "/usr/lib/mozilla/native-messaging-hosts/", "644"]
|
||||
]
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"name": "cl_cli",
|
||||
"description": "Call cl-cli from browser",
|
||||
"path": "/usr/bin/cl-webext",
|
||||
"type": "stdio",
|
||||
"allowed_extensions": ["helper@champs-libres-coop"]
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
# This file was created by https://github.com/mozilla/web-ext
|
||||
# Your auto-generated extension ID for addons.mozilla.org is:
|
||||
helper@champs-libres-coop
|
||||
@@ -5,10 +5,7 @@
|
||||
"browser_specific_settings": {
|
||||
"gecko": {
|
||||
"id": "helper@champs-libres-coop",
|
||||
"strict_min_version": "143.0",
|
||||
"data_collection_permissions": {
|
||||
"required": ["none"]
|
||||
}
|
||||
"strict_min_version": "143.0"
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -7,12 +7,11 @@
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"check": "tsc --noEmit",
|
||||
"build": "tsc",
|
||||
"package": "tsc && web-ext build --overwrite-dest",
|
||||
"sign": "tsc && web-ext build --overwrite-dest && web-ext sign --use-submission-api --api-key $AMO_API_KEY --api-secret $AMO_API_SECRET --channel unlisted"
|
||||
"package": "tsc && web-ext build --overwrite-dest"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"license": "ISC",
|
||||
"type": "commonjs",
|
||||
"devDependencies": {
|
||||
"@types/firefox-webext-browser": "^143.0.0",
|
||||
|
||||
Reference in New Issue
Block a user