Skip to content

Commit

Permalink
Rakeify docker compose generator
Browse files Browse the repository at this point in the history
  • Loading branch information
lloeki committed May 10, 2024
1 parent 9da63ff commit 7c07598
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 54 deletions.
53 changes: 0 additions & 53 deletions bin/generate_docker_compose.rb

This file was deleted.

2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Please do NOT manually edit this file.
# This file is generated by 'bin/generate_docker_compose.rb'
# This file is generated by 'bundle exec rake docker:compose:generate'
---
services:
ruby-2.5:
Expand Down
62 changes: 62 additions & 0 deletions tasks/docker/compose.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# frozen_string_literal: true

# @type self: Rake::DSL

namespace :docker do
namespace :compose do
desc "Generate docker-compose.yml"
task :generate do
require "psych"
require "open3"

ruby_versions = [2.5, 2.6, 2.7, 3.0, 3.1, 3.2, 3.3]

services = ruby_versions.reduce({}) do |hash, version|
hash.merge(
"ruby-#{version}" => {
"build" => {
"context" => ".",
"dockerfile" => "images/ruby-#{version}.dockerfile"
},
"command" => "/bin/bash",
"environment" => {
"BUNDLE_GEMFILE" => "gemfiles/ruby-#{version}.gemfile"
},
"stdin_open" => true,
"tty" => true,
"volumes" => [
".:/app",
"bundle-#{version}:/usr/local/bundle"
]
}
)
end

volumes = ruby_versions.reduce({}) do |hash, version|
hash.merge("bundle-#{version}" => nil)
end

docker_compose = {
"services" => services,
"volumes" => volumes
}

target = "docker-compose.yml"

File.open(target, "w") do |f|
f.write("# Please do NOT manually edit this file.\n")
f.write("# This file is generated by 'rake docker:compose:generate'\n")
f.write(Psych.dump(docker_compose))
end

git_diff, _ = Open3.capture2("git diff --color #{target}")

if git_diff.empty?
puts "No changes. '#{target}' is up-to-date."
else
puts "'#{target}' has been updated. Please review the changes below:\n\n"
puts git_diff
end
end
end
end

0 comments on commit 7c07598

Please sign in to comment.