ci_tasks 0.1.0

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1,2 @@
1
+ rvm_install_on_use_flag=1
2
+ rvm use --create 1.9.3@common-ci-tasks
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,3 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'tasks/*.rake')].each { |rake| load rake }
2
+
3
+ task :default => 'gem:build'
@@ -0,0 +1,29 @@
1
+ __Using__
2
+
3
+ add following in the development, test group in Gemfile
4
+
5
+ gem 'rack-test'
6
+ Add Tasks via Rakefile
7
+
8
+ require 'ci_tasks'
9
+ require 'ci_tasks/metric_fu/sinatra'
10
+
11
+ Add to spec_helper.rb
12
+ require 'ci_tasks/simplecov/sinatra'
13
+
14
+
15
+ For Rails use the rails version of the files at
16
+
17
+ require 'ci_tasks/simplecov/rails'
18
+ require 'ci_tasks/metric_fu/rails'
19
+
20
+ __Build__
21
+
22
+ Update Gemversion in version.rb, Ensure all files are commited and run
23
+ rake build
24
+ __Sample push to gemserver__
25
+
26
+ gem inabox pkg/ci-tasks-0.0.1.gem --host http://gemserver.dev
27
+
28
+
29
+
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "ci_tasks/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "ci_tasks"
7
+ s.version = Ci::Tasks::VERSION
8
+ s.authors = ["Carlos Villela, Rajat Vig, Irfan Shah et al"]
9
+ s.email = ["opensource@thoughtworks.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{CI Tasks}
12
+ s.description = %q{Common tasks to be executed in Continuous Integration environments. VERY ALPHA!}
13
+
14
+ s.rubyforge_project = "ci_tasks"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_runtime_dependency "rspec"
22
+ s.add_runtime_dependency "rake"
23
+ s.add_runtime_dependency "metric_fu"
24
+ s.add_runtime_dependency "simplecov"
25
+ s.add_runtime_dependency "fattr"
26
+ s.add_runtime_dependency "arrayfields"
27
+ s.add_runtime_dependency "map"
28
+ s.add_runtime_dependency "magic_encoding"
29
+
30
+ s.add_development_dependency "geminabox"
31
+ end
@@ -0,0 +1,17 @@
1
+ require 'ci_tasks/version'
2
+
3
+ require 'rake'
4
+
5
+ require 'ci_tasks/config'
6
+
7
+ if CiTasks::Config.rails?
8
+ require 'ci_tasks/railtie'
9
+ else
10
+ require 'rspec/core/rake_task'
11
+ require 'rspec/core/version'
12
+
13
+ load 'ci_tasks/tasks/ci.rake'
14
+ load 'ci_tasks/tasks/whitespace.rake'
15
+ load 'ci_tasks/tasks/magic_encoding.rake'
16
+ end
17
+
@@ -0,0 +1,12 @@
1
+ module CiTasks
2
+ class Config
3
+ def self.configuration
4
+ rails? ? :rails : :sinatra
5
+ end
6
+
7
+ def self.rails?
8
+ Rails rescue nil
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ require 'metric_fu'
2
+ require File.expand_path(File.dirname(__FILE__) + '/config')
3
+ require File.expand_path(File.dirname(__FILE__) + "/metric_fu/#{CiTasks::Config.configuration}")
@@ -0,0 +1,8 @@
1
+ begin
2
+ MetricFu::Configuration.run do |config|
3
+ config.metrics = [:churn, :stats, :flog, :flay, :reek, :rails_best_practices]
4
+ config.graphs = [:flog, :flay, :stats, :reek]
5
+ end
6
+ rescue LoadError
7
+ puts 'metric_fu not found: metrics collection and generation disabled'
8
+ end
@@ -0,0 +1,9 @@
1
+ begin
2
+ MetricFu::Configuration.run do |config|
3
+ config.metrics = [:churn, :flog, :flay, :reek]
4
+ config.graphs = [:flog, :flay, :reek]
5
+ config.reek = { :dirs_to_reek => ['lib'] }
6
+ end
7
+ rescue LoadError
8
+ puts 'metric_fu not found: metrics collection and generation disabled'
9
+ end
@@ -0,0 +1,11 @@
1
+ require "rails/railtie"
2
+
3
+ module CiTasks
4
+ class Railtie < Rails::Railtie
5
+ rake_tasks do
6
+ load "ci_tasks/tasks/ci.rake"
7
+ load 'ci_tasks/tasks/whitespace.rake'
8
+ load 'ci_tasks/tasks/magic_encoding.rake'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ if ENV["COVERAGE"]
2
+ require 'simplecov'
3
+ require File.expand_path(File.dirname(__FILE__) + '/config')
4
+ require File.expand_path(File.dirname(__FILE__) + "/simplecov/#{CiTasks::Config.configuration}")
5
+ end
@@ -0,0 +1,4 @@
1
+ SimpleCov.start 'rails' do
2
+ add_filter '/.bundle/'
3
+ end
4
+
@@ -0,0 +1,19 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.adapters.define 'sinatra' do
4
+ add_filter '/spec/'
5
+ add_filter '/config/'
6
+ add_filter '/vendor/'
7
+ add_filter '/.bundle/'
8
+
9
+ add_group 'Models', 'lib/'
10
+ end
11
+
12
+ if ENV["COVERAGE"]
13
+ SimpleCov.start 'sinatra'
14
+
15
+ SimpleCov.at_exit do
16
+ SimpleCov.result.format!
17
+ puts "Code coverage: #{SimpleCov.result.covered_percent.round(2)}%"
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ task :set_ci_env do
2
+ ENV['COVERAGE'] ||= '1'
3
+ ENV['CC_BUILD_ARTIFACTS'] = 'On'
4
+ end
5
+
6
+ unless CiTasks::Config.rails?
7
+ desc 'Run all examples'
8
+ RSpec::Core::RakeTask.new(:spec)
9
+ end
10
+
11
+ namespace :spec do
12
+ desc 'Run coverage'
13
+ task :cov => [ 'set_ci_env', 'spec' ]
14
+ end
15
+
16
+ ci_tasks = [ 'set_ci_env', 'spec', 'metrics:all']
17
+ ci_tasks.push 'jasmine:ci', 'spinach' if CiTasks::Config.rails?
18
+
19
+ desc 'Runs specs, coverage, features and metrics. Should be run on the ci loop'
20
+ task :ci => ci_tasks
@@ -0,0 +1,6 @@
1
+ require 'magic_encoding'
2
+
3
+ desc "Adds the magic encoding comment (Ruby 1.9) to all Ruby files"
4
+ task :magic_encoding do
5
+ AddMagicComment.process []
6
+ end
@@ -0,0 +1,65 @@
1
+ class WhitespaceCheck < Struct.new(:pattern, :message)
2
+ def lines
3
+ @lines ||= []
4
+ end
5
+
6
+ def check(line, number)
7
+ lines << number if line =~ pattern
8
+ end
9
+
10
+ def error_for(file)
11
+ "#{file} #{message} on lines #{lines.join(',')}" unless lines.empty?
12
+ end
13
+
14
+ def self.whitespace_errors_for(files)
15
+ @whitespace_errors ||= files.inject([]) do |errors, filename|
16
+ whitespace_checks = [
17
+ WhitespaceCheck.new(/\s+\n$/, "has EOL spaces"),
18
+ WhitespaceCheck.new(/\r/, "has DOS EOL characters"),
19
+ WhitespaceCheck.new(/\t/, "has tab characters")
20
+ ]
21
+
22
+ File.readlines(filename).each_with_index do |line, number|
23
+ whitespace_checks.each {|w| w.check(line, number+1)}
24
+ end
25
+
26
+ errors += whitespace_checks.map {|m| m.error_for(filename)}.compact
27
+ end
28
+ end
29
+ end
30
+
31
+ desc "Checks for whitespace problems"
32
+ task :whitespace do
33
+ INCLUDE = [
34
+ /\.rb$/,
35
+ /\.erb$/,
36
+ /\.haml$/,
37
+ /\.js$/,
38
+ /\.yml$/,
39
+ /\.slim$/,
40
+ /\.css$/,
41
+ /\.sass$/,
42
+ /\.scss$/,
43
+ /\.gemspec$/,
44
+ /\.rake$/,
45
+ /Gemfile$/,
46
+ /Capfile$/,
47
+ /Rakefile$/,
48
+ ]
49
+ EXCLUDE = [
50
+ /^vendor\//,
51
+ /^coverage\//,
52
+ /^tmp\//,
53
+ ]
54
+
55
+ files = `git ls-files -c -m -o`.split("\n").select do |f|
56
+ INCLUDE.any? {|filter| f =~ filter } &&
57
+ EXCLUDE.none? {|filter| f =~ filter }
58
+ end
59
+
60
+ errors = WhitespaceCheck.whitespace_errors_for(files)
61
+ if errors.any?
62
+ puts errors.join("\n")
63
+ raise "This project has whitespace errors. Please fix them before proceeding."
64
+ end
65
+ end
@@ -0,0 +1,5 @@
1
+ module Ci
2
+ module Tasks
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,30 @@
1
+ require 'bundler'
2
+
3
+ namespace :gem do
4
+
5
+ Bundler::GemHelper.install_tasks
6
+
7
+ task :server do
8
+ raise "Please set your GEM_SERVER variable" unless ENV['GEM_SERVER']
9
+ end
10
+
11
+ desc "Push the latest gem to the server"
12
+ task :push => :server do
13
+ sh "bundle exec gem inabox #{built_gem_path} --host #{ENV['GEM_SERVER']}"
14
+ end
15
+
16
+ desc "Delete the latest gem from the server"
17
+ task :delete => :server do
18
+ sh "curl -X DELETE #{ENV['GEM_SERVER']}/gems/#{built_gem_path.gsub('pkg/','')}"
19
+ end
20
+
21
+ desc "Update the gem (build, delete and push)"
22
+ task :update => [ :build, :delete, :push ]
23
+
24
+ private
25
+
26
+ def built_gem_path
27
+ Dir[File.join("pkg/ci_tasks-*.gem")].sort_by{|f| File.mtime(f)}.last
28
+ end
29
+
30
+ end
metadata ADDED
@@ -0,0 +1,166 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ci_tasks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Carlos Villela, Rajat Vig, Irfan Shah et al
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &70302789731500 !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: *70302789731500
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70302789731080 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70302789731080
36
+ - !ruby/object:Gem::Dependency
37
+ name: metric_fu
38
+ requirement: &70302789730660 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70302789730660
47
+ - !ruby/object:Gem::Dependency
48
+ name: simplecov
49
+ requirement: &70302789730240 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70302789730240
58
+ - !ruby/object:Gem::Dependency
59
+ name: fattr
60
+ requirement: &70302789729820 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70302789729820
69
+ - !ruby/object:Gem::Dependency
70
+ name: arrayfields
71
+ requirement: &70302789729400 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *70302789729400
80
+ - !ruby/object:Gem::Dependency
81
+ name: map
82
+ requirement: &70302789728980 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *70302789728980
91
+ - !ruby/object:Gem::Dependency
92
+ name: magic_encoding
93
+ requirement: &70302789728560 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *70302789728560
102
+ - !ruby/object:Gem::Dependency
103
+ name: geminabox
104
+ requirement: &70302789728140 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70302789728140
113
+ description: Common tasks to be executed in Continuous Integration environments. VERY
114
+ ALPHA!
115
+ email:
116
+ - opensource@thoughtworks.com
117
+ executables: []
118
+ extensions: []
119
+ extra_rdoc_files: []
120
+ files:
121
+ - .gitignore
122
+ - .rvmrc
123
+ - Gemfile
124
+ - Rakefile
125
+ - Readme.md
126
+ - ci_tasks.gemspec
127
+ - lib/ci_tasks.rb
128
+ - lib/ci_tasks/config.rb
129
+ - lib/ci_tasks/metric_fu.rb
130
+ - lib/ci_tasks/metric_fu/rails.rb
131
+ - lib/ci_tasks/metric_fu/sinatra.rb
132
+ - lib/ci_tasks/railtie.rb
133
+ - lib/ci_tasks/simplecov.rb
134
+ - lib/ci_tasks/simplecov/rails.rb
135
+ - lib/ci_tasks/simplecov/sinatra.rb
136
+ - lib/ci_tasks/tasks/ci.rake
137
+ - lib/ci_tasks/tasks/magic_encoding.rake
138
+ - lib/ci_tasks/tasks/whitespace.rake
139
+ - lib/ci_tasks/version.rb
140
+ - tasks/gemserver.rake
141
+ homepage: ''
142
+ licenses: []
143
+ post_install_message:
144
+ rdoc_options: []
145
+ require_paths:
146
+ - lib
147
+ required_ruby_version: !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ requirements: []
160
+ rubyforge_project: ci_tasks
161
+ rubygems_version: 1.8.12
162
+ signing_key:
163
+ specification_version: 3
164
+ summary: CI Tasks
165
+ test_files: []
166
+ has_rdoc: