tachikoma 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/.travis.yml +12 -0
- data/Gemfile +0 -1
- data/README.md +9 -1
- data/Rakefile +8 -0
- data/bin/tachikoma +4 -0
- data/data/default.yaml +14 -0
- data/lib/tachikoma/settings.rb +32 -20
- data/lib/tachikoma/version.rb +1 -1
- data/lib/tasks/app.rake +34 -20
- data/spec/spec_helper.rb +19 -0
- data/spec/tachikoma/settings_spec.rb +16 -0
- data/tachikoma.gemspec +1 -0
- metadata +25 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5831a8f436e996a753de8fc6a391c7f372902725
|
4
|
+
data.tar.gz: b8355eba94d70b0902e4a313a3e9f9006f6a6dbc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eacae9f226657cf252527f3266d91c8ace937182aed4514ed308aa90f4ae28e55aa0236e859c236bdfa3c9e5fd28373fd50455be4b44fd34b7b8bc25cfd8936e
|
7
|
+
data.tar.gz: e24be4920aabea89393a85c55427bd6cedefa52b8166097554c66da0103e996565a8af6f8e3dcd8733e74d9e5f4c3d50bc289dddf81ee0f61496a94ca2c77491
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Tachikoma
|
2
2
|
|
3
|
-
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/tachikoma.png)](http://badge.fury.io/rb/tachikoma)
|
4
|
+
[![Build Status](https://api.travis-ci.org/sanemat/tachikoma.png?branch=master)](https://travis-ci.org/sanemat/tachikoma)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/sanemat/tachikoma.png)](https://codeclimate.com/github/sanemat/tachikoma)
|
6
|
+
|
7
|
+
Daily Pull Requester with bundle update. [Actual pull request](https://github.com/mrtaddy/fenix-knight/pull/25)
|
4
8
|
|
5
9
|
## Usage as gem
|
6
10
|
|
@@ -26,6 +30,10 @@ $ export TOKEN_YOUR_REPOSITORY_NAME_THAT_IS_SAME_TO_YAML_FILENAME=xxxxxxxxxxxxxx
|
|
26
30
|
$ bundle exec rake tachikoma:load tachikoma:fetch tachikoma:bundle tachikoma:pull_request
|
27
31
|
```
|
28
32
|
|
33
|
+
### Build script example
|
34
|
+
|
35
|
+
- [cloudbees.com dev@cloud](https://gist.github.com/sanemat/5859031)
|
36
|
+
|
29
37
|
## Contributing
|
30
38
|
|
31
39
|
1. Fork it
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'bundler/setup'
|
2
2
|
require "bundler/gem_tasks"
|
3
3
|
require "bundler/gem_helper"
|
4
|
+
require 'rspec/core/rake_task'
|
4
5
|
|
5
6
|
# http://qiita.com/kyanny/items/2de40ca0b5127a0f5c2a
|
6
7
|
#Rake::Task[:release].clear
|
@@ -18,3 +19,10 @@ if ENV['APP_ENV'] && %w(development test).include?(ENV['APP_ENV'])
|
|
18
19
|
require 'dotenv'
|
19
20
|
Dotenv.load
|
20
21
|
end
|
22
|
+
|
23
|
+
desc 'Run all specs in spec directory'
|
24
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
25
|
+
spec.rspec_opts = ['-cfd --backtrace']
|
26
|
+
end
|
27
|
+
|
28
|
+
task default: :spec
|
data/bin/tachikoma
CHANGED
@@ -15,6 +15,10 @@ require 'tachikoma/tasks'
|
|
15
15
|
EOS
|
16
16
|
end
|
17
17
|
FileUtils.mkdir_p('data')
|
18
|
+
File.open(File.join('data', '__user_config__.yaml'), 'w') do |f|
|
19
|
+
f << <<-EOS
|
20
|
+
EOS
|
21
|
+
end
|
18
22
|
File.open(File.join('data', 'bot-motoko-tachikoma.yaml'), 'w') do |f|
|
19
23
|
f << <<-EOS
|
20
24
|
url:
|
data/data/default.yaml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
commiter_name:
|
2
|
+
'bot-motoko'
|
3
|
+
commiter_email:
|
4
|
+
'bot-motoko@al.sane.jp'
|
5
|
+
github_account:
|
6
|
+
'bot-motoko'
|
7
|
+
base_remote_branch:
|
8
|
+
'origin/master'
|
9
|
+
timestamp_format:
|
10
|
+
'%Y%m%d%H%M%S'
|
11
|
+
pull_request_body:
|
12
|
+
':hamster::hamster::hamster:'
|
13
|
+
pull_request_base:
|
14
|
+
'master'
|
data/lib/tachikoma/settings.rb
CHANGED
@@ -1,30 +1,42 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
|
3
3
|
module Tachikoma
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
class << self
|
5
|
+
# ~/users-tachikoma-dir
|
6
|
+
def root_path
|
7
|
+
@root_path ||= Pathname.new Dir.pwd
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
def root_path=(root_path)
|
11
|
+
@root_path = Pathname.new File.expand_path(root_path)
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
# ~/users-tachikoma-dir/data
|
15
|
+
def data_path
|
16
|
+
@data_path ||= root_path.join('data')
|
17
|
+
end
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
def data_path=(data_path)
|
20
|
+
@data_path = Pathname.new File.expand_path(data_path)
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
# ~/users-tachikoma-dir/repos
|
24
|
+
def repos_path
|
25
|
+
@repos_path ||= root_path.join('repos')
|
26
|
+
end
|
27
|
+
|
28
|
+
def repos_path=(repos_path)
|
29
|
+
@repos_path = Pathname.new File.expand_path(repos_path)
|
30
|
+
end
|
31
|
+
|
32
|
+
# /path/to/gem/tachikoma
|
33
|
+
def original_root_path
|
34
|
+
@original_root_path ||= Pathname.new File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
|
35
|
+
end
|
26
36
|
|
27
|
-
|
28
|
-
|
37
|
+
# /path/to/gem/tachikoma/data
|
38
|
+
def original_data_path
|
39
|
+
@original_data_path ||= original_root_path.join('data')
|
40
|
+
end
|
29
41
|
end
|
30
42
|
end
|
data/lib/tachikoma/version.rb
CHANGED
data/lib/tasks/app.rake
CHANGED
@@ -5,6 +5,7 @@ require 'uri'
|
|
5
5
|
require 'tachikoma'
|
6
6
|
|
7
7
|
namespace :tachikoma do
|
8
|
+
# deprecated, this will be removed v3.1.0
|
8
9
|
@default_timestamp_format = '%Y%m%d%H%M%S'
|
9
10
|
|
10
11
|
# build_for = fenix-knight, github_token_key = TOKEN_FENIX_KNIGHT
|
@@ -32,9 +33,9 @@ namespace :tachikoma do
|
|
32
33
|
'https://api.github.com/repos/' + uri.path.sub(%r!^/(.*)\.git$!) { $1 } + '/pulls'
|
33
34
|
end
|
34
35
|
|
35
|
-
def target_repository_user(type, fetch_url,
|
36
|
+
def target_repository_user(type, fetch_url, github_account)
|
36
37
|
if type == 'fork'
|
37
|
-
|
38
|
+
github_account
|
38
39
|
elsif type == 'shared'
|
39
40
|
uri = URI.parse(fetch_url)
|
40
41
|
uri.path.sub(%r!/([^/]+)/.*!) { $1 }
|
@@ -46,40 +47,54 @@ namespace :tachikoma do
|
|
46
47
|
task :load do
|
47
48
|
@build_for = ENV['BUILD_FOR']
|
48
49
|
@github_token = ENV[github_token_key(@build_for)]
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
|
51
|
+
base_config_path = File.join(Tachikoma.original_data_path, 'default.yaml')
|
52
|
+
base_config = YAML.safe_load_file(base_config_path) || {}
|
53
|
+
user_config_path = File.join(Tachikoma.data_path, "__user_config__.yaml")
|
54
|
+
user_config = YAML.safe_load_file(user_config_path) if File.exist?(user_config_path)
|
55
|
+
user_config ||= {}
|
56
|
+
each_config_path = File.join(Tachikoma.data_path, "#{@build_for}.yaml")
|
57
|
+
each_config = YAML.safe_load_file(each_config_path) if File.exist?(each_config_path)
|
58
|
+
unless each_config
|
59
|
+
fail %Q!Something wrong, BUILD_FOR: #{@build_for}, your config_path: #{each_config_path}!
|
60
|
+
end
|
61
|
+
|
62
|
+
@configure = base_config.merge(user_config).merge(each_config)
|
63
|
+
|
64
|
+
@commiter_name = @configure['commiter_name']
|
65
|
+
@commiter_email = @configure['commiter_email']
|
66
|
+
@github_account = @configure['github_account']
|
53
67
|
@fetch_url = @configure['url']
|
54
|
-
@base_remote_branch = '
|
55
|
-
@authorized_url = authorized_url_with_type(@fetch_url, @configure['type'], @github_token, @
|
56
|
-
timestamp_format = @configure['timestamp_format'] || @default_timestamp_format
|
57
|
-
|
58
|
-
@readable_time = Time.now.utc.strftime(timestamp_format)
|
68
|
+
@base_remote_branch = @configure['base_remote_branch']
|
69
|
+
@authorized_url = authorized_url_with_type(@fetch_url, @configure['type'], @github_token, @github_account)
|
70
|
+
@timestamp_format = @configure['timestamp_format'] || @default_timestamp_format
|
71
|
+
@readable_time = Time.now.utc.strftime(@timestamp_format)
|
59
72
|
|
60
73
|
@target_url = target_url(@fetch_url)
|
61
74
|
@headers = {
|
62
|
-
'User-Agent' => "Tachikoma #{@
|
75
|
+
'User-Agent' => "Tachikoma #{@github_account}",
|
63
76
|
'Authorization' => "token #{@github_token}",
|
64
77
|
'Accept' => 'application/json',
|
65
78
|
'Content-type' => 'application/json',
|
66
79
|
}
|
67
|
-
@target_head = target_repository_user(@configure['type'], @fetch_url, @
|
80
|
+
@target_head = target_repository_user(@configure['type'], @fetch_url, @github_account)
|
81
|
+
@pull_request_body = @configure['pull_request_body']
|
82
|
+
@pull_request_base = @configure['pull_request_base']
|
68
83
|
@body = MultiJson.dump({
|
69
84
|
title: "Bundle update #{@readable_time}",
|
70
|
-
body:
|
85
|
+
body: @pull_request_body,
|
71
86
|
head: "#{@target_head}:feature/bundle-#{@readable_time}",
|
72
|
-
base:
|
87
|
+
base: @pull_request_base,
|
73
88
|
})
|
74
89
|
end
|
75
90
|
|
76
91
|
task :clean do
|
77
|
-
|
92
|
+
mkdir_p(Tachikoma.repos_path)
|
93
|
+
rm_rf(Dir.glob(File.join(Tachikoma.repos_path, '*')))
|
78
94
|
end
|
79
95
|
|
80
96
|
desc 'fetch'
|
81
97
|
task fetch: :clean do
|
82
|
-
mkdir_p(Tachikoma.repos_path.to_s)
|
83
98
|
sh "git clone #{@fetch_url} #{Tachikoma.repos_path.to_s}/#{@build_for}"
|
84
99
|
end
|
85
100
|
|
@@ -87,9 +102,8 @@ namespace :tachikoma do
|
|
87
102
|
task :bundle do
|
88
103
|
Dir.chdir("#{Tachikoma.repos_path.to_s}/#{@build_for}") do
|
89
104
|
Bundler.with_clean_env do
|
90
|
-
sh
|
91
|
-
sh "git config user.
|
92
|
-
sh "git config user.email #{@git_email}"
|
105
|
+
sh "git config user.name #{@commiter_name}"
|
106
|
+
sh "git config user.email #{@commiter_email}"
|
93
107
|
sh "git checkout -b feature/bundle-#{@readable_time} #{@base_remote_branch}"
|
94
108
|
sh 'bundle --gemfile Gemfile --no-deployment --without nothing'
|
95
109
|
sh 'bundle update'
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
|
+
config.run_all_when_everything_filtered = true
|
10
|
+
config.filter_run :focus
|
11
|
+
|
12
|
+
# Run specs in random order to surface order dependencies. If you find an
|
13
|
+
# order dependency and want to debug it, you can fix the order by providing
|
14
|
+
# the seed, which is printed after each run.
|
15
|
+
# --seed 1234
|
16
|
+
config.order = 'random'
|
17
|
+
end
|
18
|
+
|
19
|
+
require 'rspec/autorun'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'tachikoma/settings'
|
2
|
+
describe Tachikoma do
|
3
|
+
describe '.root_path' do
|
4
|
+
let(:somewhere) { '/path/to/somewhere' }
|
5
|
+
let(:datapath) { somewhere + '/data'}
|
6
|
+
let(:repospath) { somewhere + '/repos'}
|
7
|
+
|
8
|
+
before :each do
|
9
|
+
Dir.stub(:pwd).and_return(somewhere)
|
10
|
+
end
|
11
|
+
|
12
|
+
it { expect(described_class.root_path).to eq Pathname.new(somewhere) }
|
13
|
+
it { expect(described_class.data_path).to eq Pathname.new(datapath) }
|
14
|
+
it { expect(described_class.repos_path).to eq Pathname.new(repospath) }
|
15
|
+
end
|
16
|
+
end
|
data/tachikoma.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tachikoma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sanemat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 2.14.0.rc
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 2.14.0.rc
|
97
111
|
description: Interval pull requester with bundle update.
|
98
112
|
email:
|
99
113
|
- o.gata.ken@gmail.com
|
@@ -104,17 +118,22 @@ extra_rdoc_files: []
|
|
104
118
|
files:
|
105
119
|
- .env.example
|
106
120
|
- .gitignore
|
121
|
+
- .rspec
|
122
|
+
- .travis.yml
|
107
123
|
- Gemfile
|
108
124
|
- LICENSE.txt
|
109
125
|
- NOTE.txt
|
110
126
|
- README.md
|
111
127
|
- Rakefile
|
112
128
|
- bin/tachikoma
|
129
|
+
- data/default.yaml
|
113
130
|
- lib/tachikoma.rb
|
114
131
|
- lib/tachikoma/settings.rb
|
115
132
|
- lib/tachikoma/tasks.rb
|
116
133
|
- lib/tachikoma/version.rb
|
117
134
|
- lib/tasks/app.rake
|
135
|
+
- spec/spec_helper.rb
|
136
|
+
- spec/tachikoma/settings_spec.rb
|
118
137
|
- tachikoma.gemspec
|
119
138
|
homepage: https://github.com/sanemat/tachikoma
|
120
139
|
licenses:
|
@@ -136,8 +155,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
155
|
version: '0'
|
137
156
|
requirements: []
|
138
157
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.0.
|
158
|
+
rubygems_version: 2.0.3
|
140
159
|
signing_key:
|
141
160
|
specification_version: 4
|
142
161
|
summary: Update gem frequently gets less pain. Let's doing bundle update as a habit!
|
143
|
-
test_files:
|
162
|
+
test_files:
|
163
|
+
- spec/spec_helper.rb
|
164
|
+
- spec/tachikoma/settings_spec.rb
|