Sha256: dc6c26ab5b62240dceb45fa71982da648b893acea28b03bce70c4060a81a9121

Contents?: true

Size: 1.91 KB

Versions: 3

Compression:

Stored size: 1.91 KB

Contents

require "rscons"
require "optparse"

module Rscons
  # Command-Line Interface functionality.
  module Cli

    # Default files to look for to execute if none specified.
    DEFAULT_RSCONSFILES = %w[Rsconsfile Rsconsfile.rb]

    class << self

      # Run the Rscons CLI.
      #
      # @param argv [Array]
      #   Command-line parameters.
      #
      # @return [void]
      def run(argv)
        argv = argv.dup
        rsconsfile = nil

        OptionParser.new do |opts|
          opts.banner = "Usage: #{$0} [options]"

          opts.separator ""
          opts.separator "Options:"

          opts.on("-c", "--clean", "Perform clean operation") do
            Rscons.clean
            exit 0
          end

          opts.on("-f FILE", "Execute FILE (default Rsconsfile)") do |f|
            rsconsfile = f
          end

          opts.on("-j NTHREADS", "Use NTHREADS parallel jobs (local default #{Rscons.n_threads})") do |n_threads|
            Rscons.n_threads = n_threads.to_i
          end

          opts.on_tail("--version", "Show version") do
            puts "Rscons version #{Rscons::VERSION}"
            exit 0
          end

          opts.on_tail("-h", "--help", "Show this help.") do
            puts opts
            exit 0
          end

        end.parse!(argv)

        if rsconsfile
          unless File.exists?(rsconsfile)
            $stderr.puts "Cannot read #{rsconsfile}"
            exit 1
          end
        else
          rsconsfile = DEFAULT_RSCONSFILES.find do |f|
            File.exists?(f)
          end
          unless rsconsfile
            $stderr.puts "Could not find the Rsconsfile to execute."
            $stderr.puts "Looked in: [#{DEFAULT_RSCONSFILES.join(", ")}]"
            exit 1
          end
        end

        begin
          load rsconsfile
        rescue Rscons::BuildError => e
          $stderr.puts e.message
          exit 1
        end

        exit 0
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rscons-1.11.1 lib/rscons/cli.rb
rscons-1.11.0 lib/rscons/cli.rb
rscons-1.10.0 lib/rscons/cli.rb