papa 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.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +0 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +39 -0
- data/Rakefile +6 -0
- data/exe/papa +6 -0
- data/lib/papa.rb +11 -0
- data/lib/papa/cli.rb +17 -0
- data/lib/papa/command.rb +42 -0
- data/lib/papa/command_queue.rb +34 -0
- data/lib/papa/common.rb +4 -0
- data/lib/papa/common/add.rb +62 -0
- data/lib/papa/common/finish.rb +56 -0
- data/lib/papa/common/start.rb +30 -0
- data/lib/papa/git.rb +62 -0
- data/lib/papa/git/checkout.rb +14 -0
- data/lib/papa/git/merge.rb +27 -0
- data/lib/papa/git/rebase.rb +27 -0
- data/lib/papa/hotfix.rb +37 -0
- data/lib/papa/hotfix/add.rb +9 -0
- data/lib/papa/hotfix/finish.rb +11 -0
- data/lib/papa/hotfix/start.rb +9 -0
- data/lib/papa/output.rb +13 -0
- data/lib/papa/release.rb +47 -0
- data/lib/papa/release/add.rb +9 -0
- data/lib/papa/release/finish.rb +10 -0
- data/lib/papa/release/patch.rb +30 -0
- data/lib/papa/release/start.rb +9 -0
- data/lib/papa/sandbox.rb +12 -0
- data/lib/papa/sandbox/branches/bugfix/4-fix-charmeleon-spelling/Gemfile +24 -0
- data/lib/papa/sandbox/branches/bugfix/5-fix-gem-source/Gemfile +24 -0
- data/lib/papa/sandbox/branches/feature/1-add-butterfree-gem/Gemfile +25 -0
- data/lib/papa/sandbox/branches/feature/2-add-beedrill-gem/Gemfile +25 -0
- data/lib/papa/sandbox/branches/feature/6-add-pidgeotto-gem/Gemfile +26 -0
- data/lib/papa/sandbox/branches/feature/7-add-pidgeot-gem/Gemfile +26 -0
- data/lib/papa/sandbox/branches/master/Gemfile +24 -0
- data/lib/papa/sandbox/branches/patch/17.8.0/3-add-pidgey-gem/Gemfile +26 -0
- data/lib/papa/sandbox/generate.rb +177 -0
- data/lib/papa/thor.rb +5 -0
- data/lib/papa/version.rb +3 -0
- data/papa.gemspec +31 -0
- metadata +145 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
source "https://pokemon.org"
|
3
|
+
|
4
|
+
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
5
|
+
|
6
|
+
gem "bulbasaur"
|
7
|
+
gem "ivysaur"
|
8
|
+
gem "venusaur"
|
9
|
+
gem "charmander"
|
10
|
+
gem "charmelon"
|
11
|
+
gem "charizard"
|
12
|
+
gem "squirtle"
|
13
|
+
gem "wartortle"
|
14
|
+
gem "blastoise"
|
15
|
+
|
16
|
+
group :development, :test do
|
17
|
+
gem "caterpie"
|
18
|
+
gem "metapod"
|
19
|
+
end
|
20
|
+
|
21
|
+
group :test do
|
22
|
+
gem "weedle"
|
23
|
+
gem "kakuna"
|
24
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
source "https://pokemon.org"
|
3
|
+
|
4
|
+
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
5
|
+
|
6
|
+
gem "bulbasaur"
|
7
|
+
gem "ivysaur"
|
8
|
+
gem "venusaur"
|
9
|
+
gem "charmander"
|
10
|
+
gem "charmelon"
|
11
|
+
gem "charizard"
|
12
|
+
gem "squirtle"
|
13
|
+
gem "wartortle"
|
14
|
+
gem "blastoise"
|
15
|
+
|
16
|
+
group :development, :test do
|
17
|
+
gem "caterpie"
|
18
|
+
gem "metapod"
|
19
|
+
end
|
20
|
+
|
21
|
+
group :test do
|
22
|
+
gem "weedle"
|
23
|
+
gem "kakuna"
|
24
|
+
end
|
25
|
+
|
26
|
+
gem "pidgey"
|
@@ -0,0 +1,177 @@
|
|
1
|
+
module Papa
|
2
|
+
class Sandbox::Generate
|
3
|
+
attr_accessor :remote_repository_directory, :local_repository_directory, :git_details
|
4
|
+
|
5
|
+
def initialize(options = {})
|
6
|
+
@options = options
|
7
|
+
@remote_repository_directory = '/tmp/papa_sandbox_remote_repository'
|
8
|
+
@local_repository_directory = '/tmp/papa_sandbox_local_repository'
|
9
|
+
@git_details = [
|
10
|
+
{
|
11
|
+
commit: 'APP-1 - Add butterfree gem',
|
12
|
+
branch: 'feature/1-add-butterfree-gem',
|
13
|
+
base_branch: 'develop'
|
14
|
+
},
|
15
|
+
{
|
16
|
+
commit: 'APP-2 - Add beedrill gem',
|
17
|
+
branch: 'feature/2-add-beedrill-gem',
|
18
|
+
base_branch: 'develop'
|
19
|
+
},
|
20
|
+
{
|
21
|
+
commit: 'APP-3 - Add pidgey gem',
|
22
|
+
branch: 'patch/17.8.0/3-add-pidgey-gem',
|
23
|
+
base_branch: 'develop'
|
24
|
+
},
|
25
|
+
{
|
26
|
+
commit: 'APP-4 - Fix charmeleon spelling',
|
27
|
+
branch: 'bugfix/4-fix-charmeleon-spelling',
|
28
|
+
base_branch: 'master'
|
29
|
+
},
|
30
|
+
{
|
31
|
+
commit: 'APP-5 - Fix gem source',
|
32
|
+
branch: 'bugfix/5-fix-gem-source',
|
33
|
+
base_branch: 'master'
|
34
|
+
},
|
35
|
+
{
|
36
|
+
commit: 'APP-6 - Add pidgeotto gem',
|
37
|
+
branch: 'feature/6-add-pidgeotto-gem',
|
38
|
+
base_branch: 'develop'
|
39
|
+
},
|
40
|
+
{
|
41
|
+
commit: 'APP-7 - Add pidgeot gem',
|
42
|
+
branch: 'feature/7-add-pidgeot-gem',
|
43
|
+
base_branch: 'develop'
|
44
|
+
}
|
45
|
+
]
|
46
|
+
end
|
47
|
+
|
48
|
+
def run(options = {})
|
49
|
+
Output.stdout('Generating sandbox...') unless options[:silent]
|
50
|
+
@project_directory = File.expand_path(File.dirname(__dir__))
|
51
|
+
@branches_directory = File.join @project_directory, 'sandbox', 'branches'
|
52
|
+
setup_remote_repository
|
53
|
+
setup_local_repository
|
54
|
+
success_message unless options[:silent]
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def gemfile_path(branch)
|
60
|
+
File.join @branches_directory, branch, 'Gemfile'
|
61
|
+
end
|
62
|
+
|
63
|
+
def temp_gemfile_path
|
64
|
+
File.join @local_repository_directory, 'Gemfile'
|
65
|
+
end
|
66
|
+
|
67
|
+
def setup_remote_repository
|
68
|
+
if @options[:override_origin]
|
69
|
+
create_local_repository_directory
|
70
|
+
initialize_local_repository
|
71
|
+
remove_old_branches_from_origin
|
72
|
+
else
|
73
|
+
create_remote_repository_directory
|
74
|
+
initialize_remote_repository
|
75
|
+
create_local_repository_directory
|
76
|
+
clone_remote_repository
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def create_local_repository_directory
|
81
|
+
Command.new("rm -rf #{@local_repository_directory}").run
|
82
|
+
Dir.mkdir @local_repository_directory
|
83
|
+
end
|
84
|
+
|
85
|
+
def initialize_local_repository
|
86
|
+
Dir.chdir @local_repository_directory
|
87
|
+
Command.new('git init').run
|
88
|
+
Command.new("git remote add origin #{@options[:override_origin]}").run
|
89
|
+
end
|
90
|
+
|
91
|
+
def create_remote_repository_directory
|
92
|
+
Command.new("rm -rf #{@remote_repository_directory}").run
|
93
|
+
Dir.mkdir @remote_repository_directory
|
94
|
+
end
|
95
|
+
|
96
|
+
def initialize_remote_repository
|
97
|
+
Dir.chdir @remote_repository_directory
|
98
|
+
Command.new('git init --bare').run
|
99
|
+
end
|
100
|
+
|
101
|
+
def clone_remote_repository
|
102
|
+
Command.new("git clone #{@remote_repository_directory} #{@local_repository_directory}").run
|
103
|
+
Dir.chdir @local_repository_directory
|
104
|
+
end
|
105
|
+
|
106
|
+
def setup_local_repository
|
107
|
+
initialize_master_and_develop
|
108
|
+
initialize_branches
|
109
|
+
cleanup
|
110
|
+
end
|
111
|
+
|
112
|
+
def remove_old_branches_from_origin
|
113
|
+
`git fetch #{Output::REDIRECT_TO_NULL}`
|
114
|
+
['hotfix', 'release'].each do |branch|
|
115
|
+
`git branch -r | grep #{branch}`.split("\n").each do |branch|
|
116
|
+
branch = branch.strip.split('origin/').last
|
117
|
+
`git push -d origin #{branch}`
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def initialize_master_and_develop
|
123
|
+
[
|
124
|
+
"cp #{gemfile_path('master')} #{@local_repository_directory}",
|
125
|
+
'git add .',
|
126
|
+
'git commit -m "Initial commit"',
|
127
|
+
'git push origin master --force',
|
128
|
+
'git checkout -b develop',
|
129
|
+
'git push origin develop --force'
|
130
|
+
].each do |command|
|
131
|
+
`#{command} #{Output::REDIRECT_TO_NULL}`
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def initialize_branches
|
136
|
+
@git_details.each do |detail|
|
137
|
+
commit = detail[:commit]
|
138
|
+
branch = detail[:branch]
|
139
|
+
base_branch = detail[:base_branch]
|
140
|
+
[
|
141
|
+
"git checkout #{base_branch}",
|
142
|
+
"git checkout -b #{branch}",
|
143
|
+
"rm #{temp_gemfile_path}",
|
144
|
+
"cp #{gemfile_path(branch)} #{@local_repository_directory}",
|
145
|
+
"git add .",
|
146
|
+
"git commit -m \"#{commit}\"",
|
147
|
+
"git push origin #{branch} --force"
|
148
|
+
].each do |command|
|
149
|
+
`#{command} #{Output::REDIRECT_TO_NULL}`
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def cleanup
|
155
|
+
`git checkout develop #{Output::REDIRECT_TO_NULL}`
|
156
|
+
@git_details.each do |detail|
|
157
|
+
`git branch -D #{detail[:branch]} #{Output::REDIRECT_TO_NULL}`
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def success_message
|
162
|
+
Output.stdout <<-STDOUT
|
163
|
+
Your sandbox is now available at:
|
164
|
+
#{@local_repository_directory}
|
165
|
+
STDOUT
|
166
|
+
end
|
167
|
+
|
168
|
+
def override_origin(origin)
|
169
|
+
[
|
170
|
+
'git remote remove origin',
|
171
|
+
'git remote add origin #{origin}'
|
172
|
+
].each do |command|
|
173
|
+
`#{command} #{Output::REDIRECT_TO_NULL}`
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
data/lib/papa/thor.rb
ADDED
data/lib/papa/version.rb
ADDED
data/papa.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "papa/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "papa"
|
8
|
+
spec.version = Papa::VERSION
|
9
|
+
spec.authors = ["boggs"]
|
10
|
+
spec.email = ["hello@boggs.xyz"]
|
11
|
+
|
12
|
+
spec.summary = "Helper gem for inDinero's git workflow"
|
13
|
+
spec.description = "Helper gem for inDinero's git workflow"
|
14
|
+
spec.homepage = "https://github.com/b-ggs/papa"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.required_ruby_version = ">= 2.1.5"
|
25
|
+
|
26
|
+
spec.add_dependency "thor", "~> 0.20.0"
|
27
|
+
|
28
|
+
spec.add_development_dependency "bundler", "~> 1.15"
|
29
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
30
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: papa
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- boggs
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-09-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.20.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.20.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.15'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.15'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
description: Helper gem for inDinero's git workflow
|
70
|
+
email:
|
71
|
+
- hello@boggs.xyz
|
72
|
+
executables:
|
73
|
+
- papa
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- ".gitignore"
|
78
|
+
- ".rspec"
|
79
|
+
- ".travis.yml"
|
80
|
+
- CHANGELOG.md
|
81
|
+
- Gemfile
|
82
|
+
- LICENSE.txt
|
83
|
+
- README.md
|
84
|
+
- Rakefile
|
85
|
+
- exe/papa
|
86
|
+
- lib/papa.rb
|
87
|
+
- lib/papa/cli.rb
|
88
|
+
- lib/papa/command.rb
|
89
|
+
- lib/papa/command_queue.rb
|
90
|
+
- lib/papa/common.rb
|
91
|
+
- lib/papa/common/add.rb
|
92
|
+
- lib/papa/common/finish.rb
|
93
|
+
- lib/papa/common/start.rb
|
94
|
+
- lib/papa/git.rb
|
95
|
+
- lib/papa/git/checkout.rb
|
96
|
+
- lib/papa/git/merge.rb
|
97
|
+
- lib/papa/git/rebase.rb
|
98
|
+
- lib/papa/hotfix.rb
|
99
|
+
- lib/papa/hotfix/add.rb
|
100
|
+
- lib/papa/hotfix/finish.rb
|
101
|
+
- lib/papa/hotfix/start.rb
|
102
|
+
- lib/papa/output.rb
|
103
|
+
- lib/papa/release.rb
|
104
|
+
- lib/papa/release/add.rb
|
105
|
+
- lib/papa/release/finish.rb
|
106
|
+
- lib/papa/release/patch.rb
|
107
|
+
- lib/papa/release/start.rb
|
108
|
+
- lib/papa/sandbox.rb
|
109
|
+
- lib/papa/sandbox/branches/bugfix/4-fix-charmeleon-spelling/Gemfile
|
110
|
+
- lib/papa/sandbox/branches/bugfix/5-fix-gem-source/Gemfile
|
111
|
+
- lib/papa/sandbox/branches/feature/1-add-butterfree-gem/Gemfile
|
112
|
+
- lib/papa/sandbox/branches/feature/2-add-beedrill-gem/Gemfile
|
113
|
+
- lib/papa/sandbox/branches/feature/6-add-pidgeotto-gem/Gemfile
|
114
|
+
- lib/papa/sandbox/branches/feature/7-add-pidgeot-gem/Gemfile
|
115
|
+
- lib/papa/sandbox/branches/master/Gemfile
|
116
|
+
- lib/papa/sandbox/branches/patch/17.8.0/3-add-pidgey-gem/Gemfile
|
117
|
+
- lib/papa/sandbox/generate.rb
|
118
|
+
- lib/papa/thor.rb
|
119
|
+
- lib/papa/version.rb
|
120
|
+
- papa.gemspec
|
121
|
+
homepage: https://github.com/b-ggs/papa
|
122
|
+
licenses:
|
123
|
+
- MIT
|
124
|
+
metadata: {}
|
125
|
+
post_install_message:
|
126
|
+
rdoc_options: []
|
127
|
+
require_paths:
|
128
|
+
- lib
|
129
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 2.1.5
|
134
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
requirements: []
|
140
|
+
rubyforge_project:
|
141
|
+
rubygems_version: 2.6.10
|
142
|
+
signing_key:
|
143
|
+
specification_version: 4
|
144
|
+
summary: Helper gem for inDinero's git workflow
|
145
|
+
test_files: []
|