devobs 0.2.0__tar.gz → 0.2.1__tar.gz
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.
- {devobs-0.2.0 → devobs-0.2.1}/.devcontainer/devcontainer.json +1 -1
- {devobs-0.2.0 → devobs-0.2.1}/.devcontainer/onCreateCommand.sh +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.devcontainer/postAttachCommand.sh +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.github/workflows/ci.yaml +5 -9
- devobs-0.2.1/.github/workflows/prepare-release.yaml +51 -0
- {devobs-0.2.0 → devobs-0.2.1}/.github/workflows/release.yaml +15 -20
- {devobs-0.2.0 → devobs-0.2.1}/.pre-commit-config.yaml +9 -10
- devobs-0.2.1/.pre-commit-hooks.yaml +22 -0
- {devobs-0.2.0 → devobs-0.2.1}/Cargo.lock +3 -10
- {devobs-0.2.0 → devobs-0.2.1}/Cargo.toml +2 -2
- {devobs-0.2.0 → devobs-0.2.1}/PKG-INFO +2 -1
- devobs-0.2.0/.pre-commit-hooks.yaml +0 -7
- {devobs-0.2.0 → devobs-0.2.1}/.config/nextest.toml +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.editorconfig +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.gitattributes +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.github/dependabot.yaml +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.gitignore +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.rustfmt.toml +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.vscode/extensions.json +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.vscode/launch.json +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/.vscode/settings.json +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/LICENSE +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/Makefile +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/README.md +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/pyproject.toml +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/rust-toolchain.toml +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/src/commands/assert_diff.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/src/commands/check_file_pair.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/src/commands.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/src/main.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/src/utils/fs.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/src/utils.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/mod.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_create-2.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_create.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_delete-2.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_delete.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_modify-2.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_modify.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__empty_directory.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__no_changes.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__no_command_to_run.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__nonexistent_directory.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__on_command_error_ignore.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_assert_diff__on_command_error_propagate.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__backward_matching.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__create_if_not_exists.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__create_if_not_exists_dry_run.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__empty_directory_no_error_no_output.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__forward_matching.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__on_fully_populated_directory.snap +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/test_assert_diff.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/commands/test_check_file_pair.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/helpers.rs +0 -0
- {devobs-0.2.0 → devobs-0.2.1}/tests/integration_test.rs +0 -0
|
File without changes
|
|
File without changes
|
|
@@ -10,18 +10,16 @@ permissions: read-all
|
|
|
10
10
|
|
|
11
11
|
jobs:
|
|
12
12
|
lint:
|
|
13
|
-
name: Lint
|
|
14
13
|
runs-on: ubuntu-latest
|
|
15
14
|
timeout-minutes: 10
|
|
16
15
|
steps:
|
|
17
|
-
-
|
|
18
|
-
uses: actions/checkout@v5
|
|
16
|
+
- uses: actions/checkout@v5
|
|
19
17
|
|
|
20
18
|
- name: Set up Rust
|
|
21
19
|
run: rustup show
|
|
22
20
|
|
|
23
21
|
- name: Manage Rust cache
|
|
24
|
-
uses: Swatinem/rust-cache@v2
|
|
22
|
+
uses: Swatinem/rust-cache@v2.8.1
|
|
25
23
|
|
|
26
24
|
- name: Check code formatting
|
|
27
25
|
run: cargo fmt --check
|
|
@@ -30,24 +28,22 @@ jobs:
|
|
|
30
28
|
run: cargo clippy
|
|
31
29
|
|
|
32
30
|
test:
|
|
33
|
-
name: Test
|
|
34
31
|
runs-on: ubuntu-latest
|
|
35
32
|
timeout-minutes: 10
|
|
36
33
|
permissions:
|
|
37
34
|
contents: read
|
|
38
35
|
id-token: write
|
|
39
36
|
steps:
|
|
40
|
-
-
|
|
41
|
-
uses: actions/checkout@v5
|
|
37
|
+
- uses: actions/checkout@v5
|
|
42
38
|
|
|
43
39
|
- name: Set up Rust
|
|
44
40
|
run: rustup show
|
|
45
41
|
|
|
46
42
|
- name: Manage Rust cache
|
|
47
|
-
uses: Swatinem/rust-cache@v2
|
|
43
|
+
uses: Swatinem/rust-cache@v2.8.1
|
|
48
44
|
|
|
49
45
|
- name: Install devtools
|
|
50
|
-
uses: taiki-e/install-action@v2
|
|
46
|
+
uses: taiki-e/install-action@v2.62.48
|
|
51
47
|
with:
|
|
52
48
|
tool: cargo-binstall,cargo-llvm-cov,cargo-nextest
|
|
53
49
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Prepare Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
tag:
|
|
7
|
+
description: Semver-style tag for release (e.g., v1.0.0)
|
|
8
|
+
required: true
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
create-pr:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
timeout-minutes: 5
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
pull-requests: write
|
|
17
|
+
steps:
|
|
18
|
+
# TODO(lasuillard): Validate tag format more strictly (semver)
|
|
19
|
+
- name: Check tag format
|
|
20
|
+
run: |
|
|
21
|
+
if [[ ! "${{ inputs.tag }}" =~ ^v ]]; then
|
|
22
|
+
echo "Tag must start with 'v'"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
- uses: actions/checkout@v5
|
|
27
|
+
|
|
28
|
+
# https://github.com/killercup/cargo-edit/issues/864
|
|
29
|
+
- name: Set version
|
|
30
|
+
run: |
|
|
31
|
+
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
|
32
|
+
brew install cargo-edit
|
|
33
|
+
tag="${{ inputs.tag }}"
|
|
34
|
+
tag_no_v="${tag#v}"
|
|
35
|
+
cargo set-version "${tag#v}"
|
|
36
|
+
|
|
37
|
+
- name: Generate GitHub App token
|
|
38
|
+
uses: actions/create-github-app-token@v2
|
|
39
|
+
id: generate-token
|
|
40
|
+
with:
|
|
41
|
+
app-id: ${{ vars.GH_APP_ID }}
|
|
42
|
+
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
|
43
|
+
|
|
44
|
+
- name: Create pull request
|
|
45
|
+
uses: peter-evans/create-pull-request@v7.0.8
|
|
46
|
+
with:
|
|
47
|
+
token: ${{ steps.generate-token.outputs.token }}
|
|
48
|
+
sign-commits: true
|
|
49
|
+
title: Prepare release (${{ inputs.tag }})
|
|
50
|
+
branch: release/${{ inputs.tag }}
|
|
51
|
+
delete-branch: true
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
name: Release
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
- main
|
|
7
|
-
tags:
|
|
8
|
-
- v*
|
|
9
|
-
|
|
10
|
-
permissions: read-all
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
11
6
|
|
|
12
7
|
jobs:
|
|
13
8
|
build:
|
|
@@ -18,12 +13,13 @@ jobs:
|
|
|
18
13
|
- platform: ubuntu-latest
|
|
19
14
|
target: x86_64
|
|
20
15
|
|
|
21
|
-
name:
|
|
16
|
+
name: build (${{ matrix.target }})
|
|
22
17
|
runs-on: ${{ matrix.platform }}
|
|
23
18
|
timeout-minutes: 15
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
24
21
|
steps:
|
|
25
|
-
-
|
|
26
|
-
uses: actions/checkout@v5
|
|
22
|
+
- uses: actions/checkout@v5
|
|
27
23
|
|
|
28
24
|
- name: Build wheels
|
|
29
25
|
uses: PyO3/maturin-action@v1
|
|
@@ -32,7 +28,7 @@ jobs:
|
|
|
32
28
|
args: --release --out dist
|
|
33
29
|
|
|
34
30
|
- name: Upload wheels as artifact
|
|
35
|
-
uses: actions/upload-artifact@
|
|
31
|
+
uses: actions/upload-artifact@v5
|
|
36
32
|
with:
|
|
37
33
|
name: dist-${{ matrix.target }}
|
|
38
34
|
path: dist
|
|
@@ -40,9 +36,10 @@ jobs:
|
|
|
40
36
|
sdist:
|
|
41
37
|
runs-on: ubuntu-latest
|
|
42
38
|
timeout-minutes: 15
|
|
39
|
+
permissions:
|
|
40
|
+
contents: read
|
|
43
41
|
steps:
|
|
44
|
-
-
|
|
45
|
-
uses: actions/checkout@v5
|
|
42
|
+
- uses: actions/checkout@v5
|
|
46
43
|
|
|
47
44
|
- name: Build sdist
|
|
48
45
|
uses: PyO3/maturin-action@v1
|
|
@@ -51,24 +48,22 @@ jobs:
|
|
|
51
48
|
args: --out dist
|
|
52
49
|
|
|
53
50
|
- name: Upload sdist as artifact
|
|
54
|
-
uses: actions/upload-artifact@
|
|
51
|
+
uses: actions/upload-artifact@v5
|
|
55
52
|
with:
|
|
56
53
|
name: sdist
|
|
57
54
|
path: dist
|
|
58
55
|
|
|
59
56
|
release:
|
|
60
|
-
name: Release
|
|
61
57
|
needs:
|
|
62
58
|
- build
|
|
63
59
|
- sdist
|
|
64
60
|
runs-on: ubuntu-latest
|
|
65
|
-
if: startsWith(github.ref, 'refs/tags/v')
|
|
66
61
|
timeout-minutes: 5
|
|
67
62
|
permissions:
|
|
68
63
|
contents: write
|
|
69
64
|
steps:
|
|
70
65
|
- name: Download binary artifacts
|
|
71
|
-
uses: actions/download-artifact@
|
|
66
|
+
uses: actions/download-artifact@v6
|
|
72
67
|
with:
|
|
73
68
|
path: dist
|
|
74
69
|
|
|
@@ -76,13 +71,13 @@ jobs:
|
|
|
76
71
|
run: ls -l --all --recursive dist
|
|
77
72
|
|
|
78
73
|
- name: Create release
|
|
79
|
-
uses: softprops/action-gh-release@v2
|
|
74
|
+
uses: softprops/action-gh-release@v2.4.1
|
|
80
75
|
with:
|
|
76
|
+
tag_name: ${{ github.event.release.tag_name }}
|
|
81
77
|
generate_release_notes: true
|
|
82
78
|
files: dist/*
|
|
83
79
|
|
|
84
80
|
publish-pypi:
|
|
85
|
-
name: Publish to PyPI
|
|
86
81
|
needs: release
|
|
87
82
|
runs-on: ubuntu-latest
|
|
88
83
|
environment: pypi
|
|
@@ -91,7 +86,7 @@ jobs:
|
|
|
91
86
|
id-token: write
|
|
92
87
|
steps:
|
|
93
88
|
- name: Download binary artifacts
|
|
94
|
-
uses: actions/download-artifact@
|
|
89
|
+
uses: actions/download-artifact@v6
|
|
95
90
|
with:
|
|
96
91
|
path: dist
|
|
97
92
|
merge-multiple: true
|
|
@@ -6,24 +6,23 @@ exclude: |
|
|
|
6
6
|
)
|
|
7
7
|
repos:
|
|
8
8
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
9
|
-
rev:
|
|
9
|
+
rev: v6.0.0
|
|
10
10
|
hooks:
|
|
11
11
|
- id: trailing-whitespace
|
|
12
12
|
- id: end-of-file-fixer
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
rev: v0.1.0
|
|
14
|
+
- repo: https://github.com/lasuillard-s/devobs
|
|
15
|
+
rev: main # Dogfooding; pin to a specific version when stable
|
|
17
16
|
hooks:
|
|
18
|
-
#
|
|
19
|
-
- id:
|
|
20
|
-
pass_filenames: false
|
|
17
|
+
# Ensure each command has its test file pair
|
|
18
|
+
- id: check-file-pair
|
|
21
19
|
args:
|
|
22
|
-
-
|
|
20
|
+
- --log-level
|
|
21
|
+
- trace
|
|
23
22
|
- --from=src/commands
|
|
24
23
|
- --to=tests/commands
|
|
25
|
-
- --include
|
|
26
|
-
- --expect=
|
|
24
|
+
- --include=*.rs
|
|
25
|
+
- --expect={to}/{relative_from}/test_{filename}
|
|
27
26
|
|
|
28
27
|
- repo: local
|
|
29
28
|
hooks:
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# NOTE: We use pipx to run the devobs commands, otherwise it would require users
|
|
2
|
+
# to install Rust toolchain and dependencies to build the project.
|
|
3
|
+
# * This hook configuration file is updated separately from the latest release,
|
|
4
|
+
# * so the version specified in entry may not always be the latest one.
|
|
5
|
+
- id: devobs
|
|
6
|
+
name: devobs
|
|
7
|
+
description: Run devobs commands using pipx
|
|
8
|
+
language: system
|
|
9
|
+
entry: pipx run 'devobs~=0.2.0'
|
|
10
|
+
|
|
11
|
+
# Shortcuts for each command for convenience
|
|
12
|
+
- id: check-file-pair
|
|
13
|
+
name: check-file-pair
|
|
14
|
+
language: system
|
|
15
|
+
entry: pipx run 'devobs~=0.2.0' check-file-pair
|
|
16
|
+
pass_filenames: false
|
|
17
|
+
|
|
18
|
+
- id: assert-diff
|
|
19
|
+
name: assert-diff
|
|
20
|
+
language: system
|
|
21
|
+
entry: pipx run 'devobs~=0.2.0' assert-diff
|
|
22
|
+
pass_filenames: false
|
|
@@ -69,13 +69,12 @@ checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
|
|
|
69
69
|
|
|
70
70
|
[[package]]
|
|
71
71
|
name = "assert_cmd"
|
|
72
|
-
version = "2.
|
|
72
|
+
version = "2.1.1"
|
|
73
73
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
74
|
-
checksum = "
|
|
74
|
+
checksum = "bcbb6924530aa9e0432442af08bbcafdad182db80d2e560da42a6d442535bf85"
|
|
75
75
|
dependencies = [
|
|
76
76
|
"anstyle",
|
|
77
77
|
"bstr",
|
|
78
|
-
"doc-comment",
|
|
79
78
|
"libc",
|
|
80
79
|
"predicates",
|
|
81
80
|
"predicates-core",
|
|
@@ -230,7 +229,7 @@ dependencies = [
|
|
|
230
229
|
|
|
231
230
|
[[package]]
|
|
232
231
|
name = "devobs"
|
|
233
|
-
version = "0.2.
|
|
232
|
+
version = "0.2.1"
|
|
234
233
|
dependencies = [
|
|
235
234
|
"anyhow",
|
|
236
235
|
"assert_cmd",
|
|
@@ -267,12 +266,6 @@ dependencies = [
|
|
|
267
266
|
"syn",
|
|
268
267
|
]
|
|
269
268
|
|
|
270
|
-
[[package]]
|
|
271
|
-
name = "doc-comment"
|
|
272
|
-
version = "0.3.3"
|
|
273
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
274
|
-
checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
|
|
275
|
-
|
|
276
269
|
[[package]]
|
|
277
270
|
name = "downcast"
|
|
278
271
|
version = "0.11.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "devobs"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.1"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
description = "CLI for obsessed developers."
|
|
6
6
|
readme = "README.md"
|
|
@@ -21,7 +21,7 @@ sugars = "3.0.1"
|
|
|
21
21
|
serde = { version = "1.0.228", features = ["derive"] }
|
|
22
22
|
|
|
23
23
|
[dev-dependencies]
|
|
24
|
-
assert_cmd = "2.
|
|
24
|
+
assert_cmd = "2.1.1"
|
|
25
25
|
insta = "1.43.1"
|
|
26
26
|
mockall = "0.13.0"
|
|
27
27
|
reqwest = "0.12.5"
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devobs
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: CLI for obsessed developers.
|
|
5
5
|
Home-Page: https://github.com/lasuillard/devobs
|
|
6
6
|
Author: Yuchan Lee <lasuillard@gmail.com>
|
|
7
7
|
Author-email: Yuchan Lee <lasuillard@gmail.com>
|
|
8
8
|
License: MIT
|
|
9
9
|
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
10
|
+
Project-URL: Homepage, https://github.com/lasuillard/devobs
|
|
10
11
|
|
|
11
12
|
# devobs
|
|
12
13
|
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# NOTE: We use pipx to run the devobs commands, otherwise it would require users
|
|
2
|
-
# to install Rust toolchain and dependencies to build the project.
|
|
3
|
-
- id: devobs
|
|
4
|
-
name: devobs
|
|
5
|
-
description: Run devobs commands using pipx
|
|
6
|
-
language: system
|
|
7
|
-
entry: pipx run 'devobs~=0.1.0'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|