roro 0.1.1 → 0.1.3

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
- SHA1:
3
- metadata.gz: 8785a69852a94916710e3a3e11735e850ca39549
4
- data.tar.gz: b26a42ce7df419812da00458b851b3e7877b3ccd
2
+ SHA256:
3
+ metadata.gz: e3d068251958b75df2f13517e4b317da0a97d1b5f42e6e5fc1f15b9baae4c041
4
+ data.tar.gz: 060b40161e644e79c332912f8cb1bbda35833814177c42edd2052ed4224cf181
5
5
  SHA512:
6
- metadata.gz: 545508ba70759f7d51e93c17f22e7c85b6c05353051afa3c2d7bbef3856606853c6b25247fbfbdfcbaac2cb1a2e60163a4b989dcefa12bfad4702b198a50a968
7
- data.tar.gz: 3b323886a568f6ae9e18ea7e8ad8f556584d73223600b8ed2ce05dbcd73bb3d66e9c5d9fe80ef440688756fa68e9b1802843fa59d6567f79bcee93239d1616f8
6
+ metadata.gz: f8f383bbf9a5358045323d200ce96c6b3d04045f7534c8fa33352d98d729ded80150b38fed00eb8a5404a4154d6fa872559ab790d48c784b3bb09380085b0e0c
7
+ data.tar.gz: 70e9dd8395b2b5c11ce0bfb34f4a55cacca1815e762ebbd8c22e7218fb5fed1dbd196a2c001260098028e22d1cbf4b6a0111a5a8513e9428357c6c5b509d7b60
data/.circleci/config.yml CHANGED
@@ -4,22 +4,35 @@ defaults: &defaults
4
4
  version: 2
5
5
 
6
6
  jobs:
7
+
7
8
  build:
9
+ machine: true
10
+ steps:
11
+ - checkout
12
+
13
+ test:
8
14
  docker:
9
15
  - image: circleci/ruby:2.5.3
10
16
  steps:
11
17
  - checkout
18
+ - setup_remote_docker
19
+ - run: gem install bundler
20
+ - run: bundle
21
+ - run: rake install
22
+ - run: mkdir tmp
23
+ - run: docker-compose up app
12
24
 
13
- test:
25
+ test_all:
14
26
  docker:
15
27
  - image: circleci/ruby:2.5.3
16
28
  steps:
17
29
  - checkout
30
+ - setup_remote_docker
18
31
  - run: gem install bundler
19
32
  - run: bundle
20
33
  - run: rake install
21
34
  - run: mkdir tmp
22
- - run: rake test
35
+ - run: docker-compose up
23
36
 
24
37
  build-greenfield:
25
38
  machine: true
@@ -56,10 +69,12 @@ jobs:
56
69
  curl -Is localhost:3000 | head -n 1
57
70
 
58
71
  release:
59
- machine: true
72
+ docker:
73
+ - image: circleci/ruby:2.5.3
60
74
  steps:
61
75
  - checkout
62
- - run: printenv
76
+ - setup_remote_docker
77
+ - run: gem install bundler
63
78
  - run: bundle
64
79
  - run: rake install
65
80
  - run: roro expose
@@ -77,21 +92,29 @@ workflows:
77
92
  - test:
78
93
  filters:
79
94
  branches:
80
- ignore:
81
- - /build-.*/
82
- - release
95
+ only:
96
+ - /feature-.*/
83
97
  - build-greenfield:
84
98
  filters:
85
99
  branches:
86
100
  only:
87
101
  - build-greenfield
102
+ - development
88
103
  - master
89
104
  - build-rollon:
90
105
  filters:
91
106
  branches:
92
107
  only:
93
108
  - build-rollon
109
+ - development
94
110
  - master
111
+ - test_all:
112
+ filters:
113
+ branches:
114
+ only:
115
+ - development
116
+ - master
117
+
95
118
  - release:
96
119
  filters:
97
120
  branches:
data/.gitignore CHANGED
@@ -5,10 +5,10 @@
5
5
  /doc/
6
6
  /pkg/
7
7
  /spec/reports/
8
- tmp/
8
+ tmp/**/*
9
9
  !tmp/.keep
10
10
  greenfield/**/*
11
11
  .byebug_history
12
12
 
13
13
  docker/**/*.env
14
- docker/**/*.key
14
+ docker/**/*.key
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roro (0.1.1)
4
+ roro (0.1.3)
5
5
  handsome_fencer-crypto (= 0.1.4)
6
+ os
6
7
  sshkit
7
8
  thor
8
9
 
@@ -110,6 +111,7 @@ GEM
110
111
  notiffany (0.1.1)
111
112
  nenv (~> 0.1)
112
113
  shellany (~> 0.0)
114
+ os (1.0.0)
113
115
  pry (0.12.2)
114
116
  coderay (~> 1.1.0)
115
117
  method_source (~> 0.9.0)
data/Guardfile CHANGED
@@ -14,17 +14,23 @@
14
14
  # $ ln -s config/Guardfile .
15
15
  #
16
16
  # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
+ options = {
18
+ cli: '',
19
+ all_after_run: false
20
+ }
17
21
 
18
-
19
- guard :minitest, cli: '' do
22
+ guard :minitest, options do
20
23
  # with Minitest::Unit
21
24
  watch(%r{^test/(.*)\/?test_(.*)\.rb$})
22
25
  watch(%r{^test/(.*)\/?(.*)_test\.rb$})
23
26
  watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
24
- watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { 'test' }
27
+
28
+ watch(%r{^lib/roro/cli/ruby_gem.rb$}) { |m| "test/generators/ruby_gem_test.rb" }
29
+ # watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { 'test' }
25
30
  watch(%r{^test/test_helper\.rb$}) { 'test' }
26
31
  watch(%r{^test/thor_helper\.rb$}) { 'test' }
27
32
 
33
+ watch(%r{^test/fixtures/files/(.*/)?([^/]+)\.yml$}) { 'test/generators/ruby_gem_test.rb' }
28
34
  # with Minitest::Spec
29
35
  # watch(%r{^spec/(.*)_spec\.rb$})
30
36
  # watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
@@ -0,0 +1,21 @@
1
+ version: '3.1'
2
+
3
+ services:
4
+
5
+ app:
6
+ build:
7
+ context: .
8
+ dockerfile: docker/containers/app/Dockerfile
9
+ command: rake test
10
+
11
+ app-2-5-3:
12
+ build:
13
+ context: .
14
+ dockerfile: docker/containers/2_5_3/Dockerfile
15
+ command: rake test
16
+
17
+ app-2-6-0:
18
+ build:
19
+ context: .
20
+ dockerfile: docker/containers/2_6_0/Dockerfile
21
+ command: rake test
@@ -0,0 +1,10 @@
1
+ FROM ruby:2.5.3-alpine
2
+
3
+ RUN apk add --no-cache --update build-base linux-headers \
4
+ postgresql-dev nodejs tzdata libxml2-dev libxslt-dev git
5
+
6
+ WORKDIR /usr/src/app
7
+ COPY . /usr/src/app/
8
+ RUN rake install
9
+ RUN gem install bundler
10
+ RUN bundle
@@ -0,0 +1,10 @@
1
+ FROM ruby:2.6.0-alpine
2
+
3
+ RUN apk add --no-cache --update build-base linux-headers \
4
+ postgresql-dev nodejs tzdata libxml2-dev libxslt-dev git
5
+
6
+ WORKDIR /usr/src/app
7
+ COPY . /usr/src/app/
8
+ RUN rake install
9
+ RUN gem install bundler
10
+ RUN bundle
@@ -0,0 +1,10 @@
1
+ FROM ruby:2.5-alpine
2
+
3
+ RUN apk add --no-cache --update build-base linux-headers \
4
+ postgresql-dev nodejs tzdata libxml2-dev libxslt-dev git
5
+
6
+ WORKDIR /usr/src/app
7
+ COPY . /usr/src/app/
8
+ RUN rake install
9
+ RUN gem install bundler
10
+ RUN bundle
@@ -1,2 +1,4 @@
1
- WDN8iYm/r+dQDS2TvKXWU/HfVzSo2vkufmfRWIr3DadCGmvQxLz2GhBN1/JJ
2
- QgjtMoLsgeL26jYt9Z9icx60+g==
1
+ 0ZAQKGGYUfmlZ5t3HKC9qjQ6lUQnbFrN/nGjUAcBGsZC0140WIT3rvUkvqvM
2
+ 3kb6BPlRsiiilSoDwJuPapAoZOqUWW4kyVE7nncPHKnzqTmGbXYStf4e9TBt
3
+ KmUBVU/5LLmQnD6nI9BJMKDg4J+PPPUNjPyJK+XnQWmNWWVQQAWigoYvudVL
4
+ V1lj0fSel5pV
data/lib/roro/cli.rb CHANGED
@@ -5,6 +5,7 @@ require 'roro/cli/greenfield'
5
5
  require 'roro/cli/generate_keys'
6
6
  require 'roro/cli/obfuscate'
7
7
  require 'roro/cli/expose'
8
+ require 'roro/cli/ruby_gem'
8
9
 
9
10
  module Roro
10
11
  class CLI < Thor
@@ -14,5 +15,7 @@ module Roro
14
15
  def self.source_root
15
16
  File.dirname(__FILE__) + '/cli/templates'
16
17
  end
18
+
19
+
17
20
  end
18
21
  end
data/lib/roro/cli/base.rb CHANGED
@@ -96,6 +96,14 @@ module Roro
96
96
  copy_file 'greenfield/Dockerfile', 'Dockerfile'
97
97
  copy_file 'greenfield/config/database.yml.example', 'config/database.yml.example'
98
98
  end
99
+
100
+ def copy_ruby_gem_files
101
+ copy_file 'ruby_gem/config.yml', '.circleci/config.yml'
102
+ # copy_file 'greenfield/Gemfile.lock', 'Gemfile.lock'
103
+ # copy_file 'greenfield/docker-compose.yml', 'docker-compose.yml'
104
+ # copy_file 'greenfield/Dockerfile', 'Dockerfile'
105
+ # copy_file 'greenfield/config/database.yml.example', 'config/database.yml.example'
106
+ end
99
107
  end
100
108
 
101
109
  private
@@ -1,3 +1,4 @@
1
+ require 'os'
1
2
  module Roro
2
3
 
3
4
  class CLI < Thor
@@ -11,26 +12,16 @@ module Roro
11
12
  method_option :force, desc: "force over-write of existing files"
12
13
 
13
14
  def greenfield
15
+
14
16
  if !Dir['./*'].empty? && options["force"].nil?
15
17
  raise Roro::Error.new("Oops -- Roro can't greenfield a new Rails app for you unless the current directory is empty.")
16
18
  end
17
19
  copy_greenfield_files
18
- system 'sleep 5s'
19
- system 'sudo chown -R $USER:$USER .'
20
- system 'sleep 5s'
21
20
  system 'sudo docker-compose run web rails new . --force --database=postgresql --skip-bundle'
22
- system 'sleep 5s'
23
- system 'sudo chown -R $USER:$USER .'
24
- system 'sleep 5s'
21
+ system 'sudo chown -R $USER .' if OS.linux?
25
22
  system 'sudo docker-compose build'
26
- system 'sleep 5s'
27
23
  system 'mv -f config/database.yml.example config/database.yml'
28
- system 'sleep 5s'
29
- system 'chmod 1777 /tmp'
30
- system 'sudo docker-compose up -d'
31
- system 'sleep 5s'
32
- system 'sudo chown -R $USER:$USER .'
33
- system 'sleep 5s'
24
+ system 'sudo docker-compose up --build --force-recreate -d '
34
25
  system 'sudo docker-compose run web bin/rails db:create'
35
26
  end
36
27
  end
@@ -0,0 +1,49 @@
1
+ module Roro
2
+
3
+ class CLI < Thor
4
+
5
+ include Thor::Actions
6
+
7
+ desc "ruby_gem", "Generate files for containerized gem testing, CircleCI, and releasing to RubyGems."
8
+ method_option :rubies, type: :array, banner: "2.5.3 2.4.2"
9
+
10
+ def ruby_gem
11
+ rubies = options["rubies"] || ["2.5.3", "2.6.0"]
12
+ copy_file 'ruby_gem/docker-compose.yml', 'docker-compose.yml'
13
+ copy_file 'ruby_gem/config.yml', '.circleci/config.yml'
14
+ copy_file 'ruby_gem/setup-gem-credentials.sh', '.circleci/setup-gem-credentials.sh'
15
+ directory 'ruby_gem/docker', 'docker', { ruby_version: "2.5"}
16
+
17
+ rubies.each do |ruby|
18
+ rubydash = ruby.gsub('.', '-')
19
+ rubyunderscore = ruby.gsub('.', '_')
20
+ doc_loc = "docker/containers/#{rubyunderscore}/Dockerfile"
21
+ content = <<-EOM
22
+
23
+ app-#{rubydash}:
24
+ build:
25
+ context: .
26
+ dockerfile: #{doc_loc}
27
+ command: rake test
28
+ EOM
29
+ append_to_file 'docker-compose.yml', content
30
+ template 'ruby_gem/docker/containers/app/Dockerfile.tt', doc_loc, {ruby_version: ruby}
31
+ # append_to_file 'docker-compose.yml', "\n app-#{ruby}:\n build:\n\s\s\s\s\s\scontext:"
32
+ end
33
+ # byebug
34
+
35
+ # end
36
+ # <<EOF
37
+ # This is the first way of creating
38
+ # here document ie. multiple line string.
39
+ # EOF
40
+ # %w[app web].each do |container|
41
+ # options = {
42
+ # email: @env_hash['DOCKERHUB_EMAIL'],
43
+ # app_name: @env_hash['APP_NAME'] }
44
+ #
45
+ # template("docker/containers/#{container}/Dockerfile.tt", "docker/containers/#{container}/Dockerfile", options)
46
+ # end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,122 @@
1
+ defaults: &defaults
2
+ working_directory: /repo
3
+
4
+ version: 2
5
+
6
+ jobs:
7
+
8
+ build:
9
+ machine: true
10
+ steps:
11
+ - checkout
12
+
13
+ test:
14
+ docker:
15
+ - image: circleci/ruby:2.5.3
16
+ steps:
17
+ - checkout
18
+ - setup_remote_docker
19
+ - run: gem install bundler
20
+ - run: bundle
21
+ - run: rake install
22
+ - run: mkdir tmp
23
+ - run: docker-compose up app
24
+
25
+ test_all:
26
+ docker:
27
+ - image: circleci/ruby:2.5.3
28
+ steps:
29
+ - checkout
30
+ - setup_remote_docker
31
+ - run: gem install bundler
32
+ - run: bundle
33
+ - run: rake install
34
+ - run: mkdir tmp
35
+ - run: docker-compose up
36
+
37
+ build-greenfield:
38
+ machine: true
39
+ steps:
40
+ - checkout
41
+ - run: bundle
42
+ - run: rake install
43
+ - run:
44
+ name: Greenfield
45
+ working_directory: sooperdooper
46
+ command: |
47
+ bundle
48
+ sleep 2s
49
+ rake install
50
+ sleep 5s
51
+ roro greenfield
52
+ sleep 5s
53
+ curl -Is localhost:3000 | head -n 1
54
+
55
+ build-rollon:
56
+ machine: true
57
+ steps:
58
+ - checkout
59
+ - run: bundle
60
+ - run: rake install
61
+ - run:
62
+ name: Rollon
63
+ working_directory: test_apps/dummy
64
+ command: |
65
+ roro rollon
66
+ docker-compose up -d
67
+ docker-compose exec app bin/rails db:create
68
+ docker-compose exec app rake test
69
+ curl -Is localhost:3000 | head -n 1
70
+
71
+ release:
72
+ docker:
73
+ - image: circleci/ruby:2.5.3
74
+ steps:
75
+ - checkout
76
+ - setup_remote_docker
77
+ - run: gem install bundler
78
+ - run: bundle
79
+ - run: rake install
80
+ - run: roro expose
81
+ - run: echo 'source docker/env_files/circleci.env' >> $BASH_ENV
82
+ - run: bash .circleci/setup-gem-credentials.sh
83
+ - run: rake release
84
+
85
+
86
+ workflows:
87
+ version: 2
88
+ build-and-deploy:
89
+ jobs:
90
+ - build
91
+ - test:
92
+ filters:
93
+ branches:
94
+ except:
95
+ - build-greenfield
96
+ - build-rollon
97
+ - release
98
+ - master
99
+ - build-greenfield:
100
+ filters:
101
+ branches:
102
+ only:
103
+ - build-greenfield
104
+ - master
105
+ - build-rollon:
106
+ filters:
107
+ branches:
108
+ only:
109
+ - build-rollon
110
+ - master
111
+ - test_all:
112
+ filters:
113
+ branches:
114
+ only:
115
+ - development
116
+ - master
117
+
118
+ - release:
119
+ filters:
120
+ branches:
121
+ only:
122
+ - release
@@ -0,0 +1,9 @@
1
+ version: '3.1'
2
+
3
+ services:
4
+
5
+ app:
6
+ build:
7
+ context: .
8
+ dockerfile: docker/containers/app/Dockerfile
9
+ command: rake test
@@ -0,0 +1,10 @@
1
+ FROM ruby:<%= config[:ruby_version] %>-alpine
2
+
3
+ RUN apk add --no-cache --update build-base linux-headers \
4
+ postgresql-dev nodejs tzdata libxml2-dev libxslt-dev git
5
+
6
+ WORKDIR /usr/src/app
7
+ COPY . /usr/src/app/
8
+ RUN rake install
9
+ RUN gem install bundler
10
+ RUN bundle
File without changes
@@ -0,0 +1,3 @@
1
+ mkdir ~/.gem
2
+ echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
3
+ chmod 0600 /home/circleci/.gem/credentials
data/lib/roro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Roro
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
3
3
  end
data/roro.gemspec CHANGED
@@ -38,6 +38,7 @@ Gem::Specification.new do |spec|
38
38
  spec.require_paths = ["lib"]
39
39
 
40
40
  spec.add_dependency "thor"
41
+ spec.add_dependency "os"
41
42
  spec.add_dependency "sshkit"
42
43
  spec.add_dependency "handsome_fencer-crypto", "0.1.4"
43
44
  spec.add_development_dependency "bundler", "~> 1.17"
File without changes
File without changes
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - schadenfred
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-02 00:00:00.000000000 Z
11
+ date: 2019-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: os
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: sshkit
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +150,10 @@ files:
136
150
  - bin/console
137
151
  - bin/roro
138
152
  - bin/setup
153
+ - docker-compose.yml
154
+ - docker/containers/2_5_3/Dockerfile
155
+ - docker/containers/2_6_0/Dockerfile
156
+ - docker/containers/app/Dockerfile
139
157
  - docker/env_files/.keep
140
158
  - docker/env_files/circleci.env.enc
141
159
  - docker/keys/.keep
@@ -148,6 +166,7 @@ files:
148
166
  - lib/roro/cli/greenfield.rb
149
167
  - lib/roro/cli/obfuscate.rb
150
168
  - lib/roro/cli/rollon.rb
169
+ - lib/roro/cli/ruby_gem.rb
151
170
  - lib/roro/cli/templates/Gemfile.lock
152
171
  - lib/roro/cli/templates/Guardfile
153
172
  - lib/roro/cli/templates/circleci/Rakefile
@@ -175,6 +194,12 @@ files:
175
194
  - lib/roro/cli/templates/greenfield/config/database.yml.example
176
195
  - lib/roro/cli/templates/greenfield/docker-compose.yml
177
196
  - lib/roro/cli/templates/lib/tasks/deploy.rake
197
+ - lib/roro/cli/templates/ruby_gem/config.yml
198
+ - lib/roro/cli/templates/ruby_gem/docker-compose.yml
199
+ - lib/roro/cli/templates/ruby_gem/docker/containers/app/Dockerfile.tt
200
+ - lib/roro/cli/templates/ruby_gem/docker/env_files/.keep
201
+ - lib/roro/cli/templates/ruby_gem/docker/keys/.keep
202
+ - lib/roro/cli/templates/ruby_gem/setup-gem-credentials.sh
178
203
  - lib/roro/version.rb
179
204
  - lib/tasks/deploy.rake
180
205
  - roro.gemspec
@@ -255,6 +280,7 @@ files:
255
280
  - test_apps/dummy/test/test_helper.rb
256
281
  - test_apps/dummy/tmp/.keep
257
282
  - test_apps/dummy/vendor/.keep
283
+ - test_apps/dummy_gem/.keep
258
284
  - test_apps/dummy_roro/.circleci/Rakefile
259
285
  - test_apps/dummy_roro/.circleci/config.job-example.yml
260
286
  - test_apps/dummy_roro/.circleci/config.yml
@@ -384,8 +410,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
384
410
  - !ruby/object:Gem::Version
385
411
  version: '0'
386
412
  requirements: []
387
- rubyforge_project:
388
- rubygems_version: 2.6.13
413
+ rubygems_version: 3.0.1
389
414
  signing_key:
390
415
  specification_version: 4
391
416
  summary: Dockerize your Rails app, set it up for CI, roll it onto your image repository,