Class: Docker::Template::CLI::Build
- Inherits:
-
Object
- Object
- Docker::Template::CLI::Build
- Defined in:
- lib/docker/template/cli/build.rb
Instance Method Summary collapse
-
#changed! ⇒ Object
– rubocop:disable Metrics/AbcSize –.
-
#exclude! ⇒ Object
–.
-
#initialize(args, opts) ⇒ Build
constructor
A new instance of Build.
-
#start ⇒ Object
–.
Constructor Details
Instance Method Details
#changed! ⇒ Object
– rubocop:disable Metrics/AbcSize –
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/docker/template/cli/build.rb', line 41 def changed! Template._require "rugged" do |loaded| return true unless loaded git = Rugged::Repository.new(Template.root.to_s) dir = Template.root.join(@opts.repos_dir) repos = git.last_commit.diff.each_delta.each_with_object(Set.new) do |delta, set| next unless Pathutil.new(delta.new_file[:path]).(Template.root).in_path?(dir) set.merge(delta.new_file[:path].split("/").values_at( 1 )) end @repos = @repos.select do |repo| repos.include?( repo.name ) end end end |
#exclude! ⇒ Object
–
29 30 31 32 33 34 35 |
# File 'lib/docker/template/cli/build.rb', line 29 def exclude! Parser.new(@opts[:exclude].map { |v| v.split(/,\s*/) }.flatten.compact).parse.each do |repo| @repos.delete_if do |v| v.name == repo.name && v.tag == repo.tag end end end |
#start ⇒ Object
–
17 18 19 20 21 22 23 24 25 |
# File 'lib/docker/template/cli/build.rb', line 17 def start _profile do changed! if @opts.diff? exclude! if @opts.exclude? @repos.tap { |o| o.map(&:build) }.uniq(&:name).map( &:clean ) end end |