leap-cli 1.0.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
+ SHA1:
3
+ metadata.gz: 8787a01442a6f05a729b42403a0d3fe1f4d5e5d1
4
+ data.tar.gz: 2341e315764f8954674438a6f38d1bfa3249bf3f
5
+ SHA512:
6
+ metadata.gz: 5a5d3b63026eaa8d8e3ea6052cbf6dc5cdac5b09afc044bb23491b93b97d90efcd2a68f58010ae877b9f6742a876e23cedbf4b51b09bf2006016edc5685f92e4
7
+ data.tar.gz: 571097b889476c3170f1616b836408f7cef6f5485c40e0ea9608611f2323141e90181e8678c1f8fc9442de5733c5834f6d2af50dd36ab6b8f95688f588d1dd50
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ mkmf.log
2
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,41 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ leap-cli (1.0.0)
5
+ thor (= 0.19.1)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ coderay (1.1.0)
11
+ diff-lcs (1.2.5)
12
+ method_source (0.8.2)
13
+ pry (0.10.0)
14
+ coderay (~> 1.1.0)
15
+ method_source (~> 0.8.1)
16
+ slop (~> 3.4)
17
+ rake (10.3.2)
18
+ rspec (3.1.0)
19
+ rspec-core (~> 3.1.0)
20
+ rspec-expectations (~> 3.1.0)
21
+ rspec-mocks (~> 3.1.0)
22
+ rspec-core (3.1.6)
23
+ rspec-support (~> 3.1.0)
24
+ rspec-expectations (3.1.2)
25
+ diff-lcs (>= 1.2.0, < 2.0)
26
+ rspec-support (~> 3.1.0)
27
+ rspec-mocks (3.1.3)
28
+ rspec-support (~> 3.1.0)
29
+ rspec-support (3.1.2)
30
+ slop (3.6.0)
31
+ thor (0.19.1)
32
+
33
+ PLATFORMS
34
+ ruby
35
+
36
+ DEPENDENCIES
37
+ bundler (~> 1.3)
38
+ leap-cli!
39
+ pry (= 0.10.0)
40
+ rake (= 10.3.2)
41
+ rspec (= 3.1.0)
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 General Assembly
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.
data/README.md ADDED
@@ -0,0 +1,54 @@
1
+ # Leap
2
+
3
+ Leap is a CLI to make working on projects inside a service oriented architecture easier.
4
+
5
+ ## Dependencies
6
+
7
+ Leap is built upon Ruby 2.1.2.
8
+
9
+ While not a strict dependency, leap has not been tested on Linux or Windows. Don&rsquo;t expect the latter to work.
10
+
11
+ ## Installation
12
+
13
+ To install leap and take advantage of its full command, you&rsquo;ll want to install it globally.
14
+
15
+ `sudo gem install leap-cli`
16
+
17
+ ## Adding leap to a project
18
+
19
+ Leap uses convention through configuration. What that means is individual teams enforce their conventions through configuration in leap.
20
+
21
+ To do this, in each project create a `.leap` directory, inside of which you&rsquo;ll create a `config` file. This is ultimately a YAML file.
22
+
23
+ #### Example `config` file
24
+
25
+ ```YAML
26
+ dependencies:
27
+ - postgresql
28
+ - redis
29
+
30
+ remotes:
31
+ - origin:
32
+ - git@github.com:generalassembly/turbo-octo-happiness.git
33
+ ```
34
+
35
+ #### Adding leap start
36
+
37
+ The start script is just a shell script that starts your server. This could be as simple as:
38
+
39
+ ```shell
40
+ rails s
41
+ ```
42
+
43
+ Or as complex as you like. This simply gives a clear way for any dev new to a project start the server without having to ask, &ldquo;Is this a foreman project or do I use 'rails s' or some other way?&rdquo;
44
+
45
+ ## Using leap
46
+
47
+ Leap is now part of your CLI. Using it is simple!
48
+
49
+ `$ leap`
50
+
51
+ ## Contributing to leap
52
+
53
+ We&rsquo;d love to have all contributions that are sent our way that match the mission of the project. To that end, opening an issue before submitting a pull request is the best way to kick off the discussion as to whether your vision and our vision matches.
54
+
data/bin/leap ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../lib/leap/cli'
3
+ Leap::CLI.start
data/leap.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'leap/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'leap-cli'
9
+ spec.version = Leap::VERSION
10
+ spec.authors = ['General Assembly', 'Dustin Coates']
11
+ spec.email = ['tech@generalassemb.ly', 'dustin@dcoates.com']
12
+ spec.description = %q{Tools for projects inside a SOA.}
13
+ spec.summary = %q{A CLI for setting up, running, and making changes to project inside a SOA.}
14
+ spec.homepage = 'http://github.com/generalassembly/leap'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files`.split($/)
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.required_ruby_version = '>= 2.1.2'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'pry', '0.10.0'
26
+ spec.add_development_dependency 'rake', '10.3.2'
27
+ spec.add_development_dependency 'rspec', '3.1.0'
28
+
29
+ spec.add_dependency 'thor', '0.19.1'
30
+ end
data/lib/leap.rb ADDED
@@ -0,0 +1,9 @@
1
+
2
+ module Leap
3
+ end
4
+
5
+ require 'leap/version'
6
+ require 'leap/cli'
7
+ require 'leap/config'
8
+ require 'leap/support/brew'
9
+ require 'leap/support/remotes'
data/lib/leap/cli.rb ADDED
@@ -0,0 +1,63 @@
1
+ require 'thor'
2
+ require 'mkmf'
3
+ require 'leap'
4
+ require 'pry'
5
+
6
+ require_relative 'config'
7
+ require_relative 'support/brew'
8
+ require_relative 'support/remotes'
9
+
10
+ class Leap::CLI < Thor
11
+
12
+ desc 'setup USERNAME/PROJECT', 'Clone and install dependencies of a project'
13
+ def setup(username_project)
14
+ username, project_name = split_source(username_project)
15
+ invoke :clone, [username_project]
16
+ invoke :remotes, [project_name]
17
+ invoke :dependencies, [project_name]
18
+ end
19
+
20
+ desc 'clone USERNAME/PROJECT', 'Clone project into current directory'
21
+ def clone(username_project)
22
+ username, project_name = split_source(username_project)
23
+ if Dir.exists?(project_name)
24
+ say "Project appears to already exist. Skipping clone.", :green
25
+ else
26
+ say "Cloning #{project_name}.", :green
27
+ `git clone git@github.com:#{username}/#{project_name}.git`
28
+ end
29
+ end
30
+
31
+ desc 'remotes', 'Sets up all relevant remotes for a project'
32
+ def remotes(project_name = nil)
33
+ # setup above invokes dependencies with an argument so we allow for a single
34
+ # unused argument when called inside a project
35
+ Remotes.new(self, Leap::CONFIG, project_name).add_specified_remotes
36
+ end
37
+
38
+ desc 'dependencies', 'Guided installation of dependencies for project'
39
+ # setup above invokes dependencies with an argument so we allow for a single
40
+ # unused argument when called inside a project
41
+ def dependencies(project_name = nil)
42
+ brew = Brew.new(self, Leap::CONFIG, project_name)
43
+
44
+ brew.install unless brew.present?
45
+ brew.install_dependencies
46
+ end
47
+
48
+ desc 'start', 'Starts a local server'
49
+ def start
50
+ remotes_file = '.leap/start'
51
+ if File.exists?(remotes_file)
52
+ exec(remotes_file)
53
+ else
54
+ say 'No start script', :red
55
+ end
56
+ end
57
+
58
+ no_commands do
59
+ def split_source(username_project)
60
+ username_project.downcase.split("/")
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,6 @@
1
+ require 'yaml'
2
+
3
+ module Leap
4
+ CONFIG_FILE = '.leap/config'
5
+ CONFIG = File.exists?(CONFIG_FILE) ? YAML.load_file(CONFIG_FILE) : {}
6
+ end
@@ -0,0 +1,44 @@
1
+ class Brew
2
+ attr_reader :dependencies
3
+
4
+ def initialize(thor, config, project_name)
5
+ @dependencies = extract_dependencies(config, project_name)
6
+ @thor = thor
7
+ end
8
+
9
+ def eligible?
10
+ !RbConfig::CONFIG['host_os'].match(/darwin|mac os/).nil?
11
+ end
12
+
13
+ def install
14
+ @thor.say 'Installing brew', :green
15
+ exec('ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"')
16
+ end
17
+
18
+ def install_dependencies
19
+ @dependencies.each do |dependency|
20
+ local_package = `brew list | grep #{dependency}`
21
+ if local_package.empty?
22
+ @thor.say "Installing #{dependency}", :green
23
+ exec("brew install #{dependency}")
24
+ end
25
+ end.empty? and begin
26
+ @thor.say "No dependencies found in leap config", :red
27
+ end
28
+ end
29
+
30
+ def present?
31
+ !(find_executable 'brew').nil?
32
+ end
33
+
34
+ private
35
+ def extract_dependencies(config, project_name)
36
+ config.fetch('dependencies') do
37
+ if File.exists? "./#{project_name}/.leap/config"
38
+ YAML.load_file("./#{project_name}/.leap/config")['dependencies']
39
+ else
40
+ []
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,37 @@
1
+ class Remotes
2
+ attr_reader :remotes
3
+
4
+ def initialize(thor, config, project_name = nil)
5
+ @thor = thor
6
+ @remotes = extract_remotes(config, project_name)
7
+ @project_name = project_name
8
+ end
9
+
10
+ def add_specified_remotes
11
+ if @remotes.nil?
12
+ @thor.say 'No remotes specified', :red
13
+ else
14
+ @remotes.each do |name, remote_url|
15
+ add_remote(name, remote_url, @project_name)
16
+ end
17
+ end
18
+ end
19
+
20
+ def add_remote(name, remote_url, project_name = nil)
21
+ @thor.say "Adding #{name} remote"
22
+ if project_name.nil?
23
+ `git remote add #{name} #{remote_url}`
24
+ else
25
+ `cd #{project_name} && git remote add #{name} #{remote_url}`
26
+ end
27
+ end
28
+
29
+ private
30
+ def extract_remotes(config, project_name)
31
+ config.fetch('remotes') do
32
+ if File.exists? "./#{project_name}/.leap/config"
33
+ YAML.load_file("./#{project_name}/.leap/config")['remotes']
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ module Leap
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1,115 @@
1
+ require 'spec_helper'
2
+ require 'pry'
3
+
4
+ describe Leap::CLI do
5
+ let(:cli) { Leap::CLI.new }
6
+
7
+ describe 'setup' do
8
+ it 'invokes clone, remotes, dependencies' do
9
+ expect(cli).to receive(:invoke).exactly(:thrice)
10
+
11
+ cli.setup('username/project')
12
+ end
13
+ end
14
+
15
+ describe 'clone' do
16
+ context 'when directory with same name already exists' do
17
+ before do
18
+ allow(Dir).to receive(:exists?).and_return(true)
19
+ end
20
+
21
+ it 'does not clone project' do
22
+ expect(cli).to_not receive(:`)
23
+ end
24
+
25
+ it 'warns user' do
26
+ expect(cli).to receive(:say)
27
+ .exactly(:once)
28
+ .with('Project appears to already exist. Skipping clone.', :green)
29
+
30
+ cli.clone('username/project')
31
+ end
32
+ end
33
+
34
+ context 'when directory with same name does not exist' do
35
+ before do
36
+ allow(Dir).to receive(:exists?).and_return(false)
37
+ end
38
+
39
+ it 'clones project' do
40
+ expect(cli).to receive(:`).with("git clone git@github.com:username/project.git")
41
+
42
+ cli.clone('username/project')
43
+ end
44
+
45
+ it 'notifies user' do
46
+ expect(cli).to receive(:say)
47
+ .exactly(:once)
48
+ .with("Cloning project.", :green)
49
+
50
+ cli.clone('username/project')
51
+ end
52
+ end
53
+ end
54
+
55
+ describe 'dependencies' do
56
+ context 'when brew is not present' do
57
+ it 'installs brew' do
58
+ allow_any_instance_of(Brew).to receive(:present?).and_return(false)
59
+
60
+ expect_any_instance_of(Brew).to receive(:install_brew).exactly(:once)
61
+
62
+ cli.dependencies
63
+ end
64
+ end
65
+
66
+ context 'when brew is present' do
67
+ it 'does not install brew' do
68
+ allow_any_instance_of(Brew).to receive(:present?).and_return(true)
69
+
70
+ expect_any_instance_of(Brew).to_not receive(:install_brew)
71
+
72
+ cli.dependencies
73
+ end
74
+ end
75
+
76
+ it 'installs dependencies' do
77
+ expect_any_instance_of(Brew).to receive(:install_dependencies)
78
+
79
+ cli.dependencies
80
+ end
81
+ end
82
+
83
+ describe 'start' do
84
+ context 'when start script exists' do
85
+ before do
86
+ allow(File).to receive(:exists?).and_return(false)
87
+ end
88
+
89
+ it 'alerts user of no start script' do
90
+ expect(cli)
91
+ .to receive(:say)
92
+ .with('No start script', :red)
93
+ .exactly(:once)
94
+
95
+ cli.start
96
+ end
97
+ end
98
+
99
+ context 'when start script does not exist' do
100
+ before do
101
+ allow(File).to receive(:exists?).and_return(true)
102
+ allow_any_instance_of(Object).to receive(:exec).and_return(double)
103
+ end
104
+
105
+ it 'executes that script' do
106
+ expect_any_instance_of(Object)
107
+ .to receive(:exec)
108
+ .with('.leap/start')
109
+ .exactly(:once)
110
+
111
+ cli.start
112
+ end
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,109 @@
1
+ require "spec_helper"
2
+
3
+ describe Brew do
4
+ let(:brew) { Brew.new(Leap::CLI.new, {}, 'project') }
5
+
6
+ describe '#eligible?' do
7
+ it 'returns true for mac os' do
8
+ RbConfig::CONFIG['host_os'] = 'mac os'
9
+ expect(brew).to be_eligible
10
+ end
11
+
12
+ it 'returns true for darwin' do
13
+ RbConfig::CONFIG['host_os'] = 'darwin'
14
+ expect(brew).to be_eligible
15
+ end
16
+
17
+ it 'returns false for anything else' do
18
+ RbConfig::CONFIG['host_os'] = 'mswin'
19
+ expect(brew).to_not be_eligible
20
+ end
21
+ end
22
+
23
+ describe '#install' do
24
+ it 'notifies user' do
25
+ expect_any_instance_of(Leap::CLI)
26
+ .to receive('say')
27
+ .exactly(:once)
28
+ .with('Installing brew', :green)
29
+
30
+ allow_any_instance_of(Object).to receive(:exec).and_return(double)
31
+
32
+ brew.install
33
+ end
34
+
35
+ it 'installs brew' do
36
+ expect_any_instance_of(Object)
37
+ .to receive(:exec)
38
+ .with('ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"')
39
+ .exactly(:once)
40
+
41
+ brew.install
42
+ end
43
+ end
44
+
45
+ describe '#install_dependencies' do
46
+ before do
47
+ allow_any_instance_of(Object).to receive(:exec).and_return(double)
48
+ end
49
+
50
+ context 'when no dependencies are present' do
51
+ it 'alerts user' do
52
+ brew = Brew.new(Leap::CLI.new, {}, 'project')
53
+
54
+ expect_any_instance_of(Leap::CLI)
55
+ .to receive('say')
56
+ .exactly(:once)
57
+ .with('No dependencies found in leap config', :red)
58
+
59
+ brew.install_dependencies
60
+ end
61
+ end
62
+
63
+ context 'when dependencies are present' do
64
+ context 'when local_package is not present' do
65
+ before { allow_any_instance_of(Object).to receive(:`).and_return('') }
66
+
67
+ it 'notifies user for every dependency' do
68
+ brew = Brew.new(Leap::CLI.new, { 'dependencies' => ['redis', 'awk'] }, 'project')
69
+
70
+ expect_any_instance_of(Leap::CLI)
71
+ .to receive('say')
72
+ .exactly(:twice)
73
+
74
+ brew.install_dependencies
75
+ end
76
+
77
+ it 'installs dependencies via brew' do
78
+ brew = Brew.new(Leap::CLI.new, { 'dependencies' => ['redis'] }, 'project')
79
+
80
+ expect_any_instance_of(Object)
81
+ .to receive(:exec)
82
+ .with("brew install redis")
83
+
84
+ brew.install_dependencies
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ describe '#present?' do
91
+ it 'returns false if brew executable is not found' do
92
+ allow_any_instance_of(Object)
93
+ .to receive(:find_executable)
94
+ .with('brew')
95
+ .and_return(nil)
96
+
97
+ expect(brew).to_not be_present
98
+ end
99
+
100
+ it 'returns true if brew executable is found' do
101
+ allow_any_instance_of(Object)
102
+ .to receive(:find_executable)
103
+ .with('brew')
104
+ .and_return('/usr/local/bin/brew')
105
+
106
+ expect(brew).to be_present
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,84 @@
1
+ require "spec_helper"
2
+
3
+ describe Remotes do
4
+
5
+ describe '#add_specified_remotes' do
6
+ context 'when no remotes are present' do
7
+ let(:remotes) { Remotes.new(Leap::CLI.new, {}) }
8
+
9
+ it 'alerts the user' do
10
+ expect{
11
+ remotes.add_specified_remotes
12
+ }.to output("No remotes specified\n").to_stdout
13
+ end
14
+
15
+ it 'does not add remotes' do
16
+ expect(remotes).to_not receive(:add_remote)
17
+
18
+ remotes.add_specified_remotes
19
+ end
20
+ end
21
+
22
+ context 'when remotes are present' do
23
+ let(:remotes) do
24
+ Remotes.new(
25
+ Leap::CLI.new,
26
+ { "remotes" => {
27
+ "origin" => 'git@github.com:generalassembly/leap.git'
28
+ }
29
+ }
30
+ )
31
+ end
32
+
33
+ it 'adds remotes' do
34
+ expect(remotes).to receive(:add_remote).exactly(:once)
35
+
36
+ remotes.add_specified_remotes
37
+ end
38
+ end
39
+ end
40
+
41
+ describe '#add_remote' do
42
+ let(:remotes) do
43
+ Remotes.new(
44
+ Leap::CLI.new,
45
+ { "remotes" => {
46
+ "origin" => 'git@github.com:generalassembly/leap.git'
47
+ }
48
+ },
49
+ 'project'
50
+ )
51
+ end
52
+
53
+ it 'notifies user' do
54
+ expect_any_instance_of(Leap::CLI)
55
+ .to receive('say')
56
+ .exactly(:once)
57
+ .with('Adding origin remote')
58
+
59
+ remotes.add_remote(remotes.remotes.keys.first, remotes.remotes.values.first)
60
+ end
61
+
62
+ context 'when project name is present' do
63
+ it 'cds into project and adds remote' do
64
+ expect(remotes)
65
+ .to receive(:`)
66
+ .exactly(:once)
67
+ .with("cd project && git remote add origin git@github.com:generalassembly/leap.git")
68
+
69
+ remotes.add_remote(remotes.remotes.keys.first, remotes.remotes.values.first, "project")
70
+ end
71
+ end
72
+
73
+ context 'when project name is not present' do
74
+ it 'does not cd into project, then adds remote' do
75
+ expect(remotes)
76
+ .to receive(:`)
77
+ .exactly(:once)
78
+ .with("git remote add origin git@github.com:generalassembly/leap.git")
79
+
80
+ remotes.add_remote(remotes.remotes.keys.first, remotes.remotes.values.first, nil)
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,2 @@
1
+ require 'rspec'
2
+ require 'leap'
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: leap-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - General Assembly
8
+ - Dustin Coates
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-04-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.3'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.3'
28
+ - !ruby/object:Gem::Dependency
29
+ name: pry
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '='
33
+ - !ruby/object:Gem::Version
34
+ version: 0.10.0
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '='
40
+ - !ruby/object:Gem::Version
41
+ version: 0.10.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '='
47
+ - !ruby/object:Gem::Version
48
+ version: 10.3.2
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '='
54
+ - !ruby/object:Gem::Version
55
+ version: 10.3.2
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '='
61
+ - !ruby/object:Gem::Version
62
+ version: 3.1.0
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '='
68
+ - !ruby/object:Gem::Version
69
+ version: 3.1.0
70
+ - !ruby/object:Gem::Dependency
71
+ name: thor
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '='
75
+ - !ruby/object:Gem::Version
76
+ version: 0.19.1
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '='
82
+ - !ruby/object:Gem::Version
83
+ version: 0.19.1
84
+ description: Tools for projects inside a SOA.
85
+ email:
86
+ - tech@generalassemb.ly
87
+ - dustin@dcoates.com
88
+ executables:
89
+ - leap
90
+ extensions: []
91
+ extra_rdoc_files: []
92
+ files:
93
+ - ".gitignore"
94
+ - Gemfile
95
+ - Gemfile.lock
96
+ - LICENSE
97
+ - README.md
98
+ - bin/leap
99
+ - leap.gemspec
100
+ - lib/leap.rb
101
+ - lib/leap/cli.rb
102
+ - lib/leap/config.rb
103
+ - lib/leap/support/brew.rb
104
+ - lib/leap/support/remotes.rb
105
+ - lib/leap/version.rb
106
+ - spec/lib/leap/cli_spec.rb
107
+ - spec/lib/leap/support/brew_spec.rb
108
+ - spec/lib/leap/support/remotes_spec.rb
109
+ - spec/spec_helper.rb
110
+ homepage: http://github.com/generalassembly/leap
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 2.1.2
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.2.2
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: A CLI for setting up, running, and making changes to project inside a SOA.
134
+ test_files:
135
+ - spec/lib/leap/cli_spec.rb
136
+ - spec/lib/leap/support/brew_spec.rb
137
+ - spec/lib/leap/support/remotes_spec.rb
138
+ - spec/spec_helper.rb
139
+ has_rdoc: