contentful_bootstrap 0.0.3

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f9506edbc16f70f64a055a68070cc45ab223f659
4
+ data.tar.gz: c6264e50faf9279fd7ab8f6b711ef28078429db8
5
+ SHA512:
6
+ metadata.gz: 1f6699a6d573ef6861d375532da40236d2fcc64476108482a27b53a3621788fee0c0b1af917255f8801fb2d133d7c90e550f05caa52b1b5ed1651d6927ee5aec
7
+ data.tar.gz: b28410bf29c7bf06b8b593f236736431e40d50c2d772dc374ac205affd780aac60326b0a5326c9f31b5b4f1a0290e272c46f35f4e492d6bf02ecce379c199697
data/.gitignore ADDED
@@ -0,0 +1,37 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /vendor/bundle
26
+ /lib/bundler/man/
27
+
28
+ # for a library or gem, you might want to ignore these files since the code is
29
+ # intended to run in multiple environments; otherwise, check them in:
30
+ # Gemfile.lock
31
+ # .ruby-version
32
+ # .ruby-gemset
33
+
34
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
+ .rvmrc
36
+
37
+ .contentful_bootstrap
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,43 @@
1
+ # Contributing
2
+ In the spirit of [free software][free-sw], **everyone** is encouraged to help
3
+ improve this project.
4
+
5
+ [free-sw]: http://www.fsf.org/licensing/essays/free-sw.html
6
+
7
+ Here are some ways *you* can contribute:
8
+
9
+ * by using alpha, beta, and prerelease versions
10
+ * by reporting bugs
11
+ * by suggesting new features
12
+ * by writing or editing documentation
13
+ * by writing specifications
14
+ * by writing code ( **no patch is too small** : fix typos, add comments, clean up inconsistent whitespace )
15
+ * by refactoring code
16
+ * by closing [issues][]
17
+ * by reviewing patches
18
+
19
+ [issues]: https://github.com/contentful-labs/contentful_bootstrap.rb/issues
20
+
21
+ ## Submitting an Issue
22
+ We use the [GitHub issue tracker][issues] to track bugs and features. Before
23
+ submitting a bug report or feature request, check to make sure it hasn't
24
+ already been submitted. When submitting a bug report, please include a [Gist][]
25
+ that includes a stack trace and any details that may be necessary to reproduce
26
+ the bug, including your gem version, Ruby version, and operating system.
27
+ Ideally, a bug report should include a pull request with failing specs.
28
+
29
+ [gist]: https://gist.github.com/
30
+
31
+ ## Submitting a Pull Request
32
+ 1. [Fork the repository.][fork]
33
+ 2. [Create a topic branch.][branch]
34
+ 3. Add specs for your unimplemented feature or bug fix.
35
+ 4. Run `bundle exec rake test`. If your specs pass, return to step 3.
36
+ 5. Implement your feature or bug fix.
37
+ 6. Run `bundle exec rake test`. If your specs fail, return to step 5.
38
+ 7. Add, commit, and push your changes.
39
+ 8. [Submit a pull request.][pr]
40
+
41
+ [fork]: http://help.github.com/fork-a-repo/
42
+ [branch]: http://learn.github.com/p/branching.html
43
+ [pr]: http://help.github.com/send-pull-requests/
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ # A sample Gemfile
2
+ source "https://rubygems.org"
3
+
4
+ gem "sinatra"
5
+ gem "launchy"
6
+ gem "contentful-management"
7
+ gem "deklarativna"
data/Gemfile.lock ADDED
@@ -0,0 +1,59 @@
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
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
data/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # Contentful Bootstrap
2
+
3
+ A small CLI tool for getting started with Contentful
4
+
5
+ ## Contentful
6
+ [Contentful](http://www.contentful.com) is a content management platform for web applications,
7
+ mobile apps and connected devices. It allows you to create, edit &nbsp;manage content in the cloud
8
+ and publish it anywhere via powerful API. Contentful offers tools for managing editorial
9
+ teams and enabling cooperation between organizations.
10
+
11
+ ## How to Use
12
+
13
+ ### Installation
14
+
15
+ ```bash
16
+ $ gem install contentful_bootstrap
17
+ ```
18
+
19
+ ### First Usage
20
+
21
+ ```bash
22
+ $ contentful_bootstrap init <space_name> [--template template_name]
23
+ ```
24
+
25
+ Then you can create other spaces by doing:
26
+
27
+ ```bash
28
+ $ contentful_bootstrap create_space <space_name> [--template template_name]
29
+ ```
30
+
31
+ This will get you started with Contentful by setting up a Space with some Demo Data to get you
32
+ started as soon as possible with development using our API.
33
+
34
+ ## Contributing
35
+
36
+ Feel free to improve this tool by submitting a Pull Request. For more information,
37
+ please check [CONTRIBUTING.md](./CONTRIBUTING.md)
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require 'contentful_bootstrap/commands'
5
+
6
+ options = {}
7
+ global = OptionParser.new do |opts|
8
+ opts.banner = "Usage: contentful_bootstrap <command> <space_name> [--template TEMPLATE_NAME]"
9
+ opts.separator ""
10
+ opts.separator <<-HELP
11
+ Available commands are:
12
+ init
13
+ create_space
14
+ HELP
15
+ end
16
+
17
+ subcommands = {
18
+ 'init' => OptionParser.new do |opts|
19
+ opts.banner = "Usage: init <space_name> [--template TEMPLATE_NAME]"
20
+ opts.on("-t", "--template TEMPLATE", "Specify Template", "blog, catalogue, gallery") do |t|
21
+ options[:template] = t
22
+ end
23
+ end,
24
+ 'create_space' => OptionParser.new do |opts|
25
+ opts.banner = "Usage: init <space_name> [--template TEMPLATE_NAME]"
26
+ opts.on("-t", "--template TEMPLATE", "Specify Template", "blog, catalogue, gallery") do |t|
27
+ options[:template] = t
28
+ end
29
+ end
30
+ }
31
+
32
+ global.order!
33
+ command = ARGV.shift
34
+ space_name = ARGV.shift
35
+
36
+ if subcommands.has_key? command
37
+ subcommands[command].order!
38
+
39
+ if space_name.nil? || space_name.empty?
40
+ puts "Usage: contentful_bootstrap <command> <space_name> [--template TEMPLATE_NAME]"
41
+ puts
42
+ puts "You must provide a valid space name. Exiting!"
43
+ exit
44
+ end
45
+
46
+ ContentfulBootstrap::Commands.new.send(command, space_name, options.fetch(:template, nil))
47
+ else
48
+ puts "Usage: contentful_bootstrap <command> <space_name> [--template TEMPLATE_NAME]"
49
+ puts
50
+ puts <<-HELP
51
+ Subcommand not available or missing
52
+ Available commands are:
53
+ init
54
+ create_space
55
+ HELP
56
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'contentful_bootstrap/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "contentful_bootstrap"
8
+ spec.version = ContentfulBootstrap::VERSION
9
+ spec.authors = ["David Litvak Bruno"]
10
+ spec.email = ["david.litvakb@gmail.com"]
11
+ spec.summary = %q{Contentful CLI tool for getting started with Contentful}
12
+ spec.homepage = "https://www.contentful.com"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.6"
21
+ spec.add_development_dependency "rake"
22
+ spec.add_runtime_dependency "sinatra"
23
+ spec.add_runtime_dependency "launchy"
24
+ spec.add_runtime_dependency "contentful-management"
25
+ spec.add_runtime_dependency "deklarativna"
26
+ end
@@ -0,0 +1,2 @@
1
+ require "contentful_bootstrap/version"
2
+ require "contentful_bootstrap/server"
@@ -0,0 +1,75 @@
1
+ require "thread"
2
+ require "net/http"
3
+ require "contentful/management"
4
+ require "contentful_bootstrap/token"
5
+ require "contentful_bootstrap/server"
6
+ require "contentful_bootstrap/support"
7
+ require "contentful_bootstrap/templates"
8
+
9
+ module ContentfulBootstrap
10
+ class Commands
11
+ include Support
12
+
13
+ def init(space_name, template_name = nil)
14
+ if !Token.present?
15
+ puts "A new tab on your browser will open for requesting OAuth permissions"
16
+ get_token
17
+ puts "OAuth permissions successfully saved, your OAuth token is present in '.contentful_token'"
18
+ else
19
+ puts "OAuth token found, moving on!"
20
+ end
21
+
22
+ create_space(space_name, template_name)
23
+ end
24
+
25
+ def create_space(space_name, template_name = nil)
26
+ management_client_init
27
+
28
+ puts "Creating Space '#{space_name}'"
29
+ space = Contentful::Management::Space.create(name: space_name)
30
+ puts "Space '#{space_name}' created!"
31
+
32
+ return if template_name.nil?
33
+
34
+ if templates.has_key? template_name.to_sym
35
+ puts "Creating Template '#{template_name}'"
36
+
37
+ templates[template_name.to_sym].new(space).run
38
+ puts "Template '#{template_name}' created!"
39
+ else
40
+ puts "Template '#{template_name}' not found. Valid templates are '#{templates.keys.map(&:to_s).join('\', \'')}'"
41
+ end
42
+ end
43
+
44
+ private
45
+ def management_client_init
46
+ Contentful::Management::Client.new(Token.read, raise_errors: true)
47
+ end
48
+
49
+ def get_token
50
+ silence_stderr do # Don't show any Sinatra related stuff
51
+ t = Thread.new { Server.run! }
52
+
53
+ while !Server.running? # Wait for Server Init
54
+ sleep(1)
55
+ end
56
+
57
+ Net::HTTP.get(URI('http://localhost:5123'))
58
+
59
+ while !Token.present? # Wait for User to do OAuth cycle
60
+ sleep(1)
61
+ end
62
+
63
+ Server.quit!
64
+ end
65
+ end
66
+
67
+ def templates
68
+ {
69
+ blog: Templates::Blog,
70
+ gallery: Templates::Gallery,
71
+ catalogue: Templates::Catalogue
72
+ }
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,6 @@
1
+ module ContentfulBootstrap
2
+ module Constants
3
+ OAUTH_APP_ID = "a19770bea126e6d596d8599ff42e14173409e3e252895b78d0cb289c10586276".freeze
4
+ OAUTH_CALLBACK_URL = "http://localhost:5123/oauth_callback".freeze
5
+ end
6
+ end
@@ -0,0 +1,63 @@
1
+ require "sinatra"
2
+ require "launchy"
3
+ require "deklarativna"
4
+ require "thin"
5
+ require "contentful_bootstrap/constants"
6
+ require "contentful_bootstrap/token"
7
+
8
+ 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
+ }
19
+ end
20
+ end
21
+
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
+ }
35
+ end
36
+ end
37
+
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
47
+ client_id = ContentfulBootstrap::Constants::OAUTH_APP_ID
48
+ redirect_uri = ContentfulBootstrap::Constants::OAUTH_CALLBACK_URL
49
+ scope = "content_management_manage"
50
+ Launchy.open("https://be.contentful.com/oauth/authorize?response_type=token&client_id=#{client_id}&redirect_uri=#{redirect_uri}&scope=#{scope}")
51
+ ""
52
+ end
53
+
54
+ get '/oauth_callback' do
55
+ OAuthEchoView.new.render
56
+ end
57
+
58
+ get '/save_token/:token' do
59
+ Token.write(params[:token])
60
+ ThanksView.new.render
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,12 @@
1
+ require "stringio"
2
+
3
+ module ContentfulBootstrap
4
+ module Support
5
+ def silence_stderr
6
+ old_stderr, $stderr = $stderr, StringIO.new
7
+ yield
8
+ ensure
9
+ $stderr = old_stderr
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ require "contentful_bootstrap/templates/blog"
2
+ require "contentful_bootstrap/templates/catalogue"
3
+ require "contentful_bootstrap/templates/gallery"
@@ -0,0 +1,56 @@
1
+ require "contentful/management"
2
+
3
+ module ContentfulBootstrap
4
+ module Templates
5
+ class Base
6
+ attr_reader :space
7
+
8
+ def initialize(space)
9
+ @space = space
10
+ end
11
+
12
+ def run
13
+ content_types.each do |ct|
14
+ puts "Creating Content Type '#{ct[:name]}'"
15
+
16
+ fields = []
17
+ content_type = space.content_types.new
18
+ content_type.id = ct[:id]
19
+ content_type.name = ct[:name]
20
+ content_type.display_field = ct[:display_field]
21
+
22
+ ct[:fields].each do |f|
23
+ field = Contentful::Management::Field.new
24
+ field.id = f[:id]
25
+ field.name = f[:name]
26
+ field.type = f[:type]
27
+ field.link_type = f[:link_type] if f.has_key?(:link_type)
28
+ fields << field
29
+ end
30
+
31
+ content_type.fields = fields
32
+ content_type.save
33
+ content_type.activate
34
+ end
35
+
36
+ entries.each do |content_type_id, entry_list|
37
+ content_type = space.content_types.find(content_type_id)
38
+ entry_list.each_with_index do |e, index|
39
+ puts "Creating Entry #{index} for #{content_type_id.capitalize}"
40
+ entry = content_type.entries.create(e)
41
+ entry.save
42
+ entry.publish
43
+ end
44
+ end
45
+ end
46
+
47
+ def content_types
48
+ raise "must implement"
49
+ end
50
+
51
+ def entries
52
+ raise "must implement"
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,75 @@
1
+ require "contentful_bootstrap/templates/base"
2
+ require "contentful_bootstrap/templates/entry_link"
3
+
4
+ module ContentfulBootstrap
5
+ module Templates
6
+ class Blog < Base
7
+ def content_types
8
+ [
9
+ {
10
+ id: 'author',
11
+ name: 'Author',
12
+ display_field: 'name',
13
+ fields: [
14
+ {
15
+ id: 'name',
16
+ name: "Author Name",
17
+ type: "Symbol"
18
+ }
19
+ ]
20
+ },
21
+ {
22
+ id: 'post',
23
+ name: 'Post',
24
+ display_field: 'title',
25
+ fields: [
26
+ {
27
+ id: 'title',
28
+ name: "Post Title",
29
+ type: "Symbol"
30
+ },
31
+ {
32
+ id: 'content',
33
+ name: "Content",
34
+ type: "Text"
35
+ },
36
+ {
37
+ id: 'author',
38
+ name: "Author",
39
+ type: "Link",
40
+ link_type: "Entry"
41
+ }
42
+ ]
43
+ }
44
+ ]
45
+ end
46
+
47
+ def entries
48
+ {
49
+ 'author' => [
50
+ {
51
+ id: "dan_brown",
52
+ name: "Dan Brown"
53
+ },
54
+ {
55
+ id: "pablo_neruda",
56
+ name: "Pablo Neruda"
57
+ }
58
+ ],
59
+ 'post' => [
60
+ {
61
+ title: "Inferno",
62
+ content: "Inferno is the last book in Dan Brown's collection...",
63
+ author: EntryLink.new("dan_brown")
64
+ },
65
+ {
66
+ title: "Alturas de Macchu Picchu",
67
+ content: "Alturas de Macchu Picchu is one of Pablo Neruda's most famous poetry books...",
68
+ author: EntryLink.new("pablo_neruda")
69
+ }
70
+ ]
71
+ }
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,8 @@
1
+ require "contentful_bootstrap/templates/base"
2
+
3
+ module ContentfulBootstrap
4
+ module Templates
5
+ class Catalogue < Base
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,10 @@
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
@@ -0,0 +1,9 @@
1
+ require "contentful_bootstrap/templates/base"
2
+
3
+ module ContentfulBootstrap
4
+ module Templates
5
+ class Gallery < Base
6
+ end
7
+ end
8
+ end
9
+
@@ -0,0 +1,23 @@
1
+ module ContentfulBootstrap
2
+ class Token
3
+ def self.present?
4
+ File.exist?(filename)
5
+ end
6
+
7
+ def self.read
8
+ File.open(filename, "r") { |f|
9
+ f.readlines[0]
10
+ }
11
+ end
12
+
13
+ def self.write(token)
14
+ File.open(filename, "w") { |f|
15
+ f.write(token)
16
+ }
17
+ end
18
+
19
+ def self.filename
20
+ File.join(Dir.pwd, ".contentful_token")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ module ContentfulBootstrap
2
+ VERSION = "0.0.3"
3
+ end
metadata ADDED
@@ -0,0 +1,152 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: contentful_bootstrap
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - David Litvak Bruno
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
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
+ - !ruby/object:Gem::Dependency
56
+ name: launchy
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: contentful-management
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ 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
+ description:
98
+ email:
99
+ - david.litvakb@gmail.com
100
+ executables:
101
+ - contentful_bootstrap
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - CONTRIBUTING.md
107
+ - Gemfile
108
+ - Gemfile.lock
109
+ - LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - bin/contentful_bootstrap
113
+ - contentful_bootstrap.gemspec
114
+ - lib/contentful_bootstrap.rb
115
+ - lib/contentful_bootstrap/commands.rb
116
+ - lib/contentful_bootstrap/constants.rb
117
+ - lib/contentful_bootstrap/server.rb
118
+ - lib/contentful_bootstrap/support.rb
119
+ - lib/contentful_bootstrap/templates.rb
120
+ - lib/contentful_bootstrap/templates/base.rb
121
+ - lib/contentful_bootstrap/templates/blog.rb
122
+ - lib/contentful_bootstrap/templates/catalogue.rb
123
+ - lib/contentful_bootstrap/templates/entry_link.rb
124
+ - lib/contentful_bootstrap/templates/gallery.rb
125
+ - lib/contentful_bootstrap/token.rb
126
+ - lib/contentful_bootstrap/version.rb
127
+ homepage: https://www.contentful.com
128
+ licenses:
129
+ - MIT
130
+ metadata: {}
131
+ post_install_message:
132
+ rdoc_options: []
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ requirements: []
146
+ rubyforge_project:
147
+ rubygems_version: 2.2.2
148
+ signing_key:
149
+ specification_version: 4
150
+ summary: Contentful CLI tool for getting started with Contentful
151
+ test_files: []
152
+ has_rdoc: