appydave-tools 0.48.0 â 0.50.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/lib/appydave/tools/dam/status.rb +96 -5
- 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: 38598a0a55919f57722e25ecd6656b7e4a9148fba9af4c9bb0e05bdd95673ba9
|
|
4
|
+
data.tar.gz: 2c05be9216300f1a20da72cacd81febcb766bd5c4d9fb837061833ab1dd84b0b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9f1ec38a694d7e59f8c1fb96e22a8e5383cf28ae67f5970d4d85115a7687f0ee1b0ae9f151854233c9b625222a8c3f916ff40485455ed86b640e4a0aeab5e340
|
|
7
|
+
data.tar.gz: 6da457e297a6af254471af6e6f662281c8dff6fd27fdb5f7cf0640b47051ad0491e5e782f9e01c6029e838f205ab39c0afba7fb54687e59eb34c324d80077912
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [0.49.0](https://github.com/appydave/appydave-tools/compare/v0.48.0...v0.49.0) (2025-11-21)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* improve project status display with size, file counts, and remove git section ([0cc6e15](https://github.com/appydave/appydave-tools/commit/0cc6e155902c25dcd2a551508a91fd3715f94bff))
|
|
7
|
+
|
|
8
|
+
# [0.48.0](https://github.com/appydave/appydave-tools/compare/v0.47.0...v0.48.0) (2025-11-21)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* remove PATH column from project lists and add note about file-only listing ([4cd3c67](https://github.com/appydave/appydave-tools/commit/4cd3c67196c08998fdbc172ff262a94abcfa8beb))
|
|
14
|
+
|
|
1
15
|
# [0.47.0](https://github.com/appydave/appydave-tools/compare/v0.46.0...v0.47.0) (2025-11-21)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -40,7 +40,8 @@ module Appydave
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def show_project_status
|
|
43
|
-
|
|
43
|
+
project_size = calculate_project_size
|
|
44
|
+
puts "đ Status: v-#{brand}/#{File.basename(project_path)} (#{format_size(project_size)})"
|
|
44
45
|
puts ''
|
|
45
46
|
|
|
46
47
|
manifest = load_manifest
|
|
@@ -57,7 +58,6 @@ module Appydave
|
|
|
57
58
|
end
|
|
58
59
|
|
|
59
60
|
show_storage_status(project_entry)
|
|
60
|
-
show_git_status if git_repo?
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def show_brand_status
|
|
@@ -104,8 +104,22 @@ module Appydave
|
|
|
104
104
|
|
|
105
105
|
if local[:exists]
|
|
106
106
|
puts ' đ Local: â exists'
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
|
|
108
|
+
# Show heavy files with count and size
|
|
109
|
+
if local[:has_heavy_files]
|
|
110
|
+
heavy_info = count_and_size_heavy_files
|
|
111
|
+
puts " Heavy files: #{heavy_info[:count]} (#{format_size(heavy_info[:size])})"
|
|
112
|
+
else
|
|
113
|
+
puts ' Heavy files: none'
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Show light files with count and size
|
|
117
|
+
if local[:has_light_files]
|
|
118
|
+
light_info = count_and_size_light_files
|
|
119
|
+
puts " Light files: #{light_info[:count]} (#{format_size(light_info[:size])})"
|
|
120
|
+
else
|
|
121
|
+
puts ' Light files: none'
|
|
122
|
+
end
|
|
109
123
|
else
|
|
110
124
|
puts ' đ Local: â does not exist'
|
|
111
125
|
end
|
|
@@ -175,7 +189,24 @@ module Appydave
|
|
|
175
189
|
|
|
176
190
|
def show_manifest_summary(manifest)
|
|
177
191
|
puts 'đ Manifest Summary:'
|
|
178
|
-
|
|
192
|
+
|
|
193
|
+
# Show manifest age
|
|
194
|
+
if manifest[:config] && manifest[:config][:last_updated]
|
|
195
|
+
age = calculate_manifest_age(manifest[:config][:last_updated])
|
|
196
|
+
age_indicator = manifest_age_indicator(age)
|
|
197
|
+
puts " Last updated: #{format_manifest_age(age)} #{age_indicator}"
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# Count active (flat/local) vs archived projects
|
|
201
|
+
active_count = manifest[:projects].count do |p|
|
|
202
|
+
p[:storage][:local][:exists] && p[:storage][:local][:structure] == 'flat'
|
|
203
|
+
end
|
|
204
|
+
archived_count = manifest[:projects].count do |p|
|
|
205
|
+
p[:storage][:local][:exists] && p[:storage][:local][:structure] == 'archived'
|
|
206
|
+
end
|
|
207
|
+
total = manifest[:projects].size
|
|
208
|
+
|
|
209
|
+
puts " Total: #{total} (Active: #{active_count}, Archived: #{archived_count})"
|
|
179
210
|
|
|
180
211
|
local_count = manifest[:projects].count { |p| p[:storage][:local][:exists] }
|
|
181
212
|
s3_count = manifest[:projects].count { |p| p[:storage][:s3][:exists] }
|
|
@@ -258,6 +289,66 @@ module Appydave
|
|
|
258
289
|
def commits_behind
|
|
259
290
|
GitHelper.commits_behind(brand_path)
|
|
260
291
|
end
|
|
292
|
+
|
|
293
|
+
def calculate_project_size
|
|
294
|
+
FileHelper.calculate_directory_size(project_path)
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
def count_and_size_heavy_files
|
|
298
|
+
count = 0
|
|
299
|
+
size = 0
|
|
300
|
+
Dir.glob(File.join(project_path, '*.{mp4,mov,avi,mkv,webm}')).each do |file|
|
|
301
|
+
count += 1
|
|
302
|
+
size += File.size(file)
|
|
303
|
+
end
|
|
304
|
+
{ count: count, size: size }
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def count_and_size_light_files
|
|
308
|
+
count = 0
|
|
309
|
+
size = 0
|
|
310
|
+
Dir.glob(File.join(project_path, '**/*.{srt,vtt,jpg,png,md,txt,json,yml}')).each do |file|
|
|
311
|
+
count += 1
|
|
312
|
+
size += File.size(file)
|
|
313
|
+
end
|
|
314
|
+
{ count: count, size: size }
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
def format_size(bytes)
|
|
318
|
+
FileHelper.format_size(bytes)
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
def calculate_manifest_age(last_updated_str)
|
|
322
|
+
last_updated = Time.parse(last_updated_str)
|
|
323
|
+
Time.now - last_updated
|
|
324
|
+
rescue ArgumentError
|
|
325
|
+
nil
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
def format_manifest_age(age_seconds)
|
|
329
|
+
return 'Unknown' if age_seconds.nil?
|
|
330
|
+
|
|
331
|
+
days = age_seconds / 86_400
|
|
332
|
+
if days < 1
|
|
333
|
+
hours = age_seconds / 3600
|
|
334
|
+
"#{hours.round}h ago"
|
|
335
|
+
else
|
|
336
|
+
"#{days.round}d ago"
|
|
337
|
+
end
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
def manifest_age_indicator(age_seconds)
|
|
341
|
+
return '' if age_seconds.nil?
|
|
342
|
+
|
|
343
|
+
days = age_seconds / 86_400
|
|
344
|
+
if days < 3
|
|
345
|
+
'â Fresh'
|
|
346
|
+
elsif days < 7
|
|
347
|
+
'âšī¸ Aging'
|
|
348
|
+
else
|
|
349
|
+
'â ī¸ Stale'
|
|
350
|
+
end
|
|
351
|
+
end
|
|
261
352
|
end
|
|
262
353
|
end
|
|
263
354
|
end
|
data/package.json
CHANGED