contentful_bootstrap 0.0.3 → 0.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f9506edbc16f70f64a055a68070cc45ab223f659
4
- data.tar.gz: c6264e50faf9279fd7ab8f6b711ef28078429db8
3
+ metadata.gz: 53b22cc778c5ea2cc284ae20b28fdeddeb23ab41
4
+ data.tar.gz: b2da6f2928e023c29e03832b534e210ecdb42cdc
5
5
  SHA512:
6
- metadata.gz: 1f6699a6d573ef6861d375532da40236d2fcc64476108482a27b53a3621788fee0c0b1af917255f8801fb2d133d7c90e550f05caa52b1b5ed1651d6927ee5aec
7
- data.tar.gz: b28410bf29c7bf06b8b593f236736431e40d50c2d772dc374ac205affd780aac60326b0a5326c9f31b5b4f1a0290e272c46f35f4e492d6bf02ecce379c199697
6
+ metadata.gz: 1d9632fac3308458ddce48349c96c193de969a0ae5a77cee06811db6119088100d9405051f8d9320cc3e49abd1746bba4ab7993d0bb5440141f9fe831d096820
7
+ data.tar.gz: 7e3f14690da03181e200651d4ebecf95cfd436a9c0580f722ff9b59909826e0b20f9c2726b46fe11975287434f53af22e7977e4f5440c7193c906f301c267112
data/.gitignore CHANGED
@@ -27,11 +27,11 @@ build/
27
27
 
28
28
  # for a library or gem, you might want to ignore these files since the code is
29
29
  # intended to run in multiple environments; otherwise, check them in:
30
- # Gemfile.lock
30
+ Gemfile.lock
31
31
  # .ruby-version
32
32
  # .ruby-gemset
33
33
 
34
34
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
35
  .rvmrc
36
36
 
37
- .contentful_bootstrap
37
+ .contentful_token
data/CHANGELOG.md ADDED
@@ -0,0 +1,24 @@
1
+ # Change Log
2
+ ## Unreleased
3
+
4
+ ## v0.0.4
5
+ ### Added
6
+ * Added support for users with multiple Organizations
7
+ * Added `gallery` template
8
+
9
+ ### Changed
10
+ * Removed `deklarativna` dependency
11
+ * Removed `sinatra` dependency
12
+ * Removed unnecessary `Gemfile.lock` file
13
+
14
+ ## v0.0.3
15
+ ### Added
16
+ * Added `contentful_bootstrap` command
17
+ * Added `blog` template
18
+
19
+ ### Fixed
20
+ * Fixed Dependencies
21
+
22
+ ## v0.0.2 [YANKED]
23
+
24
+ ## v0.0.1 [YANKED]
data/Gemfile CHANGED
@@ -1,7 +1,5 @@
1
1
  # A sample Gemfile
2
2
  source "https://rubygems.org"
3
3
 
4
- gem "sinatra"
5
4
  gem "launchy"
6
5
  gem "contentful-management"
7
- gem "deklarativna"
data/README.md CHANGED
@@ -8,6 +8,10 @@ mobile apps and connected devices. It allows you to create, edit &nbsp;manage co
8
8
  and publish it anywhere via powerful API. Contentful offers tools for managing editorial
9
9
  teams and enabling cooperation between organizations.
10
10
 
11
+ ## What does `contentful_bootstrap` do?
12
+ The aim of `contentful_bootstrap` is to have developers setting up their Contentful environment
13
+ in a single command
14
+
11
15
  ## How to Use
12
16
 
13
17
  ### Installation
@@ -28,6 +32,16 @@ Then you can create other spaces by doing:
28
32
  $ contentful_bootstrap create_space <space_name> [--template template_name]
29
33
  ```
30
34
 
35
+ ### Available templates
36
+
37
+ The available templates for your spaces are:
38
+
39
+ ```
40
+ blog
41
+ gallery
42
+ catalogue
43
+ ```
44
+
31
45
  This will get you started with Contentful by setting up a Space with some Demo Data to get you
32
46
  started as soon as possible with development using our API.
33
47
 
@@ -19,8 +19,6 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_development_dependency "bundler", "~> 1.6"
21
21
  spec.add_development_dependency "rake"
22
- spec.add_runtime_dependency "sinatra"
23
22
  spec.add_runtime_dependency "launchy"
24
23
  spec.add_runtime_dependency "contentful-management"
25
- spec.add_runtime_dependency "deklarativna"
26
24
  end
@@ -1,2 +1,5 @@
1
1
  require "contentful_bootstrap/version"
2
2
  require "contentful_bootstrap/server"
3
+ require "contentful_bootstrap/commands"
4
+ require "contentful_bootstrap/templates"
5
+ require "contentful_bootstrap/token"
@@ -1,4 +1,3 @@
1
- require "thread"
2
1
  require "net/http"
3
2
  require "contentful/management"
4
3
  require "contentful_bootstrap/token"
@@ -26,7 +25,15 @@ module ContentfulBootstrap
26
25
  management_client_init
27
26
 
28
27
  puts "Creating Space '#{space_name}'"
29
- space = Contentful::Management::Space.create(name: space_name)
28
+ space = nil
29
+ begin
30
+ space = Contentful::Management::Space.create(name: space_name)
31
+ rescue Contentful::Management::NotFound
32
+ puts "Your account has multiple organizations"
33
+ print "Please insert the Organization ID you'd want to create the spaces for: "
34
+ organization_id = gets.chomp
35
+ space = Contentful::Management::Space.create(name: space_name, organization_id: organization_id)
36
+ end
30
37
  puts "Space '#{space_name}' created!"
31
38
 
32
39
  return if template_name.nil?
@@ -48,9 +55,11 @@ module ContentfulBootstrap
48
55
 
49
56
  def get_token
50
57
  silence_stderr do # Don't show any Sinatra related stuff
51
- t = Thread.new { Server.run! }
58
+ server = Server.new
59
+
60
+ server.start
52
61
 
53
- while !Server.running? # Wait for Server Init
62
+ while !server.running? # Wait for Server Init
54
63
  sleep(1)
55
64
  end
56
65
 
@@ -60,7 +69,7 @@ module ContentfulBootstrap
60
69
  sleep(1)
61
70
  end
62
71
 
63
- Server.quit!
72
+ server.stop
64
73
  end
65
74
  end
66
75
 
@@ -1,63 +1,91 @@
1
- require "sinatra"
1
+ require "thread"
2
+ require "webrick"
2
3
  require "launchy"
3
- require "deklarativna"
4
- require "thin"
5
4
  require "contentful_bootstrap/constants"
6
5
  require "contentful_bootstrap/token"
7
6
 
8
7
  module ContentfulBootstrap
9
- class OAuthEchoView < BaseTemplate
10
- def _body
11
- script(type: "text/javascript") {
12
- <<-JS
13
- (function() {
14
- var access_token = window.location.hash.split('&')[0].split('=')[1];
15
- window.location.replace('http://localhost:5123/save_token/' + access_token);
16
- })();
17
- JS
18
- }
8
+ class OAuthEchoView
9
+ def render
10
+ <<-JS
11
+ <html><head></head><body>
12
+ <script type="text/javascript">
13
+ (function() {
14
+ var access_token = window.location.hash.split('&')[0].split('=')[1];
15
+ window.location.replace('http://localhost:5123/save_token?token=' + access_token);
16
+ })();
17
+ </script>
18
+ </body></html>
19
+ JS
19
20
  end
20
21
  end
21
22
 
22
- class ThanksView < BaseTemplate
23
- def _head
24
- link(rel: "stylesheet", href: "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css")
25
- end
26
-
27
- def _body
28
- div(class: "container") {
29
- div(class: "jumbotron") {[
30
- h1 { "Contentful Bootstrap" },
31
- h4 { "Thanks! The OAuth Token has been generated" },
32
- p { "The Space you specified will now start to create. You can close this window freely" }
33
- ]}
34
- }
23
+ class ThanksView
24
+ def render
25
+ <<-HTML
26
+ <html><head>
27
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
28
+ </head><body>
29
+ <div class="container">
30
+ <div class="jumbotron">
31
+ <h1>Contentful Bootstrap</h1>
32
+ <h4>Thanks! The OAuth Token has been generated</h4>
33
+ <p>The Space you specified will now start to create. You can close this window freely</p>
34
+ </div>
35
+ </div>
36
+ </body></html>
37
+ HTML
35
38
  end
36
39
  end
37
40
 
38
- class Server < Sinatra::Base
39
- configure do
40
- set :port, 5123
41
- set :logging, nil
42
- set :quiet, true
43
- Thin::Logging.silent = true # Silence Thin startup message
44
- end
45
-
46
- get '/' do
41
+ class IndexController < WEBrick::HTTPServlet::AbstractServlet
42
+ def do_GET(request, response)
47
43
  client_id = ContentfulBootstrap::Constants::OAUTH_APP_ID
48
44
  redirect_uri = ContentfulBootstrap::Constants::OAUTH_CALLBACK_URL
49
45
  scope = "content_management_manage"
50
46
  Launchy.open("https://be.contentful.com/oauth/authorize?response_type=token&client_id=#{client_id}&redirect_uri=#{redirect_uri}&scope=#{scope}")
51
- ""
47
+ response.status = 200
48
+ response.body = ""
49
+ end
50
+ end
51
+
52
+ class OAuthCallbackController < WEBrick::HTTPServlet::AbstractServlet
53
+ def do_GET(request, response)
54
+ #get '/oauth_callback' do
55
+ response.status = 200
56
+ response.content_type = "text/html"
57
+ response.body = OAuthEchoView.new.render
58
+ end
59
+ end
60
+
61
+ class SaveTokenController < WEBrick::HTTPServlet::AbstractServlet
62
+ def do_GET(request, response)
63
+ Token.write(request.query["token"])
64
+ response.status = 200
65
+ response.content_type = "text/html"
66
+ response.body = ThanksView.new.render
67
+ end
68
+ end
69
+
70
+ class Server
71
+ attr_reader :server
72
+ def initialize
73
+ @server = WEBrick::HTTPServer.new(:Port => 5123)
74
+ @server.mount "/", IndexController
75
+ @server.mount "/oauth_callback", OAuthCallbackController
76
+ @server.mount "/save_token", SaveTokenController
77
+ end
78
+
79
+ def start
80
+ Thread.new { @server.start }
52
81
  end
53
82
 
54
- get '/oauth_callback' do
55
- OAuthEchoView.new.render
83
+ def stop
84
+ @server.shutdown
56
85
  end
57
86
 
58
- get '/save_token/:token' do
59
- Token.write(params[:token])
60
- ThanksView.new.render
87
+ def running?
88
+ @server.status != :Stop
61
89
  end
62
90
  end
63
91
  end
@@ -10,6 +10,34 @@ module ContentfulBootstrap
10
10
  end
11
11
 
12
12
  def run
13
+ create_content_types
14
+ create_assets
15
+ create_entries
16
+ end
17
+
18
+ def content_types
19
+ []
20
+ end
21
+
22
+ def entries
23
+ {}
24
+ end
25
+
26
+ def assets
27
+ []
28
+ end
29
+
30
+ protected
31
+ def create_image(name, url)
32
+ image = Contentful::Management::File.new
33
+ image.properties[:contentType] = 'image/jpeg'
34
+ image.properties[:fileName] = "#{name}.jpg"
35
+ image.properties[:upload] = url
36
+ image
37
+ end
38
+
39
+ private
40
+ def create_content_types
13
41
  content_types.each do |ct|
14
42
  puts "Creating Content Type '#{ct[:name]}'"
15
43
 
@@ -24,7 +52,15 @@ module ContentfulBootstrap
24
52
  field.id = f[:id]
25
53
  field.name = f[:name]
26
54
  field.type = f[:type]
27
- field.link_type = f[:link_type] if f.has_key?(:link_type)
55
+ field.link_type = f[:link_type] if is_link?(f)
56
+
57
+ if is_array?(f)
58
+ array_field = Contentful::Management::Field.new
59
+ array_field.type = f[:items][:type]
60
+ array_field.link_type = f[:items][:link_type]
61
+ field.items = array_field
62
+ end
63
+
28
64
  fields << field
29
65
  end
30
66
 
@@ -32,25 +68,48 @@ module ContentfulBootstrap
32
68
  content_type.save
33
69
  content_type.activate
34
70
  end
71
+ end
35
72
 
73
+ def is_link?(field)
74
+ field.has_key?(:link_type)
75
+ end
76
+
77
+ def is_array?(field)
78
+ field.has_key?(:items)
79
+ end
80
+
81
+ def create_assets
82
+ assets.each do |asset|
83
+ puts "Creating Asset '#{asset[:title]}'"
84
+ asset = space.assets.create(asset)
85
+ asset.process_file
86
+ asset.publish
87
+ end
88
+ end
89
+
90
+ def create_entries
36
91
  entries.each do |content_type_id, entry_list|
37
92
  content_type = space.content_types.find(content_type_id)
38
93
  entry_list.each_with_index do |e, index|
39
94
  puts "Creating Entry #{index} for #{content_type_id.capitalize}"
95
+
96
+ array_fields = []
97
+ e.each_pair do |field_name, value|
98
+ array_fields << field_name if value.is_a? Array
99
+ end
100
+
101
+ array_fields.each do |af|
102
+ e[af].map! do |f|
103
+ space.send(f.kind).find(f.id)
104
+ end
105
+ end
106
+
40
107
  entry = content_type.entries.create(e)
41
108
  entry.save
42
109
  entry.publish
43
110
  end
44
111
  end
45
112
  end
46
-
47
- def content_types
48
- raise "must implement"
49
- end
50
-
51
- def entries
52
- raise "must implement"
53
- end
54
113
  end
55
114
  end
56
115
  end
@@ -1,5 +1,5 @@
1
1
  require "contentful_bootstrap/templates/base"
2
- require "contentful_bootstrap/templates/entry_link"
2
+ require "contentful_bootstrap/templates/links"
3
3
 
4
4
  module ContentfulBootstrap
5
5
  module Templates
@@ -60,12 +60,12 @@ module ContentfulBootstrap
60
60
  {
61
61
  title: "Inferno",
62
62
  content: "Inferno is the last book in Dan Brown's collection...",
63
- author: EntryLink.new("dan_brown")
63
+ author: Links::Entry.new("dan_brown")
64
64
  },
65
65
  {
66
66
  title: "Alturas de Macchu Picchu",
67
67
  content: "Alturas de Macchu Picchu is one of Pablo Neruda's most famous poetry books...",
68
- author: EntryLink.new("pablo_neruda")
68
+ author: Links::Entry.new("pablo_neruda")
69
69
  }
70
70
  ]
71
71
  }
@@ -1,8 +1,116 @@
1
1
  require "contentful_bootstrap/templates/base"
2
+ require "contentful_bootstrap/templates/links"
2
3
 
3
4
  module ContentfulBootstrap
4
5
  module Templates
5
6
  class Gallery < Base
7
+ def content_types
8
+ [
9
+ {
10
+ id: 'author',
11
+ name: "Author",
12
+ display_field: "name",
13
+ fields: [
14
+ {
15
+ name: "Name",
16
+ id: "name",
17
+ type: "Symbol"
18
+ }
19
+ ]
20
+ },
21
+ {
22
+ id: 'image',
23
+ name: 'Image',
24
+ display_field: 'title',
25
+ fields: [
26
+ {
27
+ id: 'title',
28
+ name: 'Title',
29
+ type: 'Symbol'
30
+ },
31
+ {
32
+ id: 'photo',
33
+ name: 'Photo',
34
+ type: 'Link',
35
+ link_type: 'Asset'
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ id: 'gallery',
41
+ name: 'Gallery',
42
+ display_field: 'title',
43
+ fields: [
44
+ {
45
+ id: 'title',
46
+ name: 'Title',
47
+ type: 'Symbol'
48
+ },
49
+ {
50
+ id: 'author',
51
+ name: 'Author',
52
+ type: 'Link',
53
+ link_type: 'Entry'
54
+ },
55
+ {
56
+ id: 'images',
57
+ name: 'Images',
58
+ type: 'Array',
59
+ items: {
60
+ type: 'Link',
61
+ link_type: 'Entry'
62
+ }
63
+ }
64
+ ]
65
+ }
66
+ ]
67
+ end
68
+
69
+ def assets
70
+ [
71
+ {
72
+ id: 'pie',
73
+ title: 'Pie in the Sky',
74
+ file: create_image('pie', 'https://c2.staticflickr.com/6/5245/5335909339_d307a7cbcf_b.jpg')
75
+ },
76
+ {
77
+ id: 'flower',
78
+ title: 'The Flower',
79
+ file: create_image('flower', 'http://c2.staticflickr.com/4/3922/15045568809_b24591e318_b.jpg')
80
+ }
81
+ ]
82
+ end
83
+
84
+ def entries
85
+ {
86
+ 'author' => [
87
+ {
88
+ id: 'dave',
89
+ name: 'Dave'
90
+ }
91
+ ],
92
+ 'image' => [
93
+ {
94
+ id: 'pie_entry',
95
+ title: 'A Pie in the Sky',
96
+ photo: Links::Asset.new('pie')
97
+ },
98
+ {
99
+ id: 'flower_entry',
100
+ title: 'The Flower',
101
+ photo: Links::Asset.new('flower')
102
+ }
103
+ ],
104
+ 'gallery' => [
105
+ {
106
+ id: 'gallery',
107
+ title: 'Photo Gallery',
108
+ author: Links::Entry.new('dave'),
109
+ images: [Links::Entry.new('pie_entry'), Links::Entry.new('flower_entry')]
110
+ }
111
+ ]
112
+ }
113
+ end
6
114
  end
7
115
  end
8
116
  end
@@ -0,0 +1,2 @@
1
+ require "contentful_bootstrap/templates/links/entry"
2
+ require "contentful_bootstrap/templates/links/asset"
@@ -0,0 +1,13 @@
1
+ require "contentful_bootstrap/templates/links/base"
2
+
3
+ module ContentfulBootstrap
4
+ module Templates
5
+ module Links
6
+ class Asset < Base
7
+ def kind
8
+ :assets
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ module ContentfulBootstrap
2
+ module Templates
3
+ module Links
4
+ class Base
5
+ attr_reader :id
6
+ def initialize(id)
7
+ @id = id
8
+ end
9
+
10
+ def kind
11
+ raise "must implement"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ require "contentful_bootstrap/templates/links/base"
2
+
3
+ module ContentfulBootstrap
4
+ module Templates
5
+ module Links
6
+ class Entry < Base
7
+ def kind
8
+ :entries
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module ContentfulBootstrap
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contentful_bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Litvak Bruno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-28 00:00:00.000000000 Z
11
+ date: 2015-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: sinatra
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: launchy
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +66,6 @@ dependencies:
80
66
  - - ">="
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: deklarativna
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
69
  description:
98
70
  email:
99
71
  - david.litvakb@gmail.com
@@ -103,9 +75,9 @@ extensions: []
103
75
  extra_rdoc_files: []
104
76
  files:
105
77
  - ".gitignore"
78
+ - CHANGELOG.md
106
79
  - CONTRIBUTING.md
107
80
  - Gemfile
108
- - Gemfile.lock
109
81
  - LICENSE
110
82
  - README.md
111
83
  - Rakefile
@@ -120,8 +92,11 @@ files:
120
92
  - lib/contentful_bootstrap/templates/base.rb
121
93
  - lib/contentful_bootstrap/templates/blog.rb
122
94
  - lib/contentful_bootstrap/templates/catalogue.rb
123
- - lib/contentful_bootstrap/templates/entry_link.rb
124
95
  - lib/contentful_bootstrap/templates/gallery.rb
96
+ - lib/contentful_bootstrap/templates/links.rb
97
+ - lib/contentful_bootstrap/templates/links/asset.rb
98
+ - lib/contentful_bootstrap/templates/links/base.rb
99
+ - lib/contentful_bootstrap/templates/links/entry.rb
125
100
  - lib/contentful_bootstrap/token.rb
126
101
  - lib/contentful_bootstrap/version.rb
127
102
  homepage: https://www.contentful.com
data/Gemfile.lock DELETED
@@ -1,59 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- addressable (2.3.8)
5
- coderay (1.1.0)
6
- contentful-management (0.7.2)
7
- http (~> 0.8)
8
- multi_json (~> 1)
9
- daemons (1.2.3)
10
- deklarativna (0.0.10)
11
- launchy
12
- sinatra
13
- thin
14
- domain_name (0.5.25)
15
- unf (>= 0.0.5, < 1.0.0)
16
- eventmachine (1.0.8)
17
- http (0.9.8)
18
- addressable (~> 2.3)
19
- http-cookie (~> 1.0)
20
- http-form_data (~> 1.0.1)
21
- http_parser.rb (~> 0.6.0)
22
- http-cookie (1.0.2)
23
- domain_name (~> 0.5)
24
- http-form_data (1.0.1)
25
- http_parser.rb (0.6.0)
26
- launchy (2.4.3)
27
- addressable (~> 2.3)
28
- method_source (0.8.2)
29
- multi_json (1.11.2)
30
- pry (0.10.3)
31
- coderay (~> 1.1.0)
32
- method_source (~> 0.8.1)
33
- slop (~> 3.4)
34
- rack (1.6.4)
35
- rack-protection (1.5.3)
36
- rack
37
- sinatra (1.4.6)
38
- rack (~> 1.4)
39
- rack-protection (~> 1.4)
40
- tilt (>= 1.3, < 3)
41
- slop (3.6.0)
42
- thin (1.6.4)
43
- daemons (~> 1.0, >= 1.0.9)
44
- eventmachine (~> 1.0, >= 1.0.4)
45
- rack (~> 1.0)
46
- tilt (2.0.1)
47
- unf (0.1.4)
48
- unf_ext
49
- unf_ext (0.0.7.1)
50
-
51
- PLATFORMS
52
- ruby
53
-
54
- DEPENDENCIES
55
- contentful-management
56
- deklarativna
57
- launchy
58
- pry
59
- sinatra
@@ -1,10 +0,0 @@
1
- module ContentfulBootstrap
2
- module Templates
3
- class EntryLink
4
- attr_reader :id
5
- def initialize(id)
6
- @id = id
7
- end
8
- end
9
- end
10
- end