Sha256: 875886e504bdf1d4e99aac1713dcde9118dd7864e22a05894d2e4dd9da2b6e20

Contents?: true

Size: 1.27 KB

Versions: 6

Compression:

Stored size: 1.27 KB

Contents

module MetaCon
  class Init
    require 'fileutils'
    def self.handle(_cmd, clo, opts)
      dir = opts.shift
      dir ||= './'
      # Find out if different roles are specified. If none- default to primary.
      # Default to dev
      # Run context-shift/verify

      if MetaCon::Project.initialized?(dir)
        exit(3) unless $cli.agree('This is already part of a metacon project. Continue? (y/n)', true)
      end

      already_there = false
      mcd = File.join(dir,'.metacon')
      if File.directory?(dir)
        already_there = File.directory?(mcd)
      else FileUtils.mkdir_p(dir) end
      if already_there
        exit(3) unless $cli.agree('Refresh existing .metacon directory? (y/n) ', true)
        `rm -rf "#{mcd}"`
      end
      FileUtils.mkdir(mcd)

      $cli.status "Initializing..." if clo[:verbose]
      mcp = MetaCon::Project.new(mcd, clo[:verbose])

      init_role = mcp.list(:role)[0] || 'main'
      init_rtc  = mcp.list(:rtc)[0] || 'dev'
      switch_res = mcp.switch(true, {:role => init_role, :rtc => init_rtc})
      if switch_res == :impossible
        $cli.cfail 'Cannot initialize the metacontext- submodules need to have files committed.'
        exit 4
      end
      $cli.result "\"#{dir}\" is now a metacon project" if clo[:verbose]
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
metacon-0.2.3 lib/metacon/init.rb
metacon-0.2.2 lib/metacon/init.rb
metacon-0.2.1 lib/metacon/init.rb
metacon-0.2.0 lib/metacon/init.rb
metacon-0.1.6 lib/metacon/init.rb
metacon-0.1.5 lib/metacon/init.rb