eclix 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 259e884960bd89b4d471fc53bc212818796fcd7c
4
+ data.tar.gz: e5d805e610e2fb85f732087e9c09da077328de6e
5
+ SHA512:
6
+ metadata.gz: df5b138e8dc9fe0a12d33c91138980ebe950551a8130e75258490a1c86f80ae879a6d2dd77f87605f3b20e70293626992e999c65a1ce6f6a893ef63bfd6d084b
7
+ data.tar.gz: b70af3cf7805715f0f2d5eefbade1c9b3d143f0fb7fee5ef5d1f2963ac2a6d05f0bd67a5c8a3f8a28b49443d09bc4a777d551f85760bffa91db97311ef18b557
@@ -0,0 +1 @@
1
+ service_name: travis-ci
@@ -0,0 +1,121 @@
1
+ # Created by https://www.gitignore.io
2
+
3
+ ### Ruby ###
4
+ *.gem
5
+ *.rbc
6
+ /.config
7
+ /coverage/
8
+ /InstalledFiles
9
+ /pkg/
10
+ /spec/reports/
11
+ /test/tmp/
12
+ /test/version_tmp/
13
+ /tmp/
14
+ Gemfile.lock
15
+
16
+ ## Specific to RubyMotion:
17
+ .dat*
18
+ .repl_history
19
+ build/
20
+
21
+ ## Documentation cache and generated files:
22
+ /.yardoc/
23
+ /_yardoc/
24
+ /doc/
25
+ /rdoc/
26
+
27
+ ## Environment normalisation:
28
+ /.bundle/
29
+ /lib/bundler/man/
30
+
31
+ # for a library or gem, you might want to ignore these files since the code is
32
+ # intended to run in multiple environments; otherwise, check them in:
33
+ # Gemfile.lock
34
+ # .ruby-version
35
+ # .ruby-gemset
36
+
37
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
38
+ .rvmrc
39
+
40
+
41
+ ### Intellij ###
42
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm
43
+
44
+ *.iml
45
+
46
+ ## Directory-based project format:
47
+ .idea/
48
+ # if you remove the above rule, at least ignore the following:
49
+
50
+ # User-specific stuff:
51
+ # .idea/workspace.xml
52
+ # .idea/tasks.xml
53
+ # .idea/dictionaries
54
+
55
+ # Sensitive or high-churn files:
56
+ # .idea/dataSources.ids
57
+ # .idea/dataSources.xml
58
+ # .idea/sqlDataSources.xml
59
+ # .idea/dynamic.xml
60
+ # .idea/uiDesigner.xml
61
+
62
+ # Gradle:
63
+ # .idea/gradle.xml
64
+ # .idea/libraries
65
+
66
+ # Mongo Explorer plugin:
67
+ # .idea/mongoSettings.xml
68
+
69
+ ## File-based project format:
70
+ *.ipr
71
+ *.iws
72
+
73
+ ## Plugin-specific files:
74
+
75
+ # IntelliJ
76
+ out/
77
+
78
+ # mpeltonen/sbt-idea plugin
79
+ .idea_modules/
80
+
81
+ # JIRA plugin
82
+ atlassian-ide-plugin.xml
83
+
84
+ # Crashlytics plugin (for Android Studio and IntelliJ)
85
+ com_crashlytics_export_strings.xml
86
+ crashlytics.properties
87
+ crashlytics-build.properties
88
+
89
+
90
+ ### OSX ###
91
+ .DS_Store
92
+ .AppleDouble
93
+ .LSOverride
94
+
95
+ # Icon must end with two \r
96
+ Icon
97
+
98
+
99
+ # Thumbnails
100
+ ._*
101
+
102
+ # Files that might appear on external disk
103
+ .Spotlight-V100
104
+ .Trashes
105
+
106
+ # Directories potentially created on remote AFP share
107
+ .AppleDB
108
+ .AppleDesktop
109
+ Network Trash Folder
110
+ Temporary Items
111
+ .apdisk
112
+
113
+
114
+ ### Vim ###
115
+ [._]*.s[a-w][a-z]
116
+ [._]s[a-w][a-z]
117
+ *.un~
118
+ Session.vim
119
+ .netrwhist
120
+ *~
121
+
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in Cinderella.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Piotr Limanowski
2
+
3
+ MIT License
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.
@@ -0,0 +1,26 @@
1
+ ECLIx
2
+ ===========
3
+
4
+ ## Escenic CLI not mouseclix
5
+
6
+ The gem is a CLI interface for Escenic CMS. For now it provides basic functionalities like adding publications, bacis syncing static content.
7
+
8
+ ## Installation
9
+
10
+ Execute following command:
11
+
12
+ $ gem install eclix
13
+
14
+ ## Usage
15
+
16
+ To see detailed documentation execute:
17
+
18
+ $ eclix -h
19
+
20
+ ## Contributing
21
+
22
+ 1. Fork it ( https://github.com/[my-github-username]/eclix/fork )
23
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
24
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
25
+ 4. Push to the branch (`git push origin my-new-feature`)
26
+ 5. Create a new Pull Request
@@ -0,0 +1,6 @@
1
+ require 'rspec/core/rake_task'
2
+ require 'bundler/gem_tasks'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'commander/import'
4
+ require 'Eclix'
5
+
6
+ program :name, 'ECLIx'
7
+ program :version, '0.1.0'
8
+ program :description, 'Escenic CLI mode'
9
+
10
+ command :mkpub do |c|
11
+ c.syntax = 'eclix mkpub'
12
+ c.description = 'Creates a new publication'
13
+ c.option '--host STRING', String, 'Hostname on which Escenic server is running'
14
+ c.option '--port PORT_NUMBER', Integer, 'Port on which Escenic server is running'
15
+ c.option '--war STRING', String, 'Name of the WAR containing content definitions'
16
+ c.option '--publication STRING', String, 'Name of the publication to create'
17
+ c.action do |args, options|
18
+ options.default \
19
+ :host => 'localhost',
20
+ :port => 8080,
21
+ :war => 'shared-war.war',
22
+ :publication_name => 'demo'
23
+
24
+ resources = Resources.new(file=options.war)
25
+ publication = Publication.new(options.publication_name)
26
+ server = Server.new(options.port, options.host)
27
+ escenic = Escenic.new(options.server)
28
+ creator = Publication_Creator.new(options.escenic)
29
+ creator.new_publication(options.resources, options.publication)
30
+ end
31
+ end
32
+
33
+ command :static do |c|
34
+ c.syntax = 'eclix static'
35
+ c.description = 'Performs operations on static content'
36
+ c.option '--local_dir STRING', String, 'Manually sets local dir to publication'
37
+ c.option '--host STRING', String, 'Hostname on which Escenic server is listening'
38
+ c.option '--port PORT_NUM', Integer, 'Port on which *SSH* server is listening'
39
+ c.option '--user STRING', String, 'Username for *SSH* user to remote server'
40
+ c.option '--pass STRING', String, 'Password for *SSH* connection'
41
+ c.option '--publications STRING STRING', Array, 'List of publications to sync'
42
+ c.option '--remote_name STRING', String, 'Name of the remote Escenic instance to sync with'
43
+ c.action do |args, options|
44
+ options.default \
45
+ :name => 'engine1',
46
+ :host => 'localhost',
47
+ :port => 2222,
48
+ :user => 'escenic',
49
+ :pass => '',
50
+ :local_dir => "#{Dir.pwd}/app",
51
+ :publication_names => ['demo']
52
+
53
+ credentials = Eclix::Credentials.new(options.user, options.pass)
54
+
55
+ local = Eclix::Local.new(options.local_dir)
56
+ remote = Eclix::Remote.new(options.name, options.host, options.port, credentials)
57
+ env = Eclix::Environment.new(remote, local, options.publication_names)
58
+
59
+ uploader = Eclix::Uploader.new
60
+ uploader.upload(env)
61
+ end
62
+ end
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'eclix/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "eclix"
8
+ spec.version = Eclix::VERSION
9
+ spec.authors = ["Piotr Limanowski"]
10
+ spec.email = ["piotr.limanowski@schibsted.pl"]
11
+ spec.summary = "A CLI interface to Escenic CMS"
12
+ spec.description = "A CLI interface to Escenic CMS"
13
+ spec.homepage = "https://github.com/peel/eclix"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "rspec-nc"
25
+ spec.add_development_dependency "guard"
26
+ spec.add_development_dependency "guard-rspec"
27
+ spec.add_development_dependency "pry"
28
+ spec.add_development_dependency "pry-remote"
29
+ spec.add_development_dependency "pry-nav"
30
+ spec.add_development_dependency "coveralls"
31
+
32
+ spec.add_runtime_dependency "rest-client"
33
+ spec.add_runtime_dependency "commander"
34
+ spec.add_runtime_dependency "net-scp"
35
+ end
@@ -0,0 +1,4 @@
1
+ require "eclix/version"
2
+ require "eclix/sync"
3
+ require "eclix/publication_creator"
4
+ require 'eclix/domain'
@@ -0,0 +1,18 @@
1
+ module Eclix
2
+ class Publication
3
+ attr_reader :name, :publisher, :password, :context
4
+ def initialize(name,publisher='Escenic',password='admin',context=name)
5
+ @name = name
6
+ @publisher=publisher
7
+ @password=password
8
+ @context=context
9
+ @context||=name
10
+ end
11
+ def template(path)
12
+ path+"template"
13
+ end
14
+ def static(path)
15
+ path+"static"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,140 @@
1
+ require 'rest-client'
2
+
3
+ module Eclix
4
+ class Publication_Creator
5
+ attr_reader :escenic
6
+
7
+ def initialize(escenic=default_env)
8
+ @escenic = escenic
9
+ end
10
+
11
+ def new_publication(resources, publication)
12
+ if publication_exists(publication)
13
+ puts "Publication already exists, proceeding..."
14
+ else
15
+ @cookies = get_session_id
16
+ puts "Uploading resources..."
17
+ deploy_resources(resources, @cookies)
18
+ puts "Adding publication config..."
19
+ create_publication(publication, @cookies)
20
+ puts "Done."
21
+ end
22
+ end
23
+
24
+ def get_session_id
25
+ response = RestClient.get(escenic.admin_url.absolute)
26
+ response.cookies
27
+ end
28
+
29
+ def deploy_resources(resources, cookies)
30
+ RestClient.post(escenic.resource_url.absolute,
31
+ {
32
+ :type => resources.type,
33
+ :resourceFile => File.new(resources.file, 'rb'),
34
+ :multipart => true
35
+ },
36
+ {:cookies => cookies},
37
+ ) { |response, request, result|
38
+ case response.code
39
+ when 200
40
+ response
41
+ else
42
+ raise ResourceUploadException
43
+ end
44
+ }
45
+ end
46
+
47
+ def create_publication(publication, cookies)
48
+ RestClient.post(escenic.publish_url.absolute,
49
+ {
50
+ :name => publication.name,
51
+ :publisherName => publication.publisher,
52
+ :allowEmptyPassword => false,
53
+ :adminPassword => publication.password,
54
+ :adminPasswordConfirm => publication.password
55
+ },
56
+ {
57
+ :cookies => cookies
58
+ }
59
+ ) { |response, request, result|
60
+ case response.code
61
+ when 200
62
+ response
63
+ else
64
+ raise PublicationDefinitionException
65
+ end
66
+ }
67
+ end
68
+
69
+ def publication_exists(publication)
70
+ url = escenic.publication_url(publication).absolute
71
+ RestClient.get(url) { |response, request, result|
72
+ case response.code
73
+ when 200
74
+ true
75
+ else
76
+ false
77
+ end
78
+ }
79
+ end
80
+
81
+ def default_env
82
+ Escenic.new(Server.new)
83
+ end
84
+ end
85
+ class ResourceUploadException < Exception
86
+ end
87
+ class PublicationDefinitionException < Exception
88
+ end
89
+ class Url
90
+ attr_reader :path, :base
91
+ def initialize(server, path)
92
+ @server=server
93
+ @path=path
94
+ @base=base_url(server)
95
+ end
96
+
97
+ def absolute
98
+ "#{base}/#{path}"
99
+ end
100
+
101
+ def base_url(server)
102
+ "http://#{server.host}:#{server.port}"
103
+ end
104
+ end
105
+ class Server
106
+ attr_reader :host, :port
107
+ def initialize(port=8080, host='localhost')
108
+ @host=host
109
+ @port=port
110
+ end
111
+ end
112
+ class Escenic
113
+ attr_reader :server
114
+ def initialize(server=Server.new)
115
+ @server=server
116
+ end
117
+ def resource_url
118
+ Url.new(server, 'escenic-admin/do/publication/resource')
119
+ end
120
+
121
+ def publish_url
122
+ Url.new(server, 'escenic-admin/do/publication/insert')
123
+ end
124
+
125
+ def admin_url
126
+ Url.new(server, 'escenic-admin')
127
+ end
128
+
129
+ def publication_url(publication)
130
+ Url.new(server, "#{publication.context}/")
131
+ end
132
+ end
133
+ class Resources
134
+ attr_reader :type, :file
135
+ def initialize(type='webapp', file)
136
+ @type=type
137
+ @file=file
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,79 @@
1
+ require 'net/scp'
2
+
3
+ module Eclix
4
+ class Credentials
5
+ attr_reader :user, :password
6
+ def initialize(user, password)
7
+ @user = user
8
+ @password = password
9
+ end
10
+ end
11
+
12
+ class Remote
13
+ attr_reader :name, :host, :port, :credentials
14
+ def initialize(name, host, port, credentials)
15
+ @name = name
16
+ @host = host
17
+ @port = port
18
+ @credentials = credentials
19
+ end
20
+
21
+ def password
22
+ credentials.password
23
+ end
24
+
25
+ def user
26
+ credentials.user
27
+ end
28
+
29
+ def publication_dir(publication_name)
30
+ "/opt/tomcat-#{name}/webapps-#{publication_name}/#{publication_name}/"
31
+ end
32
+ end
33
+
34
+ class Local
35
+ attr_reader :project_home
36
+ def initialize(project_home)
37
+ @project_home = project_home
38
+ end
39
+ def publication_dir(publication_name)
40
+ "#{project_home}/publications/#{publication_name}/src/main/webapp/"
41
+ end
42
+ end
43
+
44
+ class Environment
45
+ attr_reader :publications, :local, :remote
46
+ def initialize(remote, local, publication_names)
47
+ @publications = publication_names.map{|n| Publication.new(n)}
48
+ @local = local
49
+ @remote = remote
50
+ end
51
+ end
52
+
53
+ class Uploader
54
+ def upload_template(environment)
55
+ environment.publications.each do |pub|
56
+ p 'Syncing templates...'
57
+ p pub.template(environment.local.publication_dir(pub.name)) => environment.remote.publication_dir(pub.name)
58
+ Net::SCP.upload!(environment.remote.host, environment.remote.user, pub.template(environment.local.publication_dir(pub.name)), environment.remote.publication_dir(pub.name), :ssh => {:port => environment.remote.port}, :recursive => true)
59
+ p pub.template(environment.local.publication_dir("shared-war")) => environment.remote.publication_dir(pub.name)
60
+ Net::SCP.upload!(environment.remote.host, environment.remote.user, pub.template(environment.local.publication_dir("shared-war")), environment.remote.publication_dir(pub.name), :ssh => {:port => environment.remote.port}, :recursive => true)
61
+ p 'Templates synced.'
62
+ end
63
+ end
64
+ def upload_static(environment)
65
+ environment.publications.each do |pub|
66
+ p 'Syncing statics...'
67
+ p pub.static(environment.local.publication_dir(pub.name)) => pub.static(environment.remote.publication_dir(pub.name))
68
+ Net::SCP.upload!(environment.remote.host, environment.remote.user, pub.static(environment.local.publication_dir(pub.name)), environment.remote.publication_dir(pub.name), :ssh => {:port => environment.remote.port}, :recursive => true)
69
+ p pub.static(environment.local.publication_dir("shared-war")) => pub.static(environment.remote.publication_dir(pub.name))
70
+ Net::SCP.upload!(environment.remote.host, environment.remote.user, pub.static(environment.local.publication_dir("shared-war")), environment.remote.publication_dir(pub.name), :ssh => {:port => environment.remote.port}, :recursive => true)
71
+ p 'Statics synced.'
72
+ end
73
+ end
74
+ def upload(environment)
75
+ upload_template(environment)
76
+ upload_static(environment)
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,3 @@
1
+ module Eclix
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ pub_name = "test"
4
+ pub = Eclix::Publication.new(pub_name)
5
+ path = '/home/escenic/pub/'
6
+
7
+ describe Eclix::Publication do
8
+
9
+ describe '#template' do
10
+ it "creates a path to templates" do
11
+ expect(pub.template(path)).to eq "#{path}template"
12
+ end
13
+ end
14
+
15
+ describe '#static' do
16
+ it "creates a path to static directory" do
17
+ expect(pub.static(path)).to eq "#{path}static"
18
+ end
19
+ end
20
+
21
+ end
22
+
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eclix::Url do
4
+
5
+ describe '#base' do
6
+ it 'returns a base url (http://{host}:{port}) for a given url' do
7
+ expect(Eclix::Url.new(Eclix::Server.new,'abc').base).to eq('http://localhost:8080')
8
+ end
9
+ end
10
+
11
+ describe '#absolute' do
12
+ it 'returns an absolute url for a given url path' do
13
+ expect(Eclix::Url.new(Eclix::Server.new,'abc').absolute).to eq('http://localhost:8080/abc')
14
+ end
15
+ end
16
+ end
17
+
18
+ describe Eclix::Escenic do
19
+
20
+ describe '#admin_url' do
21
+ it 'returns absolute escenic admin url' do
22
+ expect(Eclix::Escenic.new.admin_url.absolute).to eq('http://localhost:8080/escenic-admin')
23
+ end
24
+ end
25
+
26
+ describe '#resource_url' do
27
+ it 'returns absolute escenic resource submission url' do
28
+ expect(Eclix::Escenic.new.resource_url.absolute).to eq('http://localhost:8080/escenic-admin/do/publication/resource')
29
+ end
30
+ end
31
+
32
+ describe '#publish_url' do
33
+ it 'returns absolute escenic publication submission url' do
34
+ expect(Eclix::Escenic.new.publish_url.absolute).to eq('http://localhost:8080/escenic-admin/do/publication/insert')
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,10 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+ require 'pry'
4
+ require './lib/eclix'
5
+
6
+ RSpec.configure do |config|
7
+ config.color = true
8
+ config.tty = true
9
+ config.formatter = :documentation
10
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ pub_name = "test"
4
+ path = '/home/escenic/pub/'
5
+
6
+ describe Eclix::Remote do
7
+ server_name = "test"
8
+ host = "host"
9
+ port = 22
10
+ user = "user"
11
+ pass = "pass"
12
+ credentials = Eclix::Credentials.new(user,pass)
13
+ remote = Eclix::Remote.new(server_name, host, port, credentials)
14
+
15
+ describe '#publication_dir' do
16
+ it 'creates a publication absolute dir on remote server' do
17
+ expect(remote.publication_dir(pub_name)).to eq "/opt/tomcat-#{server_name}/webapps-#{pub_name}/#{pub_name}/"
18
+ end
19
+ end
20
+
21
+ describe '#user' do
22
+ it 'returns ussername on remote server' do
23
+ expect(remote.user).to eq user
24
+ end
25
+ end
26
+
27
+ describe '#password' do
28
+ it 'returns ussername on remote server' do
29
+ expect(remote.password).to eq pass
30
+ end
31
+ end
32
+ end
33
+
34
+ describe Eclix::Local do
35
+ local = Eclix::Local.new(path)
36
+ describe '#publication_dir' do
37
+ it 'creates a publication absolute dir on remote server' do
38
+ expect(local.publication_dir(pub_name)).to eq "#{path}/publications/#{pub_name}/src/main/webapp/"
39
+ end
40
+ end
41
+ end
42
+
43
+ #TODO: Add tests for upload
metadata ADDED
@@ -0,0 +1,249 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eclix
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Piotr Limanowski
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-14 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.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
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: rspec-nc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
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: guard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
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: guard-rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-remote
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry-nav
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: coveralls
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rest-client
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: commander
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: net-scp
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ description: A CLI interface to Escenic CMS
196
+ email:
197
+ - piotr.limanowski@schibsted.pl
198
+ executables:
199
+ - eclix
200
+ extensions: []
201
+ extra_rdoc_files: []
202
+ files:
203
+ - ".coveralls.yml"
204
+ - ".gitignore"
205
+ - ".rspec"
206
+ - Gemfile
207
+ - LICENSE.txt
208
+ - README.md
209
+ - Rakefile
210
+ - bin/eclix
211
+ - eclix.gemspec
212
+ - lib/eclix.rb
213
+ - lib/eclix/domain.rb
214
+ - lib/eclix/publication_creator.rb
215
+ - lib/eclix/sync.rb
216
+ - lib/eclix/version.rb
217
+ - spec/domain_spec.rb
218
+ - spec/publication_creator_spec.rb
219
+ - spec/spec_helper.rb
220
+ - spec/sync_spec.rb
221
+ homepage: https://github.com/peel/eclix
222
+ licenses:
223
+ - MIT
224
+ metadata: {}
225
+ post_install_message:
226
+ rdoc_options: []
227
+ require_paths:
228
+ - lib
229
+ required_ruby_version: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - ">="
232
+ - !ruby/object:Gem::Version
233
+ version: '0'
234
+ required_rubygems_version: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ requirements: []
240
+ rubyforge_project:
241
+ rubygems_version: 2.2.2
242
+ signing_key:
243
+ specification_version: 4
244
+ summary: A CLI interface to Escenic CMS
245
+ test_files:
246
+ - spec/domain_spec.rb
247
+ - spec/publication_creator_spec.rb
248
+ - spec/spec_helper.rb
249
+ - spec/sync_spec.rb