devobs 0.2.9__tar.gz → 0.3.0__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.
Files changed (55) hide show
  1. {devobs-0.2.9 → devobs-0.3.0}/.github/workflows/ci.yaml +12 -5
  2. {devobs-0.2.9 → devobs-0.3.0}/.github/workflows/prepare-release.yaml +1 -1
  3. {devobs-0.2.9 → devobs-0.3.0}/.github/workflows/release.yaml +17 -4
  4. {devobs-0.2.9 → devobs-0.3.0}/.pre-commit-hooks.yaml +3 -3
  5. {devobs-0.2.9 → devobs-0.3.0}/Cargo.lock +3 -3
  6. {devobs-0.2.9 → devobs-0.3.0}/Cargo.toml +2 -2
  7. {devobs-0.2.9 → devobs-0.3.0}/PKG-INFO +1 -1
  8. {devobs-0.2.9 → devobs-0.3.0}/tests/helpers.rs +7 -1
  9. {devobs-0.2.9 → devobs-0.3.0}/.config/nextest.toml +0 -0
  10. {devobs-0.2.9 → devobs-0.3.0}/.devcontainer.example/devcontainer-lock.json +0 -0
  11. {devobs-0.2.9 → devobs-0.3.0}/.devcontainer.example/devcontainer.json +0 -0
  12. {devobs-0.2.9 → devobs-0.3.0}/.editorconfig +0 -0
  13. {devobs-0.2.9 → devobs-0.3.0}/.gitignore +0 -0
  14. {devobs-0.2.9 → devobs-0.3.0}/.pre-commit-config.yaml +0 -0
  15. {devobs-0.2.9 → devobs-0.3.0}/.rustfmt.toml +0 -0
  16. {devobs-0.2.9 → devobs-0.3.0}/.vscode.example/extensions.json +0 -0
  17. {devobs-0.2.9 → devobs-0.3.0}/.vscode.example/launch.json +0 -0
  18. {devobs-0.2.9 → devobs-0.3.0}/.vscode.example/settings.json +0 -0
  19. {devobs-0.2.9 → devobs-0.3.0}/CONTRIBUTING.md +0 -0
  20. {devobs-0.2.9 → devobs-0.3.0}/Justfile +0 -0
  21. {devobs-0.2.9 → devobs-0.3.0}/LICENSE +0 -0
  22. {devobs-0.2.9 → devobs-0.3.0}/README.md +0 -0
  23. {devobs-0.2.9 → devobs-0.3.0}/flake.lock +0 -0
  24. {devobs-0.2.9 → devobs-0.3.0}/flake.nix +0 -0
  25. {devobs-0.2.9 → devobs-0.3.0}/pyproject.toml +0 -0
  26. {devobs-0.2.9 → devobs-0.3.0}/renovate.json +0 -0
  27. {devobs-0.2.9 → devobs-0.3.0}/rust-toolchain.toml +0 -0
  28. {devobs-0.2.9 → devobs-0.3.0}/src/commands/assert_diff.rs +0 -0
  29. {devobs-0.2.9 → devobs-0.3.0}/src/commands/check_file_pair.rs +0 -0
  30. {devobs-0.2.9 → devobs-0.3.0}/src/commands.rs +0 -0
  31. {devobs-0.2.9 → devobs-0.3.0}/src/main.rs +0 -0
  32. {devobs-0.2.9 → devobs-0.3.0}/src/utils/fs.rs +0 -0
  33. {devobs-0.2.9 → devobs-0.3.0}/src/utils.rs +0 -0
  34. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/mod.rs +0 -0
  35. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_create-2.snap +0 -0
  36. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_create.snap +0 -0
  37. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_delete-2.snap +0 -0
  38. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_delete.snap +0 -0
  39. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_modify-2.snap +0 -0
  40. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__changes_modify.snap +0 -0
  41. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__empty_directory.snap +0 -0
  42. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__no_changes.snap +0 -0
  43. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__no_command_to_run.snap +0 -0
  44. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__nonexistent_directory.snap +0 -0
  45. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__on_command_error_ignore.snap +0 -0
  46. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_assert_diff__on_command_error_propagate.snap +0 -0
  47. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__backward_matching.snap +0 -0
  48. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__create_if_not_exists.snap +0 -0
  49. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__create_if_not_exists_dry_run.snap +0 -0
  50. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__empty_directory_no_error_no_output.snap +0 -0
  51. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__forward_matching.snap +0 -0
  52. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/snapshots/integration_test__commands__test_check_file_pair__on_fully_populated_directory.snap +0 -0
  53. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/test_assert_diff.rs +0 -0
  54. {devobs-0.2.9 → devobs-0.3.0}/tests/commands/test_check_file_pair.rs +0 -0
  55. {devobs-0.2.9 → devobs-0.3.0}/tests/integration_test.rs +0 -0
@@ -52,24 +52,30 @@ jobs:
52
52
  run: rustup toolchain install nightly --profile minimal --component miri
53
53
 
54
54
  - name: Install devtools
55
- uses: taiki-e/install-action@ab6895351a88b908e96a4697860d4ffea5e57dbe # v2.87.27
55
+ uses: taiki-e/install-action@1168f6810a3cb30a3514bf5756a3b7f0422c6df8 # v2.87.28
56
56
  with:
57
57
  tool: cargo-nextest
58
58
 
59
59
  - name: Run tests with Miri
60
60
  env:
61
- MIRIFLAGS: '-Zmiri-disable-isolation'
61
+ MIRIFLAGS: "-Zmiri-disable-isolation"
62
62
  run: |
63
63
  rustup run nightly cargo miri \
64
64
  nextest run --workspace --all-targets --all-features
65
65
 
66
66
  test:
67
- name: Test
68
- runs-on: ubuntu-latest
67
+ name: Test (${{ matrix.os }})
68
+ runs-on: ${{ matrix.os }}
69
69
  timeout-minutes: 15
70
70
  permissions:
71
71
  contents: read
72
72
  id-token: write
73
+ strategy:
74
+ matrix:
75
+ os:
76
+ - ubuntu-latest
77
+ - macos-latest
78
+ - windows-latest
73
79
  steps:
74
80
  - name: Checkout
75
81
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
@@ -78,11 +84,12 @@ jobs:
78
84
  uses: actions-rust-lang/setup-rust-toolchain@ecabd13d1c56bd1345c230e542e9144811ad706f # v2.0.0
79
85
 
80
86
  - name: Install devtools
81
- uses: taiki-e/install-action@ab6895351a88b908e96a4697860d4ffea5e57dbe # v2.87.27
87
+ uses: taiki-e/install-action@1168f6810a3cb30a3514bf5756a3b7f0422c6df8 # v2.87.28
82
88
  with:
83
89
  tool: cargo-llvm-cov,cargo-nextest
84
90
 
85
91
  - name: Run tests
92
+ shell: bash # Ensure Windows compatibility (Git Bash on Windows)
86
93
  run: |
87
94
  cargo llvm-cov nextest --workspace --all-targets --all-features --lcov --output-path lcov.info
88
95
  cargo llvm-cov report --summary-only
@@ -47,7 +47,7 @@ jobs:
47
47
  sed --in-place "s/'devobs==.*'/'devobs==$tag_no_v'/" .pre-commit-hooks.yaml
48
48
 
49
49
  - name: Generate GitHub App token
50
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
50
+ uses: actions/create-github-app-token@64ab729a6294000f5aa4a4bc0b73d1f32bc45510 # v3.3.0
51
51
  id: generate-token
52
52
  with:
53
53
  client-id: ${{ vars.GH_APP_ID }}
@@ -4,13 +4,16 @@ on:
4
4
  release:
5
5
  types: [published]
6
6
 
7
+ # Dry-run (don't actually release) trigger for manual execution
8
+ workflow_dispatch: {}
9
+
7
10
  concurrency:
8
11
  group: ${{ github.workflow }}
9
12
  cancel-in-progress: false
10
13
 
11
14
  jobs:
12
15
  build:
13
- name: Build (${{ matrix.target }})
16
+ name: Build (${{ matrix.platform }}-${{ matrix.target }})
14
17
  runs-on: ${{ matrix.platform }}
15
18
  timeout-minutes: 15
16
19
  permissions:
@@ -20,7 +23,16 @@ jobs:
20
23
  matrix:
21
24
  include:
22
25
  - platform: ubuntu-latest
23
- target: x86_64
26
+ target: x86_64 # x86_64-unknown-linux-gnu
27
+ - platform: ubuntu-26.04-arm
28
+ target: aarch64 # aarch64-unknown-linux-gnu
29
+ - platform: macos-latest
30
+ target: aarch64 # aarch64-apple-darwin
31
+ # We do not, and will not, support x86_64 on macOS
32
+ - platform: windows-latest
33
+ target: x86_64 # x86_64-pc-windows-msvc
34
+ - platform: windows-11-arm
35
+ target: aarch64 # aarch64-pc-windows-msvc
24
36
  steps:
25
37
  - name: Checkout
26
38
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
@@ -34,7 +46,7 @@ jobs:
34
46
  - name: Upload wheels as artifact
35
47
  uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
36
48
  with:
37
- name: dist-${{ matrix.target }}
49
+ name: dist-${{ matrix.platform }}-${{ matrix.target }}
38
50
  path: dist
39
51
 
40
52
  sdist:
@@ -61,6 +73,7 @@ jobs:
61
73
 
62
74
  release:
63
75
  name: Release
76
+ if: github.event_name == 'release' && github.event.action == 'published'
64
77
  needs: [build, sdist]
65
78
  runs-on: ubuntu-latest
66
79
  timeout-minutes: 5
@@ -82,7 +95,7 @@ jobs:
82
95
  generate_release_notes: false
83
96
  files: |
84
97
  dist/sdist/devobs-*.tar.gz
85
- dist/dist-*/devobs-*.whl
98
+ dist/dist-*-*/devobs-*.whl
86
99
 
87
100
  publish-pypi:
88
101
  name: Publish to PyPI
@@ -6,17 +6,17 @@
6
6
  name: devobs
7
7
  description: Run devobs commands using pipx
8
8
  language: system
9
- entry: pipx run 'devobs==0.2.9'
9
+ entry: pipx run 'devobs==0.3.0'
10
10
 
11
11
  # Shortcuts for each command for convenience
12
12
  - id: check-file-pair
13
13
  name: check-file-pair
14
14
  language: system
15
- entry: pipx run 'devobs==0.2.9' check-file-pair
15
+ entry: pipx run 'devobs==0.3.0' check-file-pair
16
16
  pass_filenames: false
17
17
 
18
18
  - id: assert-diff
19
19
  name: assert-diff
20
20
  language: system
21
- entry: pipx run 'devobs==0.2.9' assert-diff
21
+ entry: pipx run 'devobs==0.3.0' assert-diff
22
22
  pass_filenames: false
@@ -285,7 +285,7 @@ checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
285
285
 
286
286
  [[package]]
287
287
  name = "devobs"
288
- version = "0.2.9"
288
+ version = "0.3.0"
289
289
  dependencies = [
290
290
  "anyhow",
291
291
  "assert_cmd",
@@ -1759,9 +1759,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
1759
1759
 
1760
1760
  [[package]]
1761
1761
  name = "tokio"
1762
- version = "1.53.2"
1762
+ version = "1.53.3"
1763
1763
  source = "registry+https://github.com/rust-lang/crates.io-index"
1764
- checksum = "e95f91fcc7a621e8b030f6aa23c71fe9838ae2fb4d8118b75602a328f5144044"
1764
+ checksum = "ce3335fa71841cda333a58d7615b03901380ecf09d59b3296d21f8bbac0dde4e"
1765
1765
  dependencies = [
1766
1766
  "bytes",
1767
1767
  "libc",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "devobs"
3
- version = "0.2.9"
3
+ version = "0.3.0"
4
4
  edition = "2024"
5
5
  description = "CLI for obsessed developers."
6
6
  readme = "README.md"
@@ -15,7 +15,7 @@ log = "=0.4.34"
15
15
  regex = "=1.13.1"
16
16
  simplelog = "=0.12.2"
17
17
  strfmt = "=0.2.6"
18
- tokio = { version = "=1.53.2", features = ["full"] }
18
+ tokio = { version = "=1.53.3", features = ["full"] }
19
19
  anyhow = "=1.0.104"
20
20
  sugars = "=3.0.1"
21
21
  serde = { version = "=1.0.229", features = ["derive"] }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devobs
3
- Version: 0.2.9
3
+ Version: 0.3.0
4
4
  Summary: CLI for obsessed developers.
5
5
  Home-Page: https://github.com/lasuillard-s/devobs
6
6
  Author: Yuchan Lee <lasuillard@gmail.com>
@@ -32,6 +32,12 @@ pub(crate) fn normalize_console_output<S: AsRef<str>, T: ToString + std::fmt::Di
32
32
  output = output.replace(&key.to_string(), value);
33
33
  }
34
34
 
35
+ #[cfg(windows)]
36
+ {
37
+ output = output.replace("\\", "/");
38
+ output = output.replace("exit code: ", "exit status: ");
39
+ }
40
+
35
41
  output
36
42
  }
37
43
 
@@ -83,7 +89,7 @@ pub(crate) fn list_dir(dir: &Path) -> Vec<String> {
83
89
  .expect("Failed to strip prefix")
84
90
  .to_str()
85
91
  .expect("Failed to convert path to str")
86
- .to_owned()
92
+ .replace("\\", "/")
87
93
  })
88
94
  .collect()
89
95
  }
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