appydave-tools 0.77.6 → 0.77.7
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/docs/planning/BACKLOG.md +4 -4
- data/docs/planning/s3-operations-split/IMPLEMENTATION_PLAN.md +6 -6
- data/lib/appydave/tools/dam/project_listing.rb +10 -10
- data/lib/appydave/tools/version.rb +1 -1
- data/package.json +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cdcce7ddc1828ec8a28fcda70c442f1786443a9e3d04cbdf0a5f03b223f1ce8f
|
|
4
|
+
data.tar.gz: e419a736811babee9b523fa39cec97e219a903e388b140d4c3140757c15587c0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 14de60fca8cc46a8fbe74bb1033ce5d451e1770f22693f7ba641c3f82e95b1dbacec821ad72bd8034c702b268e8673bd7d66ba02c57af25c5c9f9eef61d61d8c
|
|
7
|
+
data.tar.gz: b8973bb5408519c418c01632b09d40060d18195e7dbd14d8f1e17759ff55f0e367492a65728bf09e372e18d48010997becd26d6b140b7125ae9db39422d1a3da
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [0.77.6](https://github.com/appydave/appydave-tools/compare/v0.77.5...v0.77.6) (2026-03-20)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* extract S3Archiver from S3Operations; S3Operations is now a thin delegation facade (B020 complete) ([41419e5](https://github.com/appydave/appydave-tools/commit/41419e5e365f62a8e7a16f3ce16e74c41a80d4a4))
|
|
7
|
+
|
|
1
8
|
## [0.77.5](https://github.com/appydave/appydave-tools/compare/v0.77.4...v0.77.5) (2026-03-20)
|
|
2
9
|
|
|
3
10
|
|
data/docs/planning/BACKLOG.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Project Backlog — AppyDave Tools
|
|
2
2
|
|
|
3
|
-
**Last updated**: 2026-03-20 (
|
|
4
|
-
**Total**: 41 | Pending:
|
|
3
|
+
**Last updated**: 2026-03-20 (s3-operations-split campaign complete)
|
|
4
|
+
**Total**: 41 | Pending: 3 | Done: 37 | Deferred: 0 | Rejected: 0
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -10,9 +10,8 @@
|
|
|
10
10
|
### Medium Priority
|
|
11
11
|
- [ ] B001 — FR-1: GPT Context token counting | Priority: medium
|
|
12
12
|
- [ ] B012 — Arch: add integration tests for brand resolution end-to-end | Priority: medium
|
|
13
|
-
- [ ] B007 — Performance: parallel git/S3 status checks for dam list | Priority: low (unblocked
|
|
13
|
+
- [ ] B007 — Performance: parallel git/S3 status checks for dam list | Priority: low (unblocked — B020 complete)
|
|
14
14
|
- [ ] B008 — Performance: cache git/S3 status with 5-min TTL | Priority: low
|
|
15
|
-
- [ ] B020 — Arch: split S3Operations (1,030 lines, mixed I/O + logic) | Priority: medium (next major campaign)
|
|
16
15
|
- [ ] B040 — Fix: ProjectResolver.resolve raises RuntimeError not typed exception (found in B012) | Priority: low
|
|
17
16
|
|
|
18
17
|
---
|
|
@@ -55,6 +54,7 @@
|
|
|
55
54
|
- [x] B001 — FR-1: GPT Context token counting (--tokens flag, warn to stderr, 100k/200k thresholds) | Completed: batch-a-features (2026-03-20), v0.77.0
|
|
56
55
|
- [x] B010 — UX: terminal-width-aware separator lines + truncate_path in project_listing | Completed: batch-a-features (2026-03-20), v0.77.0
|
|
57
56
|
- [x] B009 — UX: progress indicators for dam S3 operations (upload, download, status, archive, sync-ssd) | Completed: batch-a-features (2026-03-20), v0.77.1
|
|
57
|
+
- [x] B020 — Arch: split S3Operations into S3Base + S3Uploader + S3Downloader + S3StatusChecker + S3Archiver; S3Operations thin facade | Completed: s3-operations-split (2026-03-20), v0.77.6
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
**Target**: 870 examples passing, rubocop 0, S3Operations ≤ 80 lines, each focused class standalone
|
|
6
6
|
|
|
7
7
|
## Summary
|
|
8
|
-
- Total: 5 | Complete:
|
|
8
|
+
- Total: 5 | Complete: 5 | In Progress: 0 | Pending: 0 | Failed: 0
|
|
9
9
|
|
|
10
10
|
## Pending
|
|
11
|
-
- [ ] WU1-s3-base — Extract shared infrastructure into S3Base class; S3Operations inherits from it; all 870 tests pass with no public API change
|
|
12
|
-
- [ ] WU2-s3-uploader — Create S3Uploader < S3Base; move upload + helpers; S3Operations.upload delegates
|
|
13
|
-
- [ ] WU3-s3-downloader — Create S3Downloader < S3Base; move download + helpers; S3Operations.download delegates
|
|
14
|
-
- [ ] WU4-s3-status-checker — Create S3StatusChecker < S3Base; move status/calculate_sync_status/sync_timestamps + helpers; S3Operations delegates
|
|
15
|
-
- [ ] WU5-s3-archiver — Create S3Archiver < S3Base; move archive/cleanup/cleanup_local + helpers; S3Operations becomes thin facade; add s3_base require to lib/appydave/tools.rb
|
|
16
11
|
|
|
17
12
|
## In Progress
|
|
18
13
|
|
|
19
14
|
## Complete
|
|
15
|
+
- [x] WU1-s3-base — Extract shared infrastructure into S3Base class; S3Operations inherits from it; all 870 tests pass with no public API change (v0.77.2)
|
|
16
|
+
- [x] WU2-s3-uploader — Create S3Uploader < S3Base; move upload + helpers; S3Operations.upload delegates (v0.77.3)
|
|
17
|
+
- [x] WU3-s3-downloader — Create S3Downloader < S3Base; move download + helpers; S3Operations.download delegates (v0.77.4)
|
|
18
|
+
- [x] WU4-s3-status-checker — Create S3StatusChecker < S3Base; move status/calculate_sync_status/sync_timestamps; S3Operations delegates (v0.77.5)
|
|
19
|
+
- [x] WU5-s3-archiver — Create S3Archiver < S3Base; move archive/cleanup/cleanup_local + helpers; S3Operations is thin facade (v0.77.6)
|
|
20
20
|
|
|
21
21
|
## Failed / Needs Retry
|
|
22
22
|
|
|
@@ -167,9 +167,12 @@ module Appydave
|
|
|
167
167
|
brand_info = Appydave::Tools::Configuration::Config.brands.get_brand(brand_arg)
|
|
168
168
|
is_git_repo = Dir.exist?(File.join(brand_path, '.git'))
|
|
169
169
|
|
|
170
|
+
# Run all projects in parallel threads — each project's git + S3 checks are I/O-bound
|
|
170
171
|
project_data = projects.map do |project|
|
|
171
|
-
|
|
172
|
-
|
|
172
|
+
Thread.new do
|
|
173
|
+
collect_project_data(brand_arg, brand_path, brand_info, project, is_git_repo, detailed: detailed, s3: s3)
|
|
174
|
+
end
|
|
175
|
+
end.map(&:value)
|
|
173
176
|
|
|
174
177
|
# Print common header
|
|
175
178
|
puts "Projects in #{brand}:"
|
|
@@ -547,15 +550,12 @@ module Appydave
|
|
|
547
550
|
size = FileHelper.calculate_directory_size(project_path)
|
|
548
551
|
modified = File.mtime(project_path)
|
|
549
552
|
|
|
550
|
-
#
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
else
|
|
554
|
-
'N/A'
|
|
555
|
-
end
|
|
553
|
+
# Run git and S3 checks concurrently — both are I/O-bound (shell + network)
|
|
554
|
+
git_thread = is_git_repo ? Thread.new { calculate_project_git_status(brand_path, project) } : nil
|
|
555
|
+
s3_thread = s3 ? Thread.new { calculate_project_s3_sync_status(brand_arg, brand_info, project) } : nil
|
|
556
556
|
|
|
557
|
-
|
|
558
|
-
s3_sync =
|
|
557
|
+
git_status = git_thread ? git_thread.value : 'N/A'
|
|
558
|
+
s3_sync = s3_thread ? s3_thread.value : 'N/A'
|
|
559
559
|
|
|
560
560
|
result = {
|
|
561
561
|
name: project,
|
data/package.json
CHANGED