require 'librarian/helpers' require 'librarian/cli' require 'librarian/puppet' require 'librarian/puppet/action' module Librarian module Puppet class Cli < Librarian::Cli include Librarian::Puppet::Util module Particularity def root_module Puppet end end include Particularity extend Particularity source_root Pathname.new(__FILE__).dirname.join("templates") def init copy_file environment.specfile_name if File.exists? ".gitignore" gitignore = File.read('.gitignore').split("\n") else gitignore = [] end gitignore << ".tmp/" unless gitignore.include? ".tmp/" gitignore << "modules/" unless gitignore.include? "modules/" File.open(".gitignore", 'w') do |f| f.puts gitignore.join("\n") end end desc "install", "Resolves and installs all of the dependencies you specify." option "quiet", :type => :boolean, :default => false option "verbose", :type => :boolean, :default => false option "line-numbers", :type => :boolean, :default => false option "clean", :type => :boolean, :default => false option "strip-dot-git", :type => :boolean option "path", :type => :string option "destructive", :type => :boolean, :default => false option "local", :type => :boolean, :default => false option "use-v1-api", :type => :boolean, :default => true option "use-forge", :type => :boolean def install ensure! clean! if options["clean"] unless options["destructive"].nil? environment.config_db.local['destructive'] = options['destructive'].to_s end if options.include?("strip-dot-git") strip_dot_git_val = options["strip-dot-git"] ? "1" : nil environment.config_db.local["install.strip-dot-git"] = strip_dot_git_val end if options.include?("path") environment.config_db.local["path"] = options["path"] end environment.config_db.local['use-v1-api'] = options['use-v1-api'] ? '1' : nil unless options["use-forge"].nil? environment.config_db.local['use-forge'] = options['use-forge'].to_s end environment.config_db.local['mode'] = options['local'] ? 'local' : nil resolve! debug { "Install: dependencies resolved"} install! end # only used to replace / to - in the module names def update(*names) warn("Usage of module/name is deprecated, use module-name") if names.any? {|n| n.include?("/")} super(*names.map{|n| normalize_name(n)}) end desc "package", "Cache the puppet modules in vendor/puppet/cache." option "quiet", :type => :boolean, :default => false option "verbose", :type => :boolean, :default => false option "line-numbers", :type => :boolean, :default => false option "clean", :type => :boolean, :default => false option "strip-dot-git", :type => :boolean option "path", :type => :string option "destructive", :type => :boolean, :default => false option "use-forge", :type => :boolean def package environment.vendor! install end def version say "librarian-puppet v#{Librarian::Puppet::VERSION}" end private # override the actions to use our own def install!(options = { }) Action::Install.new(environment, options).run end def resolve!(options = { }) Action::Resolve.new(environment, options).run end end end end