t1k 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 45cd40e21fada7acc6cfd3abec506f886ac990d1
4
- data.tar.gz: 1d1c2be3e4c91e2258cb07b7b686ae64b01ad3e7
3
+ metadata.gz: c00fb15bd08b42750f3e4e1d68d2880ba7cee574
4
+ data.tar.gz: 9607d5c8562fad145232fd20bb49b4552e737bf5
5
5
  SHA512:
6
- metadata.gz: d69e38d46b4550587bcaf2c34bf68111630cc6f6e65e77788e9391d80c63d468d5518af86eeb09a59df80ae8e0ee064cebe9032fda025798a2ee42bffe8cccae
7
- data.tar.gz: 4dfeba2189c6ce63dfc2d8895e6378df92f844ac2934287ce0801f9cf8f6e3b6fd65ff7794fe3a5a4c1eb2c5be9c780b543d3f463624f2d8082d4bc729126530
6
+ metadata.gz: de69ffb11d0ecfc37b6b7be7a7978bf932bd3e67c32fc56f9ea77b61dabca50fc3ea8c626cda77b31a0b227f35ec9f04ddb5572b74651c9c0edea0a58d4d3e9a
7
+ data.tar.gz: ef59f6ef62749d076a5d1271f41f4307fd3b18466612a7b2efe56f2f196e360315d2748d17adcfc6a27559b21e660c0c38daabd47fafbba342234e9184913d7c
data/lib/t1k/command.rb CHANGED
@@ -4,6 +4,7 @@ require 't1k/commands/hack'
4
4
  require 't1k/commands/commit'
5
5
  require 't1k/commands/sink'
6
6
  require 't1k/commands/ship'
7
+ require 't1k/commands/pull_request'
7
8
 
8
9
  module T1k
9
10
  class CLI < Clive
@@ -70,5 +71,13 @@ module T1k
70
71
  opt :v, :version, 'Display the current version' do
71
72
  puts T1k::VERSION
72
73
  end
74
+
75
+ desc 'Send your code to remote branch. Not to master'
76
+ command :pr do
77
+
78
+ action do
79
+ Commands::PullRequest.run
80
+ end
81
+ end
73
82
  end
74
83
  end
@@ -0,0 +1,11 @@
1
+ module T1k
2
+ module Commands
3
+ class Branch
4
+ def self.actual_branch
5
+ branch = `git branch | grep '*' | awk '{print $2}'`
6
+
7
+ branch
8
+ end
9
+ end
10
+ end
11
+ end
@@ -7,13 +7,9 @@ module T1k
7
7
  text_close = ''
8
8
 
9
9
  raise "Message can't be blank. Use --no-message to ignore this rule." if message.empty? && !no_message
10
- branch = `git branch | grep '*' | awk '{print $2}'`
10
+ branch = T1k::Commands::Branch.actual_branch
11
11
 
12
- text_close = close ? 'close ' : 'ref'
13
-
14
- if close
15
- text_close = 'close '
16
- end
12
+ text_close = close ? 'close' : 'ref'
17
13
 
18
14
  text_add = add ? 'a' : ''
19
15
 
@@ -0,0 +1,23 @@
1
+ module T1k
2
+ module Commands
3
+ class PullRequest
4
+
5
+ def self.run
6
+ T1k::Commands::Sink.run
7
+
8
+ branch = T1k::Commands::Branch.actual_branch
9
+ pull = `git push origin #{branch.strip}`
10
+ self.open_browser pull
11
+ end
12
+
13
+ def self.open_browser pull
14
+ return 1 if pull.nil?
15
+ match = pull.match( /(https:\/\/[a-zA-Z].*=1)/)
16
+ if match
17
+ uri = match[0]
18
+ system "open #{uri}"
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -3,13 +3,40 @@ module T1k
3
3
  class Ship
4
4
 
5
5
  def self.run
6
- branch = `git branch | grep '*' | awk '{print $2}'`
7
- system "git checkout master"
8
- system "git pull --rebase"
9
- system "git merge #{branch.strip}"
10
- system "git commit -v"
11
- system "git push origin master"
6
+ T1k.setup_credentials
7
+
8
+ default_remote_branch = T1k::Repository.default_remote_branch
9
+ branch = T1k::Commands::Branch.actual_branch.strip
10
+
11
+ if default_remote_branch == :master
12
+ commands_if_master(branch)
13
+ elsif default_remote_branch == :branch
14
+ commands_if_branch(branch)
15
+ else
16
+ puts "Invalid default_remote_branch"
17
+ end
18
+ end
19
+
20
+ def self.commands_if_master(branch)
21
+ [ "git checkout master",
22
+ "git pull --rebase",
23
+ "git merge #{branch}",
24
+ "git commit -v",
25
+ "git push origin master"
26
+ ].each do |cmd|
27
+ system cmd
28
+ end
29
+ end
30
+
31
+ def self.commands_if_branch(branch)
32
+ [ "git checkout #{branch}",
33
+ "git pull --rebase",
34
+ "git commit -v",
35
+ "git push origin #{branch}"
36
+ ].each do |cmd|
37
+ system cmd
38
+ end
12
39
  end
13
40
  end
14
41
  end
15
- end
42
+ end
@@ -2,12 +2,37 @@ module T1k
2
2
  module Commands
3
3
  class Sink
4
4
  def self.run
5
- branch = `git branch | grep '*' | awk '{print $2}'`
6
- system "git checkout master"
7
- system "git pull --rebase origin master"
8
- system "git checkout #{branch.strip}"
9
- system "git rebase master #{branch.strip}"
5
+ T1k.setup_credentials
6
+
7
+ default_remote_branch = T1k::Repository.default_remote_branch
8
+ branch = T1k::Commands::Branch.actual_branch
9
+
10
+ if default_remote_branch == :master
11
+ commands_if_master(branch)
12
+ elsif default_remote_branch == :branch
13
+ commands_if_branch(branch)
14
+ else
15
+ puts "Invalid default_remote_branch"
16
+ end
17
+ end
18
+
19
+ def self.commands_if_master(branch)
20
+ [ "git checkout master",
21
+ "git pull --rebase origin master",
22
+ "git checkout #{branch.strip}",
23
+ "git rebase master #{branch.strip}"
24
+ ].each do |cmd|
25
+ system cmd
26
+ end
27
+ end
28
+
29
+ def self.commands_if_branch(branch)
30
+ [ "git checkout #{branch}",
31
+ "git pull --rebase",
32
+ ].each do |cmd|
33
+ system cmd
34
+ end
10
35
  end
11
36
  end
12
37
  end
13
- end
38
+ end
@@ -5,9 +5,9 @@ module T1k
5
5
  module Commands
6
6
  class Validate
7
7
 
8
- cattr_accessor :messages
8
+ mattr_accessor :messages
9
9
  @@messages = []
10
- @@errors = []
10
+ @@errors = []
11
11
 
12
12
  def self.run
13
13
  T1k.setup_credentials
@@ -1,21 +1,27 @@
1
1
  module T1k
2
2
  class Repository
3
+ PERMITTEDS_BRANCH_NAME = [
4
+ :branch, :master
5
+ ]
3
6
 
4
- cattr_accessor :adapter
5
-
7
+ mattr_accessor :adapter
6
8
  @@adapter = nil
7
9
 
10
+ cattr_accessor :default_remote_branch
11
+ @@default_remote_branch = ""
12
+
8
13
  def self.setup &block
9
14
  self.adapter.setup(&block) if block_given?
10
15
  end
11
16
 
12
17
  def self.adapter=(adapter_name)
13
- raise "Invalid adapter name. Adapter name must be a Symbol." unless adapter_name.class.eql?(Symbol)
18
+ raise "Invalid adapter name. Adapter name must either :master or :branch." unless adapter_name.class.eql?(Symbol)
14
19
  @@adapter = "T1k::Repositories::#{adapter_name.to_s.classify}".constantize
15
20
  end
16
21
 
17
22
  def self.default_repository
18
23
  @@adapter
19
24
  end
25
+
20
26
  end
21
27
  end
data/lib/t1k/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module T1k
2
- VERSION = "3.0.1"
2
+ VERSION = "3.0.2"
3
3
  end
data/lib/t1k.rb CHANGED
@@ -10,6 +10,7 @@ require 't1k/version'
10
10
  require 't1k/constants'
11
11
  require 't1k/command'
12
12
 
13
+ require 't1k/commands/branch'
13
14
 
14
15
  require_relative '../spec/support/kernel' if ENV["DEBUG"]
15
16
 
data/resources/T1000 CHANGED
@@ -19,6 +19,11 @@ T1k.setup do |config|
19
19
  # c.password = "#{ENV['BITBUCKET_PWD']}"
20
20
  # end
21
21
 
22
+ # config.repository.default_remote_branch = :master
23
+ # or
24
+ # config.repository.default_remote_branch = :branch
25
+ # |-> this option disables direct merge on origin master
26
+
22
27
  # Setup Trello board credentials
23
28
  #
24
29
  # Trello APP_DEVELOPER_KEY: https://trello.com/app-key
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,8 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter "/spec/"
4
+ end
5
+
1
6
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
7
  require 't1k'
8
+ require 'support/kernel.rb'
@@ -2,6 +2,14 @@ require 'clive'
2
2
 
3
3
  module Kernel
4
4
  def system(cmd)
5
- puts "#{cmd} was called".green.bold
5
+ puts "#{cmd}".green.bold
6
+ end
7
+
8
+ def `(cmd)
9
+ if cmd == "git branch | grep '*' | awk '{print $2}'"
10
+ 'branch_name'
11
+ else
12
+ puts "#{cmd}".green.bold
13
+ end
6
14
  end
7
15
  end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe T1k::Commands::Branch do
4
+ it 'does have the actual branch' do
5
+ expect(T1k::Commands::Branch.actual_branch).to eq("branch_name")
6
+ end
7
+ end
@@ -14,6 +14,14 @@ describe T1k::Commands::Commit do
14
14
  expect { T1k::Commands::Commit.run( message, close, add, no_message) }.to raise_error("Message can't be blank. Use --no-message to ignore this rule.")
15
15
  end
16
16
 
17
+
18
+ it "does not raise an exception" do
19
+ message = ""
20
+ no_message = true
21
+
22
+ expect { T1k::Commands::Commit.run( message, close, add, no_message) }.to_not raise_error("Message can't be blank. Use --no-message to ignore this rule.")
23
+ end
24
+
17
25
  it "it have to skip circle ci when is not a close commit" do
18
26
  close = false
19
27
  expect_any_instance_of(Kernel).to receive(:system).with("git commit -m '[ref#branch_name] teste'")
@@ -23,7 +31,7 @@ describe T1k::Commands::Commit do
23
31
 
24
32
  it "have to close the issue when close=true is passed" do
25
33
  close = true
26
- expect_any_instance_of(Kernel).to receive(:system).with("git commit -m '[close #branch_name] teste'")
34
+ expect_any_instance_of(Kernel).to receive(:system).with("git commit -m '[close#branch_name] teste'")
27
35
 
28
36
  T1k::Commands::Commit.run( msg, close, add, no_message)
29
37
  end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe T1k::Commands::Hack do
4
+
5
+ describe '#self.run' do
6
+
7
+ end
8
+
9
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe T1k::Commands::PullRequest do
4
+ subject { T1k::Commands::PullRequest }
5
+ context '#run' do
6
+ it 'have to sink' do
7
+ expect(T1k::Commands::Sink).to receive(:run)
8
+
9
+ subject.run
10
+ end
11
+
12
+ it 'have to push code to new branch' do
13
+ [
14
+ "git checkout master",
15
+ "git pull --rebase origin master",
16
+ "git checkout branch_name",
17
+ "git rebase master branch_name",
18
+ "git push origin branch_name"
19
+ ].each do |cmd|
20
+ allow_any_instance_of(Kernel).to receive(:system).with( cmd )
21
+ end
22
+
23
+ subject.run
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe T1k::Commands::Ship do
4
+ describe '#self.run' do
5
+
6
+ it "should checkout to master" do
7
+
8
+ [
9
+ "git checkout master",
10
+ "git pull --rebase",
11
+ "git merge branch_name",
12
+ "git commit -v",
13
+ "git push origin master"
14
+ ].each do |cmd|
15
+ allow_any_instance_of(Kernel).to receive(:system).with( cmd )
16
+ end
17
+
18
+ T1k::Commands::Ship.run
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+ module T1k
3
+ module Repositories
4
+ class Repo
5
+ end
6
+ end
7
+ end
8
+
9
+ describe T1k::Commands::Validate do
10
+ context "repository" do
11
+ it 'does have return the default repository' do
12
+ expect(T1k::Repository).to receive(:default_repository)
13
+
14
+ T1k::Commands::Validate.default_repository
15
+ end
16
+
17
+ it 'does have valid keys' do
18
+ T1k::Repository.adapter = :repo
19
+ expect(T1k::Commands::Validate.default_repository).to receive(:valid_keys?)
20
+
21
+ T1k::Commands::Validate.valid_keys_on_repository?
22
+ end
23
+ end
24
+ end
data/spec/t1k_spec.rb CHANGED
@@ -1,11 +1,63 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe T1k do
4
- it 'has a version number' do
5
- expect(T1k::VERSION).not_to be nil
4
+
5
+ context '' do
6
+
6
7
  end
7
8
 
8
- it 'does something useful' do
9
- expect(false).to eq(true)
9
+ context '#self.setup_credentials' do
10
+ context 'read a config file' do
11
+ context 'with valid data' do
12
+
13
+ before do
14
+ T1k.setup do |config|
15
+ config.repository.adapter = :bitbucket
16
+ end
17
+
18
+ subject.setup_credentials
19
+ end
20
+
21
+ context 'on repository' do
22
+ it 'sets default_repository' do
23
+ expect(T1k::Repository.default_repository).to_not be_nil
24
+ end
25
+
26
+ it 'default_repository should be Bitbucket' do
27
+ expect(T1k::Repository.default_repository).to eq(T1k::Repositories::Bitbucket)
28
+ end
29
+
30
+ it 'adapter should be Bitbucket' do
31
+ expect(T1k::Repository.adapter).to eq(T1k::Repositories::Bitbucket)
32
+ end
33
+ end
34
+
35
+ context 'on tracker' do
36
+ it 'adapter is trello' do
37
+ subject.setup_credentials
38
+ expect(T1k::Tracker.adapter).to eq(T1k::Trackers::Trello)
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ context 'with invalid data' do
45
+ it 'returns a error for repository' do
46
+ expect {
47
+ T1k.setup do |config|
48
+ config.repository.adapter = :invalid
49
+ end
50
+ }.to raise_error(NameError)
51
+ end
52
+
53
+
54
+ it 'returns a error for tracker' do
55
+ expect {
56
+ T1k.setup do |config|
57
+ config.tracker.adapter = :invalid
58
+ end
59
+ }.to raise_error(NameError)
60
+ end
61
+ end
10
62
  end
11
63
  end
data/t1k.gemspec CHANGED
@@ -19,8 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = ["t1k"]
20
20
  spec.require_paths = ["lib", "resources"]
21
21
 
22
- spec.add_development_dependency 'bundler', '~> 1.9'
23
- spec.add_development_dependency 'rake' , '~> 10.0'
22
+ spec.add_development_dependency 'bundler' , '~> 1.9'
23
+ spec.add_development_dependency 'rake' , '~> 10.0'
24
+ spec.add_development_dependency 'simplecov' , '~>0.11.2'
25
+ spec.add_development_dependency 'pry'
24
26
 
25
27
  spec.add_dependency 'ruby-trello' , '~> 1.2.1'
26
28
  spec.add_dependency 'github_api' , '~> 0.12'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: t1k
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Maia
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-08-31 00:00:00.000000000 Z
13
+ date: 2016-09-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -40,6 +40,34 @@ dependencies:
40
40
  - - ~>
41
41
  - !ruby/object:Gem::Version
42
42
  version: '10.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: simplecov
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: 0.11.2
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 0.11.2
57
+ - !ruby/object:Gem::Dependency
58
+ name: pry
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
43
71
  - !ruby/object:Gem::Dependency
44
72
  name: ruby-trello
45
73
  requirement: !ruby/object:Gem::Requirement
@@ -131,9 +159,11 @@ files:
131
159
  - ./bin/t1k
132
160
  - ./lib/t1k.rb
133
161
  - ./lib/t1k/command.rb
162
+ - ./lib/t1k/commands/branch.rb
134
163
  - ./lib/t1k/commands/commit.rb
135
164
  - ./lib/t1k/commands/hack.rb
136
165
  - ./lib/t1k/commands/init.rb
166
+ - ./lib/t1k/commands/pull_request.rb
137
167
  - ./lib/t1k/commands/ship.rb
138
168
  - ./lib/t1k/commands/sink.rb
139
169
  - ./lib/t1k/commands/validate.rb
@@ -149,7 +179,12 @@ files:
149
179
  - ./resources/T1000
150
180
  - ./spec/spec_helper.rb
151
181
  - ./spec/support/kernel.rb
182
+ - ./spec/t1k/commands/branch_spec.rb
152
183
  - ./spec/t1k/commands/commit_spec.rb
184
+ - ./spec/t1k/commands/hack_spec.rb
185
+ - ./spec/t1k/commands/pull_request_spec.rb
186
+ - ./spec/t1k/commands/ship_spec.rb
187
+ - ./spec/t1k/commands/validate_spec.rb
153
188
  - ./spec/t1k_spec.rb
154
189
  - ./t1k.gemspec
155
190
  - README.md