fli_video 0.0.2 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.builders/generators/back/scripts/01-get-technical-design-and-feature-list.rb +32 -0
- data/.builders/generators/back/scripts/02-get-feature-list-and-components.rb +42 -0
- data/.builders/generators/back/scripts/03-get-structure.rb +104 -0
- data/.builders/generators/back/scripts/generated/application-structure.json +231 -0
- data/.builders/generators/back/scripts/generated/features-and-components.md +988 -0
- data/.builders/generators/back/scripts/generated/technical-design-and-features.md +424 -0
- data/.builders/klues/add_episode.klue +25 -0
- data/.builders/klues/change_chapter_name.klue +32 -0
- data/.builders/klues/create_chapter_video.klue +34 -0
- data/.builders/klues/create_project.klue +37 -0
- data/.builders/klues/empty_trash.klue +24 -0
- data/.builders/klues/episode_path.klue +77 -0
- data/.builders/klues/global_config.klue +31 -0
- data/.builders/klues/move_ecamm_file.klue +21 -0
- data/.builders/klues/move_to_trash.klue +35 -0
- data/.builders/klues/open_in_finder.klue +25 -0
- data/.builders/klues/project_config.klue +123 -0
- data/.builders/klues/project_meta_data_store.klue +28 -0
- data/.builders/klues/project_path.klue +77 -0
- data/.builders/klues/recording_file_watcher.klue +28 -0
- data/.builders/klues/recording_filename.klue +112 -0
- data/.builders/klues/restore_from_trash.klue +29 -0
- data/.builders/klues/switch_focus.klue +24 -0
- data/.builders/klues/text_to_speech.klue +29 -0
- data/.builders/klues/transcript_data_store.klue +28 -0
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +26 -0
- data/README.md +13 -20
- data/bin/fli_video +6 -0
- data/docs/feature-list.md +76 -0
- data/docs/generated/application-structure.json +53 -0
- data/docs/generated/features-and-components.md +993 -0
- data/docs/generated/technical-design-and-features.md +437 -0
- data/docs/technical-specifications.md +360 -0
- data/fli.rb +138 -0
- data/lib/fli_video/cli.rb +30 -0
- data/lib/fli_video/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/scripts/01-get-technical-design-and-feature-list.md +5 -0
- data/scripts/01-get-technical-design-and-feature-list.rb +39 -0
- data/scripts/02-get-feature-list-and-components.md +26 -0
- data/scripts/02-get-feature-list-and-components.rb +56 -0
- data/scripts/03-get-code-structure.md +33 -0
- data/scripts/03-get-code-structure.rb +73 -0
- metadata +41 -3
- data/README-features.md +0 -36
@@ -0,0 +1,56 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'find'
|
3
|
+
|
4
|
+
# Method to read file contents
|
5
|
+
def read_file(file_path)
|
6
|
+
begin
|
7
|
+
File.read(file_path)
|
8
|
+
rescue => e
|
9
|
+
puts "Error reading file #{file_path}: #{e}"
|
10
|
+
""
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Method to write content to a file
|
15
|
+
def write_file(file_path, content)
|
16
|
+
begin
|
17
|
+
# Ensure the directory exists
|
18
|
+
Dir.mkdir(File.dirname(file_path)) unless Dir.exist?(File.dirname(file_path))
|
19
|
+
File.write(file_path, content)
|
20
|
+
rescue => e
|
21
|
+
puts "Error writing to file #{file_path}: #{e}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Method to combine Klue files
|
26
|
+
def combine_klue_files(klue_dir)
|
27
|
+
klue_components = "## Klue Components\n"
|
28
|
+
Find.find(klue_dir) do |path|
|
29
|
+
if path =~ /.*\.klue$/
|
30
|
+
klue_file_content = read_file(path)
|
31
|
+
klue_components += "Klue Component: `#{File.basename(path)}`\n\n```ruby\n#{klue_file_content}\n```\n"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
klue_components
|
35
|
+
end
|
36
|
+
|
37
|
+
# Method to copy content to clipboard
|
38
|
+
def copy_to_clipboard(content)
|
39
|
+
IO.popen('pbcopy', 'w') { |clip| clip.puts content }
|
40
|
+
end
|
41
|
+
|
42
|
+
# Read the feature list
|
43
|
+
feature_list = read_file('docs/feature-list.md')
|
44
|
+
|
45
|
+
# Combine Klue files
|
46
|
+
klue_components = combine_klue_files('.builders/klues')
|
47
|
+
|
48
|
+
# Merge contents
|
49
|
+
merged_content = "#{feature_list}\n\n#{klue_components}"
|
50
|
+
|
51
|
+
# Output file path
|
52
|
+
output_file = 'docs/generated/features-and-components.md'
|
53
|
+
|
54
|
+
# Write the merged content to the output file and copy to clipboard
|
55
|
+
write_file(output_file, merged_content)
|
56
|
+
copy_to_clipboard(merged_content)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
## Prompt:
|
2
|
+
|
3
|
+
Create a Ruby script to scan a project's directory, ignoring specific folders and files. For the remaining files generate a JSON file with their structure and content and write to `docs/generated/application-structure.json`
|
4
|
+
|
5
|
+
Store a copy of the data in the clipboard
|
6
|
+
|
7
|
+
For some files, eg. ` *.rb` I would like you to read the content and put it in the JSON
|
8
|
+
|
9
|
+
### Sample Structure
|
10
|
+
```json
|
11
|
+
[
|
12
|
+
{
|
13
|
+
"name": ".rspec_status",
|
14
|
+
"type": "file"
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"name": "spec",
|
18
|
+
"type": "directory",
|
19
|
+
"children": [
|
20
|
+
{
|
21
|
+
"name": "spec_helper.rb",
|
22
|
+
"type": "file",
|
23
|
+
"content": "# frozen_string_literal: true\n\nrequire 'pry'\nrequire 'bundler/setup'\nrequire 'simplecov'\n\nSimpleCov.start\n\nrequire 'fli_video'\n\nRSpec.configure do |config|\n # Enable flags like --only-failures and --next-failure\n config.example_status_persistence_file_path = '.rspec_status'\n config.filter_run_when_matching :focus\n\n # Disable RSpec exposing methods globally on `Module` and `main`\n config.disable_monkey_patching!\n\n config.expect_with :rspec do |c|\n c.syntax = :expect\n end\nend\n"
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"name": "fli_video_spec.rb",
|
27
|
+
"type": "file",
|
28
|
+
"content": "# frozen_string_literal: true\n\nRSpec.describe FliVideo do\n it 'has a version number' do\n expect(FliVideo::VERSION).not_to be_nil\n end\nend\n"
|
29
|
+
}
|
30
|
+
]
|
31
|
+
},
|
32
|
+
]
|
33
|
+
```
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'json'
|
3
|
+
require 'find'
|
4
|
+
|
5
|
+
# Method to read file contents based on inclusion patterns
|
6
|
+
def read_file_contents(file_path, include_content_for)
|
7
|
+
return nil unless include_content_for.any? { |pattern| File.fnmatch(pattern[:pattern], File.basename(file_path)) }
|
8
|
+
File.read(file_path)
|
9
|
+
end
|
10
|
+
|
11
|
+
# Method to write JSON content to a file
|
12
|
+
def write_structure_to_file(file_path, content)
|
13
|
+
File.write(file_path, JSON.pretty_generate(content))
|
14
|
+
end
|
15
|
+
|
16
|
+
# Method to copy content to clipboard
|
17
|
+
def copy_to_clipboard(content)
|
18
|
+
IO.popen('pbcopy', 'w') { |clip| clip.puts content }
|
19
|
+
end
|
20
|
+
|
21
|
+
# Method to scan and structure directory contents
|
22
|
+
def scan_directory(dir, ignore_folders, ignore_files, include_content_for)
|
23
|
+
Dir.children(dir).map do |entry|
|
24
|
+
path = "#{dir}/#{entry}"
|
25
|
+
next if ignore_folders.include?(File.basename(path)) || ignore_files.include?(File.basename(path))
|
26
|
+
|
27
|
+
if File.directory?(path)
|
28
|
+
{ 'name' => entry, 'type' => 'directory', 'children' => scan_directory(path, ignore_folders, ignore_files, include_content_for) }
|
29
|
+
else
|
30
|
+
file_data = { 'name' => entry, 'type' => 'file' }
|
31
|
+
file_data['content'] = read_file_contents(path, include_content_for) if include_content_for.any? { |pattern| File.fnmatch(pattern[:pattern], entry) }
|
32
|
+
file_data
|
33
|
+
end
|
34
|
+
end.compact
|
35
|
+
end
|
36
|
+
|
37
|
+
# Method to build content for GPT clipboard
|
38
|
+
def build_gpt_content(structure)
|
39
|
+
JSON.pretty_generate(structure)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Usage example:
|
43
|
+
ignore_folders = ['coverage', 'tmp', 'log', '.git', '.githooks', '.github', 'bin', 'sig', 'node_modules', '.builders', 'docs', 'scripts']
|
44
|
+
|
45
|
+
ignore_files = [
|
46
|
+
'fli.rb',
|
47
|
+
'application-structure.json',
|
48
|
+
'.rspec_status',
|
49
|
+
'.releaserc.json',
|
50
|
+
'CODE_OF_CONDUCT.md',
|
51
|
+
'Guardfile',
|
52
|
+
'.rspec',
|
53
|
+
'CHANGELOG.md',
|
54
|
+
'.tool-versions',
|
55
|
+
'Rakefile',
|
56
|
+
'Gemfile.lock',
|
57
|
+
'.gitignore',
|
58
|
+
'package-lock.json',
|
59
|
+
'package.json',
|
60
|
+
'.rubocop.yml',
|
61
|
+
'LICENSE.txt',
|
62
|
+
'fli_video.gemspec',
|
63
|
+
'01-get-structure.rb'
|
64
|
+
]
|
65
|
+
include_content_for = [
|
66
|
+
{ pattern: '*.rb' },
|
67
|
+
]
|
68
|
+
|
69
|
+
structure = scan_directory('.', ignore_folders, ignore_files, include_content_for)
|
70
|
+
write_structure_to_file('docs/generated/application-structure.json', structure)
|
71
|
+
gpt_content = build_gpt_content(structure)
|
72
|
+
copy_to_clipboard(gpt_content)
|
73
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fli_video
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: k_log
|
@@ -34,6 +34,31 @@ files:
|
|
34
34
|
- ".builders/_.rb"
|
35
35
|
- ".builders/boot.rb"
|
36
36
|
- ".builders/generators/01-bootstrap.rb"
|
37
|
+
- ".builders/generators/back/scripts/01-get-technical-design-and-feature-list.rb"
|
38
|
+
- ".builders/generators/back/scripts/02-get-feature-list-and-components.rb"
|
39
|
+
- ".builders/generators/back/scripts/03-get-structure.rb"
|
40
|
+
- ".builders/generators/back/scripts/generated/application-structure.json"
|
41
|
+
- ".builders/generators/back/scripts/generated/features-and-components.md"
|
42
|
+
- ".builders/generators/back/scripts/generated/technical-design-and-features.md"
|
43
|
+
- ".builders/klues/add_episode.klue"
|
44
|
+
- ".builders/klues/change_chapter_name.klue"
|
45
|
+
- ".builders/klues/create_chapter_video.klue"
|
46
|
+
- ".builders/klues/create_project.klue"
|
47
|
+
- ".builders/klues/empty_trash.klue"
|
48
|
+
- ".builders/klues/episode_path.klue"
|
49
|
+
- ".builders/klues/global_config.klue"
|
50
|
+
- ".builders/klues/move_ecamm_file.klue"
|
51
|
+
- ".builders/klues/move_to_trash.klue"
|
52
|
+
- ".builders/klues/open_in_finder.klue"
|
53
|
+
- ".builders/klues/project_config.klue"
|
54
|
+
- ".builders/klues/project_meta_data_store.klue"
|
55
|
+
- ".builders/klues/project_path.klue"
|
56
|
+
- ".builders/klues/recording_file_watcher.klue"
|
57
|
+
- ".builders/klues/recording_filename.klue"
|
58
|
+
- ".builders/klues/restore_from_trash.klue"
|
59
|
+
- ".builders/klues/switch_focus.klue"
|
60
|
+
- ".builders/klues/text_to_speech.klue"
|
61
|
+
- ".builders/klues/transcript_data_store.klue"
|
37
62
|
- ".releaserc.json"
|
38
63
|
- ".rspec"
|
39
64
|
- ".rubocop.yml"
|
@@ -43,15 +68,28 @@ files:
|
|
43
68
|
- Gemfile
|
44
69
|
- Guardfile
|
45
70
|
- LICENSE.txt
|
46
|
-
- README-features.md
|
47
71
|
- README.md
|
48
72
|
- Rakefile
|
49
73
|
- bin/console
|
74
|
+
- bin/fli_video
|
50
75
|
- bin/setup
|
76
|
+
- docs/feature-list.md
|
77
|
+
- docs/generated/application-structure.json
|
78
|
+
- docs/generated/features-and-components.md
|
79
|
+
- docs/generated/technical-design-and-features.md
|
80
|
+
- docs/technical-specifications.md
|
81
|
+
- fli.rb
|
51
82
|
- lib/fli_video.rb
|
83
|
+
- lib/fli_video/cli.rb
|
52
84
|
- lib/fli_video/version.rb
|
53
85
|
- package-lock.json
|
54
86
|
- package.json
|
87
|
+
- scripts/01-get-technical-design-and-feature-list.md
|
88
|
+
- scripts/01-get-technical-design-and-feature-list.rb
|
89
|
+
- scripts/02-get-feature-list-and-components.md
|
90
|
+
- scripts/02-get-feature-list-and-components.rb
|
91
|
+
- scripts/03-get-code-structure.md
|
92
|
+
- scripts/03-get-code-structure.rb
|
55
93
|
- sig/fli_video.rbs
|
56
94
|
homepage: http://appydave.com/gems/fli_video
|
57
95
|
licenses:
|
data/README-features.md
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
Read Global Configuration
|
2
|
-
Access and apply global configuration settings for video asset management and state consistency.
|
3
|
-
Project or Project/Episode Management
|
4
|
-
Efficiently handle one video project or episode at a time, ensuring focused and organized workflow.
|
5
|
-
Quick Create New Project
|
6
|
-
Rapidly initiate new video project or episode, enabling quick development and setup with minimal steps.
|
7
|
-
Change Project/Episode Focus
|
8
|
-
Easily switch between different video projects or episodes to accommodate changing content priorities.
|
9
|
-
Read Project Configuration
|
10
|
-
Maintain and retrieve project-specific settings and configurations to resume video projects seamlessly.
|
11
|
-
Calculate Location/Filename for Video Recordings
|
12
|
-
Automatically determine and organize storage locations and filenames for video recordings, enhancing asset management.
|
13
|
-
Move eCamm File to Project Recordings Folder
|
14
|
-
Seamlessly transfer eCamm recordings into appropriate project or episode folders for streamlined project continuity.
|
15
|
-
Trash
|
16
|
-
Moves suboptimal video takes to a designated 'trash' or 'archive' folder, optimizing storage and maintaining project clarity by segregating lesser-quality content.
|
17
|
-
Trash Undo
|
18
|
-
Retrieves video takes from the 'trash' or 'archive' folder and moves them back into the target project folder, allowing for reconsideration or re-evaluation of previously discarded content.
|
19
|
-
Finder Integration
|
20
|
-
Quickly access video project and episode folders within the Finder, streamlining file navigation.
|
21
|
-
FileWatch Processor for File Event Commands
|
22
|
-
Utilize a FileWatch processor to automate file event responses, directing new recordings to designated folders for efficient content management.
|
23
|
-
Generate Chapter Video
|
24
|
-
Compile and review video chapter segments independently, facilitating content evaluation and editing.
|
25
|
-
Text to Speech
|
26
|
-
Transcribe spoken content to text, integrating transcriptions into subsequent workflow stages.
|
27
|
-
Meta Data Generator
|
28
|
-
Extract and utilize metadata from video transcriptions and file tags for automated post-production processes like keyword generation, B-roll organization, chapter transitions, and time code marking for calls to action.
|
29
|
-
Report
|
30
|
-
Generate a detailed report for a specific video project or episode, including the number of files, chapters, a list of recording IDs (chapter sequence + part number), and the name for the next video recording.
|
31
|
-
Change Tags
|
32
|
-
Modify tags or keywords associated with a specific recording ID, allowing for dynamic categorization and organization of video content.
|
33
|
-
Change Chapter Name
|
34
|
-
Alter the name of a chapter based on its sequence in the project, facilitating better organization and identification of video content.
|
35
|
-
Change Chapter Sequence
|
36
|
-
Adjust the chapter sequence for all files within a chapter, for example, changing from 02 to 03, ensuring consistent and accurate organization of video content.
|