shuttle 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -2,19 +2,21 @@
2
2
 
3
3
  A simplest continuous integration for a Rails application. Enjoy it!
4
4
 
5
+ Get a new code from another team members, install new gems, run new migrations, run specs and send your new feature to the origin repository. At the simplest way!
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
8
10
 
9
11
  gem 'shuttle'
10
12
 
11
- And then execute:
13
+ Install the gem with Bundler:
12
14
 
13
15
  $ bundle
14
16
 
15
- Or install it yourself as:
17
+ And then configure default Shuttle Steps:
16
18
 
17
- $ gem install shuttle
19
+ $ rails g shuttle:install
18
20
 
19
21
  ## Usage
20
22
 
@@ -0,0 +1,11 @@
1
+ module Shuttle
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def copy_install_file
7
+ template 'shuttle.yml', 'config/shuttle.yml'
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ steps:
2
+ 1: 'shuttle:start'
3
+ 2: 'shuttle:bundle'
4
+ 3: 'db:migrate'
5
+ 4: 'shuttle:spec'
6
+ 5: 'shuttle:git:push'
@@ -1,4 +1,13 @@
1
- require "shuttle/version"
1
+ require "shuttle/railtie"
2
+ require 'yaml'
2
3
 
3
4
  module Shuttle
5
+ def self.steps
6
+ begin
7
+ yml = YAML::load(File.open(Rails.root.join('config', 'shuttle.yml').to_s))
8
+ yml['steps'] if yml.present?
9
+ rescue Errno::ENOENT
10
+ nil
11
+ end
12
+ end
4
13
  end
@@ -0,0 +1,7 @@
1
+ module Shuttle
2
+ class Railtie < Rails::Railtie
3
+ rake_tasks do
4
+ Dir[File.join(File.dirname(__FILE__), '../tasks/*.rake')].each { |file| load file }
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Shuttle
2
- VERSION = "0.0.1"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -0,0 +1,57 @@
1
+ namespace :shuttle do
2
+ namespace :git do
3
+ task :check do
4
+ out = `git status`
5
+
6
+ if out.include?('Untracked files:') || out.include?('unmerged:') || out.include?('modified:')
7
+ puts out
8
+ exit
9
+ end
10
+ end
11
+
12
+ task :pull do
13
+ sh "git pull --rebase"
14
+ end
15
+
16
+ task :push do
17
+ sh "git push"
18
+ end
19
+ end
20
+
21
+ task :bundle do
22
+ sh 'bundle install --quiet'
23
+ end
24
+
25
+ task spec: 'db:test:prepare' do
26
+ sh 'rspec spec'
27
+ end
28
+
29
+ task start: ['git:check', 'log:clear', 'tmp:clear', 'git:pull']
30
+
31
+ def p80(message)
32
+ puts '-' * 80
33
+ puts message if message
34
+ yield if block_given?
35
+ end
36
+ end
37
+
38
+ desc 'Integrate the project code'
39
+ task :shuttle do
40
+ if Shuttle.steps.nil?
41
+ require 'colored'
42
+
43
+ puts %{
44
+ You should define Shuttle Steps!
45
+
46
+ Just run 'rails g shuttle:install' to define default steps at 'config/shuttle.yml'.
47
+ }.yellow
48
+ exit
49
+ end
50
+
51
+ Shuttle.steps.values.each do |step|
52
+ p80("Executing #{step}...") do
53
+ RAILS_ENV = ENV['RAILS_ENV'] || 'development'
54
+ Rake::Task[step].invoke
55
+ end
56
+ end
57
+ end
@@ -5,11 +5,13 @@ Gem::Specification.new do |gem|
5
5
  gem.authors = ["Felipe Bazzarella"]
6
6
  gem.email = ["fbazzarella@gmail.com"]
7
7
  gem.description = %q{A simplest continuous integration for a Rails application. Enjoy it!}
8
- gem.summary = %q{Get a new code from another team members, install new gems, run new migrations, run specs and verify his code coverage and send your new feature to the origin repository. At the simplest way!}
8
+ gem.summary = %q{Get a new code from another team members, install new gems, run new migrations, run specs and send your new feature to the origin repository. At the simplest way!}
9
9
 
10
10
  gem.files = `git ls-files`.split($\)
11
11
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
12
12
  gem.name = "shuttle"
13
13
  gem.require_paths = ["lib"]
14
14
  gem.version = Shuttle::VERSION
15
+
16
+ gem.add_runtime_dependency('colored')
15
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shuttle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-19 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2012-10-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: colored
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  description: A simplest continuous integration for a Rails application. Enjoy it!
15
31
  email:
16
32
  - fbazzarella@gmail.com
@@ -23,8 +39,12 @@ files:
23
39
  - LICENSE
24
40
  - README.md
25
41
  - Rakefile
42
+ - lib/generators/shuttle/install_generator.rb
43
+ - lib/generators/shuttle/templates/shuttle.yml
26
44
  - lib/shuttle.rb
45
+ - lib/shuttle/railtie.rb
27
46
  - lib/shuttle/version.rb
47
+ - lib/tasks/shuttle.rake
28
48
  - shuttle.gemspec
29
49
  homepage:
30
50
  licenses: []
@@ -50,6 +70,5 @@ rubygems_version: 1.8.24
50
70
  signing_key:
51
71
  specification_version: 3
52
72
  summary: Get a new code from another team members, install new gems, run new migrations,
53
- run specs and verify his code coverage and send your new feature to the origin repository.
54
- At the simplest way!
73
+ run specs and send your new feature to the origin repository. At the simplest way!
55
74
  test_files: []