bridgetown_directus 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4b424ba8e007c294fa25eb29fbdd0276ab170d6161868fb5e8ece5dfec640a3a
4
+ data.tar.gz: ee0e007bc2cf19b6bf727409744b21b4ae51037381d448003ef544f3bf051958
5
+ SHA512:
6
+ metadata.gz: 444040c145212360d3f8055cec064dc062f56bb012c35264ad265e9db26257010f5b5ca6dab2591c6ac1a2969a7863a536f25e885bff598130a75470ea4111ed
7
+ data.tar.gz: 935a429e2b629b8d3b55a2df4cae44cd7fd753539b65c62a0de3d395a5f0bdb3e571296e2e9cd0651f4f9a69fc8e3769be8a42c9c91f9cdf29a39ef26d7e6dbf
data/.gitignore ADDED
@@ -0,0 +1,40 @@
1
+ /vendor
2
+ /.bundle/
3
+ /.yardoc
4
+ /Gemfile.lock
5
+ /_yardoc/
6
+ /coverage/
7
+ /doc/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
11
+ *.bundle
12
+ *.so
13
+ *.o
14
+ *.a
15
+ mkmf.log
16
+ *.gem
17
+ Gemfile.lock
18
+ .bundle
19
+ .ruby-version
20
+
21
+ # Node
22
+ node_modules
23
+ .npm
24
+ .node_repl_history
25
+
26
+ # Yarn
27
+ yarn-error.log
28
+ yarn-debug.log*
29
+ .pnp/
30
+ .pnp.js
31
+
32
+ # Yarn Integrity file
33
+ .yarn-integrity
34
+
35
+ test/dest
36
+ .bridgetown-metadata
37
+ .bridgetown-cache
38
+ .bridgetown-webpack
39
+
40
+ .env
data/.rubocop.yml ADDED
@@ -0,0 +1,23 @@
1
+ require: rubocop-bridgetown
2
+
3
+ inherit_gem:
4
+ rubocop-bridgetown: .rubocop.yml
5
+
6
+ AllCops:
7
+ TargetRubyVersion: 2.7
8
+
9
+ Exclude:
10
+ - .gitignore
11
+ - .rubocop.yml
12
+ - "*.gemspec"
13
+
14
+ - Gemfile.lock
15
+ - CHANGELOG.md
16
+ - LICENSE.txt
17
+ - README.md
18
+ - Rakefile
19
+ - bridgetown.automation.rb
20
+
21
+ - script/**/*
22
+ - test/fixtures/**/*
23
+ - vendor/**/*
data/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ - ...
11
+
12
+ ## [0.1.0] - 2024-09-27
13
+
14
+ - First version
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+ gemspec
5
+
6
+ gem "bridgetown", ENV["BRIDGETOWN_VERSION"] if ENV["BRIDGETOWN_VERSION"]
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020-present
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,113 @@
1
+ # Bridgetown Directus Plugin
2
+
3
+ This Bridgetown plugin integrates with the [Directus](https://directus.io/) which is among other things a [headless CMS](https://en.wikipedia.org/wiki/Headless_content_management_system). The plugin allows Bridgetown to pull content from a Directus API during the build process and generate static content in your site. It currently supports fetching published posts, with future plans for more flexibility and features.
4
+
5
+ ## Features
6
+
7
+ - Fetch **published posts** from Directus during the build process
8
+ - Simple setup and configuration
9
+
10
+ ## Installation
11
+
12
+ Before installing the plugin make sure you have an [Auth Token](https://docs.directus.io/reference/authentication.html#access-tokens) in your Directus instance.
13
+
14
+ ### Recommended Installation (Bridgetown Automation)
15
+
16
+ 1. Run the plugin's automation setup:
17
+ ```bash
18
+ bin/bridgetown apply https://github.com/munkun-estudio/bridgetown_directus
19
+ ```
20
+ 2. The setup will guide you to provide the Directus API URL and Auth Token, and configure the plugin automatically.
21
+
22
+ ### Manual Installation
23
+
24
+ 1. Add the gem to your Gemfile:
25
+ ```ruby
26
+ bundle add "bridgetown_directus"
27
+ ```
28
+ 2. Run bundle install to install the gem.
29
+ 3. Add the plugin configuration to your config/initializers.rb file:
30
+ ```ruby
31
+ init :bridgetown_directus do
32
+ api_url "https://your-directus-instance.com"
33
+ token ENV['DIRECTUS_AUTH_TOKEN'] || "your_token"
34
+ end
35
+ ```
36
+
37
+ ## Configuration
38
+
39
+ To configure the plugin:
40
+
41
+ 1. You can either use environment variables for the API URL and token:
42
+ ```bash
43
+ export DIRECTUS_API_URL="https://your-directus-instance.com"
44
+ export DIRECTUS_AUTH_TOKEN="your-token"
45
+ ```
46
+
47
+ 2. Or hard-code the values directly in your initializer:
48
+ ```ruby
49
+ init :bridgetown_directus do
50
+ api_url "https://your-directus-instance.com"
51
+ token "your_token"
52
+ end
53
+ ```
54
+ ## Usage
55
+
56
+ Once the plugin is installed and configured, it will fetch posts from your Directus instance during each build. These posts will be generated as in-memory resources, meaning they are not written to disk but are treated as normal posts by Bridgetown.
57
+
58
+ ### Directus Setup
59
+
60
+ To use the plugin, ensure that you've set up a **posts** collection in your Directus instance with the following fields:
61
+
62
+ - **title**: The title of the post (Text field)
63
+ - **date**: The publish date (Datetime field)
64
+ - **body**: The content of the post (Rich Text or Text field)
65
+ - **slug**: A unique slug for the post (Text field)
66
+ - **status**: The status of the post (Option field, with values like "published", "draft", "archived", etc.)
67
+
68
+ Make sure the **status** field uses `"published"` for posts that you want to be visible on your site.
69
+
70
+ #### Image Permissions
71
+
72
+ If your posts contain images, and you want to display them in your Bridgetown site, you'll need to ensure that the **directus_files** collection has the appropriate permissions for public access.
73
+
74
+ 1. **Public Role Configuration:**
75
+ - In Directus, navigate to **Settings** > **Roles & Permissions**.
76
+ - Select the **Public** role (or create a custom role if needed).
77
+ - Under the **Collections** tab, locate the **directus_files** collection.
78
+ - Set the **read** permission to **enabled** so that the images can be accessed publicly.
79
+
80
+ 2. **Image Uploads and Management:**
81
+ - When users upload images to posts, ensure that the images are associated with the **directus_files** collection.
82
+ - By default, Directus will store image URLs, which the plugin can reference directly. Ensure that the **image** field or URL is added to the **body** field (or wherever applicable).
83
+
84
+
85
+ ### Fetching Posts
86
+
87
+ Posts are fetched from Directus during each build and treated as Bridgetown resources. These resources are available in your site just like regular posts, and you can access them through your templates or layouts.
88
+
89
+ By default, only posts with a status of "published" are fetched from Directus.
90
+
91
+ ## TODO List
92
+
93
+ Here are features that are planned for future versions of the plugin:
94
+
95
+ - [ ] Support for Additional Content Types: Extend the plugin to handle other Directus collections and custom content types.
96
+ - [ ] Custom Field Mapping via DSL: Implement a DSL for more advanced field mapping.
97
+ - [ ] Asset Handling: Add functionality to download and manage images and other assets.
98
+ - [ ] Caching & Incremental Builds: Implement caching to improve build performance when fetching content.
99
+ - [ ] Draft Previews: Add support for previewing unpublished (draft) posts.
100
+
101
+ ## Testing
102
+
103
+ Testing isn’t fully set up yet, but contributions and improvements are welcome.
104
+
105
+ ## Contributing
106
+
107
+ We welcome contributions to this project! To contribute:
108
+
109
+ 1. Fork the repository
110
+ 2. Create a new branch (git checkout -b feature-branch)
111
+ 3. Make your changes
112
+ 4. Push to the branch (git push origin feature-branch)
113
+ 5. Open a Pull Request
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList["test/**/test_*.rb"]
8
+ t.warning = false
9
+ end
10
+
11
+ task :default => :test
@@ -0,0 +1,23 @@
1
+ say_status :directus, "Installing the bridgetown_directus plugin..."
2
+
3
+ # Prompt the user for Directus API URL and Auth Token
4
+ api_url = ask("What's your Directus instance URL?")
5
+ auth_token = ask("What's your Directus API auth token? (Leave blank to use ENV['DIRECTUS_AUTH_TOKEN'])")
6
+
7
+ # Add the bridgetown_directus gem
8
+ add_gem "bridgetown_directus"
9
+
10
+ # Append the API URL and Auth Token to the config/initializers.rb file
11
+ append_to_file "config/initializers.rb" do
12
+ <<~RUBY
13
+
14
+ init :bridgetown_directus do
15
+ api_url "#{api_url}"
16
+ token "#{auth_token.present? ? auth_token : "<%= ENV['DIRECTUS_AUTH_TOKEN'] %>"}"
17
+ end
18
+ RUBY
19
+ end
20
+
21
+ # Finish with a success message
22
+ say_status :directus, "All set! Directus integration is complete. Review your configuration in config/initializers.rb."
23
+ say_status :directus, "You can refer to the plugin documentation for more details on how to customize your Directus integration."
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/bridgetown_directus/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "bridgetown_directus"
7
+ spec.version = BridgetownDirectus::VERSION
8
+ spec.author = "Munkun"
9
+ spec.email = "development@munkun.com"
10
+ spec.summary = "Use Directus as headless CMS for Bridgetown"
11
+ spec.homepage = "https://github.com/munkun-estudio/bridgetown_directus"
12
+ spec.license = "MIT"
13
+
14
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r!^(test|script|spec|features|frontend)/!) }
15
+ spec.test_files = spec.files.grep(%r!^test/!)
16
+ spec.require_paths = ["lib"]
17
+
18
+ spec.required_ruby_version = ">= 2.7.0"
19
+
20
+ spec.add_dependency "bridgetown", ">= 1.2.0", "< 2.0"
21
+ spec.add_dependency "faraday", "~> 2.12"
22
+
23
+ spec.add_development_dependency "bundler", "~> 2.0"
24
+ spec.add_development_dependency "rake", "~> 13.0"
25
+ spec.add_development_dependency "rubocop-bridgetown", "~> 0.3"
26
+ spec.add_development_dependency "shoulda", "~> 3.0"
27
+ spec.add_development_dependency "minitest", "~> 5.0"
28
+ spec.add_development_dependency "minitest-profile", "~> 0.5"
29
+ spec.add_development_dependency "minitest-reporters", "~> 1.0"
30
+ spec.add_development_dependency "webmock", "~> 3.0"
31
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'json'
5
+
6
+ module BridgetownDirectus
7
+ class APIClient
8
+ def initialize(site)
9
+ @site = site
10
+ @api_url = site.config.bridgetown_directus.api_url
11
+ @api_token = site.config.bridgetown_directus.token
12
+
13
+ raise StandardError, "Invalid Directus configuration: missing API token or URL" if @api_token.nil? || @api_url.nil?
14
+ end
15
+
16
+ # Main method to fetch posts
17
+ def fetch_posts
18
+ Utils.log_directus "Request URL: #{@api_url}"
19
+ begin
20
+ response = connection.get("/items/posts") do |req|
21
+ req.params['filter'] = { status: { _eq: "published" } }.to_json
22
+ end
23
+
24
+ if response.success?
25
+ JSON.parse(response.body) # Return the parsed posts
26
+ elsif response.status == 401
27
+ raise RuntimeError, "Unauthorized access to Directus API"
28
+ else
29
+ raise "Error fetching posts: #{response.status} - #{response.body}"
30
+ end
31
+ rescue Faraday::TimeoutError
32
+ raise Faraday::TimeoutError, "The request to fetch posts timed out"
33
+ rescue JSON::ParserError
34
+ raise JSON::ParserError, "The response from Directus was not valid JSON"
35
+ end
36
+ end
37
+
38
+ # Setup Faraday connection with authorization headers
39
+ def connection
40
+ Faraday.new(url: @api_url) do |faraday|
41
+ faraday.options.timeout = 5 # seconds
42
+ faraday.options.open_timeout = 2 # seconds
43
+ faraday.headers['Authorization'] = "Bearer #{@api_token}"
44
+ faraday.headers['Content-Type'] = 'application/json'
45
+ faraday.adapter Faraday.default_adapter
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BridgetownDirectus
4
+ class Builder < Bridgetown::Builder
5
+ def build
6
+ return if site.ssr?
7
+
8
+ Utils.log_directus "Connecting to Directus API..."
9
+ posts_data = fetch_posts
10
+
11
+ Utils.log_directus "Fetched #{posts_data.size} posts from Directus."
12
+
13
+ create_documents(posts_data)
14
+ end
15
+
16
+ private
17
+
18
+ def fetch_posts
19
+ api_client = BridgetownDirectus::APIClient.new(site)
20
+ api_client.fetch_posts
21
+ end
22
+
23
+ def create_documents(posts_data)
24
+ posts_array = posts_data["data"]
25
+
26
+ posts_array.each_with_index do |post, index|
27
+ next unless post["status"] == "published"
28
+
29
+ slug = Bridgetown::Utils.slugify(post["slug"] || post["title"])
30
+ date = post["date"] || Time.now.iso8601
31
+
32
+ Utils.log_directus "Generating post #{post['title']}"
33
+
34
+ add_resource :posts, "#{slug}.md" do
35
+ title post["title"]
36
+ date date
37
+ content post["body"]
38
+ layout "post"
39
+ end
40
+ end
41
+
42
+ Utils.log_directus "Finished generating #{posts_array.size} posts."
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,9 @@
1
+ # lib/bridgetown_directus/utils.rb
2
+
3
+ module BridgetownDirectus
4
+ module Utils
5
+ def self.log_directus(message)
6
+ Bridgetown.logger.info("Directus") { message }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BridgetownDirectus
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bridgetown"
4
+ require_relative "bridgetown_directus/version"
5
+ require_relative "bridgetown_directus/utils"
6
+ require_relative "bridgetown_directus/api_client"
7
+ require_relative "bridgetown_directus/builder"
8
+
9
+ module BridgetownDirectus
10
+ # Bridgetown initializer for the plugin
11
+ Bridgetown.initializer :bridgetown_directus do |config, api_url:, token:|
12
+ config.bridgetown_directus ||= {}
13
+ config.bridgetown_directus.api_url ||= api_url || ENV.fetch("DIRECTUS_API_URL")
14
+ config.bridgetown_directus.token ||= token || ENV.fetch("DIRECTUS_API_TOKEN")
15
+
16
+ # Register the builder
17
+ config.builder BridgetownDirectus::Builder
18
+
19
+ # Validate Directus config before proceeding
20
+ unless config.bridgetown_directus.api_url && config.bridgetown_directus.token
21
+ Bridgetown.logger.error "Invalid Directus configuration detected. Please check your API URL and token."
22
+ raise "Directus configuration invalid"
23
+ end
24
+ end
25
+ end
data/package.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "bridgetown_directus",
3
+ "version": "0.1.0",
4
+ "main": "frontend/javascript/index.js",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/munkun-estudio/bridgetown_directus.git"
8
+ },
9
+ "author": "Munkun <development@munkun.com>",
10
+ "homepage": "https://www.munkun.com",
11
+ "license": "MIT",
12
+ "private": false,
13
+ "files": [
14
+ "frontend"
15
+ ]
16
+ }
metadata ADDED
@@ -0,0 +1,203 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bridgetown_directus
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Munkun
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-09-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bridgetown
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.2.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.2.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: faraday
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.12'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.12'
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rake
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '13.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '13.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubocop-bridgetown
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.3'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0.3'
89
+ - !ruby/object:Gem::Dependency
90
+ name: shoulda
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: minitest
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '5.0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '5.0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: minitest-profile
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.5'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.5'
131
+ - !ruby/object:Gem::Dependency
132
+ name: minitest-reporters
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: webmock
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '3.0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '3.0'
159
+ description:
160
+ email: development@munkun.com
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - ".gitignore"
166
+ - ".rubocop.yml"
167
+ - CHANGELOG.md
168
+ - Gemfile
169
+ - LICENSE.txt
170
+ - README.md
171
+ - Rakefile
172
+ - bridgetown.automation.rb
173
+ - bridgetown_directus.gemspec
174
+ - lib/bridgetown_directus.rb
175
+ - lib/bridgetown_directus/api_client.rb
176
+ - lib/bridgetown_directus/builder.rb
177
+ - lib/bridgetown_directus/utils.rb
178
+ - lib/bridgetown_directus/version.rb
179
+ - package.json
180
+ homepage: https://github.com/munkun-estudio/bridgetown_directus
181
+ licenses:
182
+ - MIT
183
+ metadata: {}
184
+ post_install_message:
185
+ rdoc_options: []
186
+ require_paths:
187
+ - lib
188
+ required_ruby_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: 2.7.0
193
+ required_rubygems_version: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ requirements: []
199
+ rubygems_version: 3.5.18
200
+ signing_key:
201
+ specification_version: 4
202
+ summary: Use Directus as headless CMS for Bridgetown
203
+ test_files: []