appydave-tools 0.3.3 → 0.3.4
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/lib/appydave/tools/configuration/_doc.md +67 -1
- data/lib/appydave/tools/configuration/channel_projects_config.rb +0 -4
- data/lib/appydave/tools/configuration/channels_config.rb +10 -4
- data/lib/appydave/tools/configuration/config.rb +7 -0
- data/lib/appydave/tools/configuration/config_base.rb +21 -1
- data/lib/appydave/tools/configuration/settings_config.rb +0 -4
- data/lib/appydave/tools/name_manager/_doc.md +21 -0
- data/lib/appydave/tools/name_manager/project_name.rb +40 -0
- data/lib/appydave/tools/version.rb +1 -1
- data/lib/appydave/tools.rb +2 -0
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5e47cee4b8a3f0c9d7d1714bceeb4a02780cfe441348466ecd822e4e454d0fe
|
4
|
+
data.tar.gz: 3f035ac5b9e34e819a79c17f3c19a9646ec246017493a63ba20a1096ae86c95f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59aa944562e5a3c28c47e053a49df7d9ea6236268736263dca2d29022ed4d3a70d1a3fe9668b080183dfce38fe520efac252aa2c0fe11f40aa7491a325f88570
|
7
|
+
data.tar.gz: 55aa8b91b2992fec8968f214baefc896ab816e56a77ff0f724b99d0f3ac10d8eb8446e220beecbac5398b3b23cf46bad14b8fe3dc785af25573cbbbf077e0f87
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [0.3.3](https://github.com/klueless-io/appydave-tools/compare/v0.3.2...v0.3.3) (2024-05-18)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* updating configuration with channels and channel_projects ([d4f54aa](https://github.com/klueless-io/appydave-tools/commit/d4f54aa0f455f535b6e265f23e6fba123d099d26))
|
7
|
+
|
1
8
|
## [0.3.2](https://github.com/klueless-io/appydave-tools/compare/v0.3.1...v0.3.2) (2024-05-16)
|
2
9
|
|
3
10
|
|
@@ -1,3 +1,69 @@
|
|
1
1
|
# Configuration Component
|
2
2
|
|
3
|
-
[ChatGPT conversation](https://chatgpt.com/g/g-4dMsIRK3E-ruby-script-assistant/c/d8ea5960-071b-48aa-9fd9-554ca302c7dd)
|
3
|
+
[ChatGPT conversation](https://chatgpt.com/g/g-4dMsIRK3E-ruby-script-assistant/c/d8ea5960-071b-48aa-9fd9-554ca302c7dd)
|
4
|
+
[ChatGPT confersation for Schema](https://chatgpt.com/c/bb93e7ac-f139-44f9-8b9c-4e74ac2fa461)
|
5
|
+
|
6
|
+
## Schema
|
7
|
+
|
8
|
+
### Channels Schema
|
9
|
+
|
10
|
+
- **code**: Short identifier for the channel (e.g., `"ad"`, `"ac"`, `"fv"`).
|
11
|
+
- **name**: Full name of the channel (e.g., `"AppyDave"`, `"AppyDave Coding"`, `"FliVideo"`).
|
12
|
+
- **youtube_handle**: YouTube handle for the channel (e.g., `"@appydave"`, `"@appydavecoding"`, `"@flivideo"`).
|
13
|
+
|
14
|
+
#### Example
|
15
|
+
|
16
|
+
```json
|
17
|
+
{
|
18
|
+
"channels": {
|
19
|
+
"appydave": {
|
20
|
+
"code": "ad",
|
21
|
+
"name": "AppyDave",
|
22
|
+
"youtube_handle": "@appydave"
|
23
|
+
},
|
24
|
+
"appydave_coding": {
|
25
|
+
"code": "ac",
|
26
|
+
"name": "AppyDave Coding",
|
27
|
+
"youtube_handle": "@appydavecoding"
|
28
|
+
},
|
29
|
+
"fli_video": {
|
30
|
+
"code": "fv",
|
31
|
+
"name": "FliVideo",
|
32
|
+
"youtube_handle": "@flivideo"
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
```
|
37
|
+
|
38
|
+
### Channel Projects Schema
|
39
|
+
|
40
|
+
- **content_projects**: Path to the shared folder for content creation (e.g., `"/user/Library/CloudStorage/Dropbox/team-appydave"`).
|
41
|
+
- **video_projects**: Path to the local storage folder for active video projects (e.g., `"/user/tube-channels/appy-dave/active"`).
|
42
|
+
- **published_projects**: Path to the archive folder for published projects (e.g., `"/Volumes/Expansion/published/appydave"`).
|
43
|
+
- **abandoned_projects**: Path to the archive folder for incomplete or failed projects (e.g., `"/Volumes/Expansion/failed/appydave"`).
|
44
|
+
|
45
|
+
## Example
|
46
|
+
```json
|
47
|
+
{
|
48
|
+
"projects": {
|
49
|
+
"appydave": {
|
50
|
+
"content_projects": "/user/Library/CloudStorage/Dropbox/team-appydave",
|
51
|
+
"video_projects": "/user/tube-channels/appy-dave/active",
|
52
|
+
"published_projects": "/Volumes/Expansion/published/appydave",
|
53
|
+
"abandoned_projects": "/Volumes/Expansion/failed/appydave"
|
54
|
+
},
|
55
|
+
"appydave_coding": {
|
56
|
+
"content_projects": "/user/Library/CloudStorage/Dropbox/team-appydavecoding",
|
57
|
+
"video_projects": "/user/tube-channels/a-cast/cast-active",
|
58
|
+
"published_projects": "/Volumes/Expansion/published/appydave-coding",
|
59
|
+
"abandoned_projects": "/Volumes/Expansion/failed/appydave-coding"
|
60
|
+
},
|
61
|
+
"fli_video": {
|
62
|
+
"content_projects": "/user/Library/CloudStorage/Dropbox/team-flivideo",
|
63
|
+
"video_projects": "/user/tube-channels/fli-video/active",
|
64
|
+
"published_projects": "/Volumes/Expansion/published/fli-video",
|
65
|
+
"abandoned_projects": "/Volumes/Expansion/failed/fli-video"
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
```
|
@@ -5,10 +5,6 @@ module Appydave
|
|
5
5
|
module Configuration
|
6
6
|
# Channel projects configuration
|
7
7
|
class ChannelProjectsConfig < ConfigBase
|
8
|
-
def initialize
|
9
|
-
super('channel_projects')
|
10
|
-
end
|
11
|
-
|
12
8
|
# Retrieve channel information by channel name (string or symbol)
|
13
9
|
def get_channel_info(channel_name)
|
14
10
|
channel_name = channel_name.to_s
|
@@ -5,10 +5,6 @@ module Appydave
|
|
5
5
|
module Configuration
|
6
6
|
# Channels configuration
|
7
7
|
class ChannelsConfig < ConfigBase
|
8
|
-
def initialize
|
9
|
-
super('channels')
|
10
|
-
end
|
11
|
-
|
12
8
|
# Retrieve channel information by channel code (string or symbol)
|
13
9
|
def get_channel(channel_key)
|
14
10
|
channel_key = channel_key.to_s
|
@@ -29,6 +25,16 @@ module Appydave
|
|
29
25
|
end
|
30
26
|
end
|
31
27
|
|
28
|
+
def key?(key)
|
29
|
+
key = key.to_s
|
30
|
+
data['channels'].key?(key)
|
31
|
+
end
|
32
|
+
|
33
|
+
def code?(code)
|
34
|
+
code = code.to_s
|
35
|
+
data['channels'].values.any? { |info| info['code'] == code }
|
36
|
+
end
|
37
|
+
|
32
38
|
private
|
33
39
|
|
34
40
|
def default_data
|
@@ -6,6 +6,8 @@ module Appydave
|
|
6
6
|
# Configuration class for handling multiple configurations
|
7
7
|
class Config
|
8
8
|
class << self
|
9
|
+
include KLog::Logging
|
10
|
+
|
9
11
|
attr_accessor :config_path
|
10
12
|
attr_reader :configurations
|
11
13
|
|
@@ -46,6 +48,11 @@ module Appydave
|
|
46
48
|
Open3.capture3(open_vscode)
|
47
49
|
end
|
48
50
|
|
51
|
+
def debug
|
52
|
+
log.kv 'Configuration Path', config_path
|
53
|
+
configurations.each_value(&:debug)
|
54
|
+
end
|
55
|
+
|
49
56
|
private
|
50
57
|
|
51
58
|
def ensure_config_directory
|
@@ -8,9 +8,11 @@ module Appydave
|
|
8
8
|
module Configuration
|
9
9
|
# Base class for handling common configuration tasks
|
10
10
|
class ConfigBase
|
11
|
+
include KLog::Logging
|
12
|
+
|
11
13
|
attr_reader :config_path, :data
|
12
14
|
|
13
|
-
def initialize
|
15
|
+
def initialize
|
14
16
|
@config_path = File.join(Config.config_path, "#{config_name}.json")
|
15
17
|
@data = load
|
16
18
|
end
|
@@ -24,9 +26,27 @@ module Appydave
|
|
24
26
|
|
25
27
|
default_data
|
26
28
|
rescue JSON::ParserError
|
29
|
+
# log.exception e
|
27
30
|
default_data
|
28
31
|
end
|
29
32
|
|
33
|
+
def name
|
34
|
+
self.class.name.split('::')[-1].gsub(/Config$/, '')
|
35
|
+
end
|
36
|
+
|
37
|
+
def config_name
|
38
|
+
name.gsub(/([a-z])([A-Z])/, '\1-\2').downcase
|
39
|
+
end
|
40
|
+
|
41
|
+
def debug
|
42
|
+
log.kv 'Config', name
|
43
|
+
log.kv 'Path', config_path
|
44
|
+
|
45
|
+
log.json data
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
30
50
|
def default_data
|
31
51
|
{}
|
32
52
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Naming Manager
|
2
|
+
|
3
|
+
[ChatGPT conversation](https://chatgpt.com/g/g-4dMsIRK3E-ruby-script-assistant/c/cab5e2f7-a607-402f-80b7-9ca262bab8ee)
|
4
|
+
|
5
|
+
## Channel Names
|
6
|
+
|
7
|
+
| Key | Code | Name | YouTube Handle |
|
8
|
+
|-----------------|------|-----------------|--------------------|
|
9
|
+
| appydave | ad | AppyDave | @appydave |
|
10
|
+
| appydave_coding | ac | AppyDave Coding | @appydavecoding |
|
11
|
+
| fli_video | fv | FliVideo | @flivideo |
|
12
|
+
| winning_prompts | wp | Winning Prompts | @winningprompts |
|
13
|
+
| trend10 | t1 | Trend10 | @trend10 |
|
14
|
+
| aitldr | tl | AI TLDR | @aitldr |
|
15
|
+
|
16
|
+
|
17
|
+
## Project Naming Component
|
18
|
+
|
19
|
+
The Project Naming Component is a tool designed to generate standardized names for projects within the YouTube content creation process.
|
20
|
+
It ensures consistency and clarity by combining a unique sequence identifier, an optional channel code, and a descriptive project name into a well-defined format.
|
21
|
+
This component is essential for maintaining organized and easily recognizable project names across all channels and project types.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Appydave
|
4
|
+
module Tools
|
5
|
+
# Project, channel, and file name management
|
6
|
+
module NameManager
|
7
|
+
# Parses and generates project names for Appydave video projects
|
8
|
+
class ProjectName
|
9
|
+
attr_reader :sequence, :channel_code, :project_name
|
10
|
+
|
11
|
+
def initialize(file_name)
|
12
|
+
parse_file_name(file_name)
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate_name
|
16
|
+
if channel_code
|
17
|
+
"#{sequence}-#{channel_code}-#{project_name}"
|
18
|
+
else
|
19
|
+
"#{sequence}-#{project_name}"
|
20
|
+
end.downcase
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_s
|
24
|
+
generate_name
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def parse_file_name(file_name)
|
30
|
+
file_name = File.basename(file_name, File.extname(file_name))
|
31
|
+
parts = file_name.split('-')
|
32
|
+
|
33
|
+
@sequence = parts[0]
|
34
|
+
@project_name = parts[-1]
|
35
|
+
@channel_code = parts.length == 3 ? parts[1] : nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/appydave/tools.rb
CHANGED
@@ -5,6 +5,7 @@ require 'fileutils'
|
|
5
5
|
require 'json'
|
6
6
|
require 'open3'
|
7
7
|
require 'optparse'
|
8
|
+
require 'k_log'
|
8
9
|
|
9
10
|
require 'appydave/tools/version'
|
10
11
|
require 'appydave/tools/gpt_context/file_collector'
|
@@ -14,6 +15,7 @@ require 'appydave/tools/configuration/config'
|
|
14
15
|
require 'appydave/tools/configuration/settings_config'
|
15
16
|
require 'appydave/tools/configuration/channel_projects_config'
|
16
17
|
require 'appydave/tools/configuration/channels_config'
|
18
|
+
require 'appydave/tools/name_manager/project_name'
|
17
19
|
|
18
20
|
module Appydave
|
19
21
|
module Tools
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "appydave-tools",
|
3
|
-
"version": "0.3.
|
3
|
+
"version": "0.3.4",
|
4
4
|
"lockfileVersion": 3,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "appydave-tools",
|
9
|
-
"version": "0.3.
|
9
|
+
"version": "0.3.4",
|
10
10
|
"devDependencies": {
|
11
11
|
"@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
|
12
12
|
"@semantic-release/changelog": "^6.0.3",
|
data/package.json
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appydave-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clipboard
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: k_log
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
description: " AppyDave YouTube Automation Tools\n"
|
28
42
|
email:
|
29
43
|
- david@ideasmen.com.au
|
@@ -56,6 +70,8 @@ files:
|
|
56
70
|
- lib/appydave/tools/configuration/settings_config copy.xrb
|
57
71
|
- lib/appydave/tools/configuration/settings_config.rb
|
58
72
|
- lib/appydave/tools/gpt_context/file_collector.rb
|
73
|
+
- lib/appydave/tools/name_manager/_doc.md
|
74
|
+
- lib/appydave/tools/name_manager/project_name.rb
|
59
75
|
- lib/appydave/tools/version.rb
|
60
76
|
- package-lock.json
|
61
77
|
- package.json
|