appydave-tools 0.20.0 → 0.21.0

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.
@@ -1,13 +1,13 @@
1
1
  # DAM (Digital Asset Management) - Integration Testing Plan
2
2
 
3
- **Date**: 2025-11-08
3
+ **Date**: 2025-11-10
4
4
  **Purpose**: Validate DAM integration into appydave-tools gem
5
5
  **Tester**: David Cruwys
6
6
  **Status**: Ready for User Acceptance Testing
7
7
 
8
8
  **Reference**: Original UAT plan at `/Users/davidcruwys/dev/video-projects/video-asset-tools/docs/testing-plan.md`
9
9
 
10
- **Windows Testing**: See [windows-testing-guide.md](./windows-testing-guide.md) for Windows-specific testing scenarios
10
+ **Windows Testing**: See [dam-testing-plan-windows-powershell.md](./dam-testing-plan-windows-powershell.md) for Windows-specific testing scenarios
11
11
 
12
12
  ---
13
13
 
@@ -37,25 +37,17 @@
37
37
  - ✅ `dam archive` - Archive to SSD with dry-run and force options
38
38
  - ✅ `dam sync-ssd` - Restore light files from SSD (dry-run supported)
39
39
 
40
- **Git Repository Management Scripts - Intentionally Not Migrated**:
40
+ **Commands - Phase 4 Complete** (Status & Git Integration):
41
+ - ✅ `dam status` - Unified status view (local/S3/SSD/git)
42
+ - ✅ `dam repo-status` - Git status for brand repositories (supports `--all`)
43
+ - ✅ `dam repo-sync` - Pull updates for brand repositories (supports `--all`)
44
+ - ✅ `dam repo-push` - Push changes for brand repository (optional project validation)
41
45
 
42
- These are **shell scripts** for managing the multi-repo video-projects git structure, NOT video asset management commands:
43
-
44
- - `status-all.sh` - Runs `git status` on all v-* brand repos (git workflow, not asset management)
45
- - `sync-all.sh` - Runs `git pull` on all v-* brand repos (git workflow, not asset management)
46
- - `clone-all.sh` - Clones all v-* brand repos if missing (git workflow, not asset management)
47
-
48
- **Why not migrated:**
49
- 1. These manage **git repositories**, not **video assets**
50
- 2. They loop through brand folders running git commands
51
- 3. They're workflow automation for the video-projects repo structure
52
- 4. They belong in `/video-projects/v-shared/`, not in the appydave-tools gem
53
- 5. Different use case: repo management vs. video file management
54
-
55
- **If you want these migrated:** We could add `dam repo-status`, `dam repo-sync`, `dam repo-clone` commands, but they would:
56
- - Need Ruby implementations of multi-repo git operations
57
- - Duplicate functionality that shell scripts handle well
58
- - Mix concerns (video assets vs. git repos)
46
+ **New Manifest Fields (Phase 4)**:
47
+ - ✅ `git_remote` - Self-healing git remote URL detection in brands.json
48
+ - `s3: { exists: true/false }` - S3 staging folder tracking in manifest
49
+ - `type: 'flivideo' | 'storyline-app'` - Project type detection
50
+ - `hasStorylineJson: true/false` - Storyline project identification
59
51
 
60
52
  ---
61
53
 
@@ -150,10 +142,19 @@ These commands only read data and don't modify files:
150
142
  | Command | Type | What It Does |
151
143
  |---------|------|--------------|
152
144
  | **list** | Read-only | List brands/projects |
145
+ | **status** | Read-only | Show unified status (local/S3/SSD/git) |
146
+ | **repo-status** | Read-only | Check git status for brand repos |
153
147
  | **manifest** | Generates JSON | Generate `projects.json` manifest |
154
148
  | **s3-status** | Read-only | Check sync status |
155
149
  | **help** | Read-only | Show help information |
156
150
 
151
+ ### Git Commands (Special Behavior)
152
+
153
+ | Command | Type | What It Does | Safety Features |
154
+ |---------|------|--------------|-----------------|
155
+ | **repo-sync** | Modifies (git pull) | Pull updates for brand repos | Skips if uncommitted changes |
156
+ | **repo-push** | Modifies (git push) | Push changes for brand repo | Warns if uncommitted changes, optional project validation |
157
+
157
158
  ### Force Flag Behavior
158
159
 
159
160
  Commands requiring `--force` provide extra protection for destructive operations:
@@ -244,14 +245,14 @@ bundle exec rspec spec/appydave/tools/dam/config_loader_spec.rb
244
245
  #### Test 2.1: Help System
245
246
  ```bash
246
247
  # Test: Main help
247
- bin/dam help
248
+ dam help
248
249
 
249
250
  # Test: Command-specific help
250
- bin/dam help list
251
- bin/dam help s3-up
252
- bin/dam help s3-down
253
- bin/dam help brands
254
- bin/dam help workflows
251
+ dam help list
252
+ dam help s3-up
253
+ dam help s3-down
254
+ dam help brands
255
+ dam help workflows
255
256
  ```
256
257
  **Expected**:
257
258
  - Full help overview
@@ -264,40 +265,22 @@ bin/dam help workflows
264
265
 
265
266
  ---
266
267
 
267
- #### Test 2.3: List Brands (Mode 1)
268
- ```bash
269
- # Test: List brands only
270
- bin/dam list
271
- ```
272
- **Expected**: `Brands: aitldr, appydave, joy, kiros, ss, voz` (shortcuts)
273
-
274
- **Status**: [ ] Pass [ ] Fail
275
- **Notes**: ___________________________________________
276
-
277
- ---
278
-
279
- #### Test 2.4: List Brands with Summary (Mode 2)
268
+ #### Test 2.3: List Brands
280
269
  ```bash
281
- # Test: Brands with project counts
282
- bin/dam list --summary
283
- ```
284
- **Expected**:
285
- ```
286
- aitldr: X projects
287
- appydave: Y projects
288
- joy: Z projects
289
- ...
270
+ # Test: List all brands with project counts
271
+ dam list
290
272
  ```
273
+ **Expected**: Tabular output showing all brands with project counts, sizes, and paths
291
274
 
292
275
  **Status**: [ ] Pass [ ] Fail
293
276
  **Notes**: ___________________________________________
294
277
 
295
278
  ---
296
279
 
297
- #### Test 2.5: List Brand Projects (Mode 3)
280
+ #### Test 2.4: List Brand Projects
298
281
  ```bash
299
282
  # Test: All projects for brand
300
- bin/dam list appydave
283
+ dam list appydave
301
284
  ```
302
285
  **Expected**: List of all appydave projects (excludes `archived/`, `.git`, etc.)
303
286
 
@@ -306,10 +289,10 @@ bin/dam list appydave
306
289
 
307
290
  ---
308
291
 
309
- #### Test 2.6: Pattern Matching (Mode 3b)
292
+ #### Test 2.5: Pattern Matching
310
293
  ```bash
311
294
  # Test: Pattern matching
312
- bin/dam list appydave 'b6*'
295
+ dam list appydave 'b6*'
313
296
  ```
314
297
  **Expected**: Only projects starting with `b6` (b60-b69)
315
298
 
@@ -318,7 +301,7 @@ bin/dam list appydave 'b6*'
318
301
 
319
302
  ---
320
303
 
321
- #### Test 2.7: S3 Upload with CLI Args
304
+ #### Test 2.6: S3 Upload with CLI Args
322
305
  ```bash
323
306
  # Test: Upload with explicit args (dry-run)
324
307
  bin/s3_sync_up.rb appydave b65 --dry-run
@@ -330,7 +313,7 @@ bin/s3_sync_up.rb appydave b65 --dry-run
330
313
 
331
314
  ---
332
315
 
333
- #### Test 2.8: S3 Upload Auto-Detect
316
+ #### Test 2.7: S3 Upload Auto-Detect
334
317
  ```bash
335
318
  # Test: Upload from project directory
336
319
  cd ~/dev/video-projects/v-appydave/b65-*
@@ -343,7 +326,7 @@ bin/s3_sync_up.rb --dry-run
343
326
 
344
327
  ---
345
328
 
346
- #### Test 2.9: S3 Download with CLI Args ⭐ NEW
329
+ #### Test 2.8: S3 Download with CLI Args ⭐ NEW
347
330
  ```bash
348
331
  # Test: Download with explicit args (dry-run)
349
332
  bin/s3_sync_down.rb appydave b65 --dry-run
@@ -355,7 +338,7 @@ bin/s3_sync_down.rb appydave b65 --dry-run
355
338
 
356
339
  ---
357
340
 
358
- #### Test 2.10: S3 Download Auto-Detect ⭐ NEW
341
+ #### Test 2.9: S3 Download Auto-Detect ⭐ NEW
359
342
  ```bash
360
343
  # Test: Download from project directory
361
344
  cd ~/dev/video-projects/v-appydave/b65-*
@@ -368,7 +351,7 @@ bin/s3_sync_down.rb --dry-run
368
351
 
369
352
  ---
370
353
 
371
- #### Test 2.11: S3 Status with CLI Args ⭐ NEW
354
+ #### Test 2.10: S3 Status with CLI Args ⭐ NEW
372
355
  ```bash
373
356
  # Test: Check status with explicit args
374
357
  bin/s3_sync_status.rb appydave b65
@@ -380,7 +363,7 @@ bin/s3_sync_status.rb appydave b65
380
363
 
381
364
  ---
382
365
 
383
- #### Test 2.12: S3 Status Auto-Detect ⭐ NEW
366
+ #### Test 2.11: S3 Status Auto-Detect ⭐ NEW
384
367
  ```bash
385
368
  # Test: Check status from project directory
386
369
  cd ~/dev/video-projects/v-appydave/b65-*
@@ -393,7 +376,7 @@ bin/s3_sync_status.rb
393
376
 
394
377
  ---
395
378
 
396
- #### Test 2.13: S3 Cleanup with CLI Args ⭐ NEW
379
+ #### Test 2.12: S3 Cleanup with CLI Args ⭐ NEW
397
380
  ```bash
398
381
  # Test: Cleanup with explicit args (dry-run)
399
382
  bin/s3_sync_cleanup.rb appydave b65 --dry-run
@@ -405,7 +388,7 @@ bin/s3_sync_cleanup.rb appydave b65 --dry-run
405
388
 
406
389
  ---
407
390
 
408
- #### Test 2.14: S3 Cleanup Auto-Detect ⭐ NEW
391
+ #### Test 2.13: S3 Cleanup Auto-Detect ⭐ NEW
409
392
  ```bash
410
393
  # Test: Cleanup from project directory
411
394
  cd ~/dev/video-projects/v-appydave/b65-*
@@ -418,6 +401,102 @@ bin/s3_sync_cleanup.rb --dry-run
418
401
 
419
402
  ---
420
403
 
404
+ #### Test 2.14: Status - Brand Overview ⭐ PHASE 4
405
+ ```bash
406
+ # Test: Show unified status for entire brand
407
+ dam status appydave
408
+ ```
409
+ **Expected**: Shows brand git status, manifest summary (total projects, local, S3, SSD counts)
410
+
411
+ **Status**: [ ] Pass [ ] Fail
412
+ **Notes**: ___________________________________________
413
+
414
+ ---
415
+
416
+ #### Test 2.15: Status - Specific Project ⭐ PHASE 4
417
+ ```bash
418
+ # Test: Show detailed status for specific project
419
+ dam status appydave b65
420
+ ```
421
+ **Expected**: Shows storage locations (local, S3 staging, SSD backup) and git status for project
422
+
423
+ **Status**: [ ] Pass [ ] Fail
424
+ **Notes**: ___________________________________________
425
+
426
+ ---
427
+
428
+ #### Test 2.16: Repo Status - Single Brand ⭐ PHASE 4
429
+ ```bash
430
+ # Test: Show git status for single brand
431
+ dam repo-status appydave
432
+ ```
433
+ **Expected**: Shows branch, remote, working directory status, sync status
434
+
435
+ **Status**: [ ] Pass [ ] Fail
436
+ **Notes**: ___________________________________________
437
+
438
+ ---
439
+
440
+ #### Test 2.17: Repo Status - All Brands ⭐ PHASE 4
441
+ ```bash
442
+ # Test: Show git status for all brands
443
+ dam repo-status --all
444
+ ```
445
+ **Expected**: Shows git status for all configured brands (appydave, voz, aitldr, etc.)
446
+
447
+ **Status**: [ ] Pass [ ] Fail
448
+ **Notes**: ___________________________________________
449
+
450
+ ---
451
+
452
+ #### Test 2.18: Repo Sync - Single Brand ⭐ PHASE 4
453
+ ```bash
454
+ # Test: Pull updates for single brand
455
+ dam repo-sync appydave
456
+ ```
457
+ **Expected**: Pulls updates if available, skips if uncommitted changes, shows status
458
+
459
+ **Status**: [ ] Pass [ ] Fail
460
+ **Notes**: ___________________________________________
461
+
462
+ ---
463
+
464
+ #### Test 2.19: Repo Sync - All Brands ⭐ PHASE 4
465
+ ```bash
466
+ # Test: Pull updates for all brands
467
+ dam repo-sync --all
468
+ ```
469
+ **Expected**: Syncs all brands, shows summary, skips brands with uncommitted changes
470
+
471
+ **Status**: [ ] Pass [ ] Fail
472
+ **Notes**: ___________________________________________
473
+
474
+ ---
475
+
476
+ #### Test 2.20: Repo Push - Basic ⭐ PHASE 4
477
+ ```bash
478
+ # Test: Push changes for brand (no project validation)
479
+ dam repo-push appydave
480
+ ```
481
+ **Expected**: Pushes commits, shows push summary
482
+
483
+ **Status**: [ ] Pass [ ] Fail
484
+ **Notes**: ___________________________________________
485
+
486
+ ---
487
+
488
+ #### Test 2.21: Repo Push - With Project Validation ⭐ PHASE 4
489
+ ```bash
490
+ # Test: Push with project validation
491
+ dam repo-push appydave b65
492
+ ```
493
+ **Expected**: Validates project exists in manifest before pushing, shows validation message
494
+
495
+ **Status**: [ ] Pass [ ] Fail
496
+ **Notes**: ___________________________________________
497
+
498
+ ---
499
+
421
500
  ### Phase 3: Gem Installation Tests (Manual - Installed Gem)
422
501
 
423
502
  **Prerequisites**: `gem install pkg/appydave-tools-*.gem`
@@ -670,31 +749,18 @@ All video asset management commands have been successfully migrated and are full
670
749
  - ✅ `dam archive` - Archive to SSD (dry-run + optional force)
671
750
  - ✅ `dam sync-ssd` - Restore light files from SSD (dry-run)
672
751
 
752
+ ### Phase 4: Status & Git Integration
753
+ - ✅ `dam status` - Unified status view (local/S3/SSD/git)
754
+ - ✅ `dam repo-status` - Git status for brand repositories (`--all` support)
755
+ - ✅ `dam repo-sync` - Pull updates for brand repositories (`--all` support)
756
+ - ✅ `dam repo-push` - Push changes with optional project validation
757
+
673
758
  ### All Commands Support:
674
759
  - **CLI args**: `dam <command> <brand> <project>`
675
760
  - **Auto-detect**: Works from project directory (where applicable)
676
761
  - **Dry-run**: All destructive operations support `--dry-run`
677
762
  - **Force flags**: Extra safety for deletions
678
-
679
- ---
680
-
681
- ## Git Repository Scripts - Separate Concern
682
-
683
- The following shell scripts are **intentionally not migrated** as they manage git repositories, not video assets:
684
-
685
- ### `/video-projects/v-shared/*.sh`
686
-
687
- - `status-all.sh` - Runs `git status` on all v-* brand repos
688
- - `sync-all.sh` - Runs `git pull` on all v-* brand repos
689
- - `clone-all.sh` - Clones missing v-* brand repos
690
-
691
- **Why separate:**
692
- 1. Different domain: Git repository management vs. video asset management
693
- 2. Different tools: Shell + git commands vs. Ruby + AWS/file operations
694
- 3. Different location: Belongs in video-projects workspace, not in distributed gem
695
- 4. Shell scripts work perfectly for this use case
696
-
697
- **If migration is desired:** Could add `dam repo-status/sync/clone` but would duplicate working shell functionality and mix concerns.
763
+ - **Git integration**: Unified status + repo management commands
698
764
 
699
765
  ---
700
766
 
@@ -707,8 +773,8 @@ The following shell scripts are **intentionally not migrated** as they manage gi
707
773
  - **TOTAL**: **64 / 64 ✅**
708
774
 
709
775
  ### Phase 2: Integration Tests (Manual - Development)
710
- - Passed: _____ / 13
711
- - Failed: _____ / 13
776
+ - Passed: _____ / 23
777
+ - Failed: _____ / 23
712
778
 
713
779
  ### Phase 3: Gem Installation Tests (Manual - Installed)
714
780
  - Passed: _____ / 6
@@ -728,8 +794,8 @@ The following shell scripts are **intentionally not migrated** as they manage gi
728
794
 
729
795
  ### **GRAND TOTAL**
730
796
  - **Unit Tests**: 64 / 64 ✅
731
- - **Manual Tests**: _____ / 29
732
- - **Overall**: _____ / 93
797
+ - **Manual Tests**: _____ / 39
798
+ - **Overall**: _____ / 103
733
799
 
734
800
  ---
735
801
 
@@ -832,8 +898,8 @@ The following shell scripts are **intentionally not migrated** as they manage gi
832
898
 
833
899
  **Then manual development tests** (safest first):
834
900
  2. Phase 2.1-2.5: Help and list commands
835
- 3. Phase 2.6-2.7: S3 upload with dry-run
836
- 4. Phase 2.8-2.13: Phase 2 commands (download, status, cleanup) with dry-run
901
+ 3. Phase 2.6-2.14: S3 commands (upload, download, status, cleanup) with dry-run
902
+ 4. Phase 2.15-2.23: Phase 4 commands (status, repo-status, repo-sync, repo-push) NEW
837
903
  5. Phase 4: Edge cases and error handling
838
904
 
839
905
  **Then gem installation tests**: