appydave-tools 0.43.0 → 0.45.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: abc6dfb0d67bcfeae2ed2bd59c51e5926b35948c57957226975a19f02ab835b1
4
- data.tar.gz: dfb7b9e5a59260a87a9741edee11d2eb91cde891bf724ab7e312d40cdce78d7d
3
+ metadata.gz: a12259907f7e3da7f0e18fc5f0f7aaff5744d412e1a42dc880c6c1170f4c674c
4
+ data.tar.gz: 4e58da3b9f3d2d06c7962aee6293bfb0dbecc88e6860bf43bd9eee16a02488fe
5
5
  SHA512:
6
- metadata.gz: 494ba66d882da3ed30f0ae7adb93a1459d45b550aca1f04d15d636b2fac16dc423f2a94125dbf0489cb42b662d859d7da915a110adb2a61248f9728d8f1e273f
7
- data.tar.gz: b3d7dae675807d99fe02c612eb25fc6d0627e4eb34af4da153c4e7c56b242b23589b0711e0ba15120be4afb1eb7c797716fdfdbb4c92776e43680a70dff28478
6
+ metadata.gz: 2d270d23430edfdcfe7a657dd1079d659539094bfc4e0b09094ad45be035374def183bd939a6278aa426f387dc1597eed97cd87829fc6624f05ce04b2871dab2
7
+ data.tar.gz: d31d0447c59b16fc2722d86f42853f35df599a752e98397be3e9c25eb34d2e0b6858a5d0a5277aa8efaff41afe84c21087ec146997ac78b92627182a39e875c5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [0.44.0](https://github.com/appydave/appydave-tools/compare/v0.43.0...v0.44.0) (2025-11-21)
2
+
3
+
4
+ ### Features
5
+
6
+ * add AGE column to project listing with stale indicator ([31ab044](https://github.com/appydave/appydave-tools/commit/31ab044f750c9fc4472365252205a356ff607b7e))
7
+
8
+ # [0.43.0](https://github.com/appydave/appydave-tools/compare/v0.42.0...v0.43.0) (2025-11-21)
9
+
10
+
11
+ ### Features
12
+
13
+ * improve DAM error messages with helpful hints and match counts ([bb4e71e](https://github.com/appydave/appydave-tools/commit/bb4e71ea064b131b7df05e61e98eefc858cbb610))
14
+
1
15
  # [0.42.0](https://github.com/appydave/appydave-tools/compare/v0.41.0...v0.42.0) (2025-11-21)
2
16
 
3
17
 
@@ -80,25 +80,35 @@ module Appydave
80
80
  name: project,
81
81
  path: project_path,
82
82
  size: size,
83
- modified: modified
83
+ modified: modified,
84
+ age: format_age(modified),
85
+ stale: stale?(modified)
84
86
  }
85
87
  end
86
88
 
87
89
  # Print table header
88
90
  puts "Projects in #{brand}:"
89
- puts 'PROJECT SIZE LAST MODIFIED PATH'
91
+ puts 'PROJECT SIZE AGE PATH'
90
92
  puts '-' * 120
91
93
 
92
94
  # Print table rows
93
95
  project_data.each do |data|
96
+ age_display = data[:stale] ? "#{data[:age]} ⚠️" : data[:age]
94
97
  puts format(
95
- '%-45s %12s %20s %s',
98
+ '%-45s %12s %15s %s',
96
99
  data[:name],
97
100
  format_size(data[:size]),
98
- format_date(data[:modified]),
101
+ age_display,
99
102
  shorten_path(data[:path])
100
103
  )
101
104
  end
105
+
106
+ # Print footer summary
107
+ total_size = project_data.sum { |d| d[:size] }
108
+ project_count = project_data.size
109
+
110
+ puts ''
111
+ puts "Total: #{project_count} project#{'s' if project_count != 1}, #{format_size(total_size)}"
102
112
  end
103
113
 
104
114
  # List with pattern matching (Mode 3b)
@@ -131,26 +141,39 @@ module Appydave
131
141
  name: project,
132
142
  path: project_path,
133
143
  size: size,
134
- modified: modified
144
+ modified: modified,
145
+ age: format_age(modified),
146
+ stale: stale?(modified)
135
147
  }
136
148
  end
137
149
 
138
150
  # Print table header
139
151
  match_count = matches.size
140
152
  puts "#{match_count} project#{'s' if match_count != 1} matching '#{pattern}' in #{brand}:"
141
- puts 'PROJECT SIZE LAST MODIFIED PATH'
153
+ puts 'PROJECT SIZE AGE PATH'
142
154
  puts '-' * 120
143
155
 
144
156
  # Print table rows
145
157
  project_data.each do |data|
158
+ age_display = data[:stale] ? "#{data[:age]} ⚠️" : data[:age]
146
159
  puts format(
147
- '%-45s %12s %20s %s',
160
+ '%-45s %12s %15s %s',
148
161
  data[:name],
149
162
  format_size(data[:size]),
150
- format_date(data[:modified]),
163
+ age_display,
151
164
  shorten_path(data[:path])
152
165
  )
153
166
  end
167
+
168
+ # Print footer summary
169
+ total_size = project_data.sum { |d| d[:size] }
170
+ all_projects = ProjectResolver.list_projects(brand_arg)
171
+ brand_total_size = calculate_total_size(brand_arg, all_projects)
172
+ percentage = brand_total_size.positive? ? (total_size.to_f / brand_total_size * 100).round(1) : 0
173
+
174
+ puts ''
175
+ puts "Total: #{match_count} project#{'s' if match_count != 1}, #{format_size(total_size)} " \
176
+ "(#{percentage}% of #{brand})"
154
177
  end
155
178
 
156
179
  # Helper methods
@@ -183,6 +206,40 @@ module Appydave
183
206
  time.strftime('%Y-%m-%d %H:%M')
184
207
  end
185
208
 
209
+ # Format age as relative time (e.g., "3 days", "2 weeks")
210
+ def self.format_age(time)
211
+ return 'N/A' if time.nil?
212
+
213
+ seconds = Time.now - time
214
+ return 'just now' if seconds < 60
215
+
216
+ minutes = seconds / 60
217
+ return "#{minutes.round}m" if minutes < 60
218
+
219
+ hours = minutes / 60
220
+ return "#{hours.round}h" if hours < 24
221
+
222
+ days = hours / 24
223
+ return "#{days.round}d" if days < 7
224
+
225
+ weeks = days / 7
226
+ return "#{weeks.round}w" if weeks < 4
227
+
228
+ months = days / 30
229
+ return "#{months.round}mo" if months < 12
230
+
231
+ years = days / 365
232
+ "#{years.round}y"
233
+ end
234
+
235
+ # Check if project is stale (>90 days old)
236
+ def self.stale?(time)
237
+ return false if time.nil?
238
+
239
+ days = (Time.now - time) / 86_400 # seconds in a day
240
+ days > 90
241
+ end
242
+
186
243
  # Shorten path by replacing home directory with ~
187
244
  def self.shorten_path(path)
188
245
  path.sub(Dir.home, '~')
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Appydave
4
4
  module Tools
5
- VERSION = '0.43.0'
5
+ VERSION = '0.45.0'
6
6
  end
7
7
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appydave-tools",
3
- "version": "0.43.0",
3
+ "version": "0.45.0",
4
4
  "description": "AppyDave YouTube Automation Tools",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appydave-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.43.0
4
+ version: 0.45.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys