Sha256: 4254b32ecfe2cde17a5d4fa74feedfa94a028d9aa1b9acce6a059937c6b22f29

Contents?: true

Size: 1.57 KB

Versions: 13

Compression:

Stored size: 1.57 KB

Contents

class Jeweler
  module Commands
    class SetupRubyforge
      attr_accessor :gemspec, :output, :rubyforge


      def initialize
        self.output = $stdout
        require 'rubyforge'
        self.rubyforge = RubyForge.new
      end

      def run
        raise NoRubyForgeProjectInGemspecError unless @gemspec.rubyforge_project

        @rubyforge.configure

        output.puts "Logging into rubyforge"
        @rubyforge.login

        if package_exists?
          output.puts "#{@gemspec.name} package already exists in the #{@gemspec.rubyforge_project} project"
          return
        end

        output.puts "Creating #{@gemspec.name} package in the #{@gemspec.rubyforge_project} project"
        create_package
      end

      def package_exists?
        begin
          @rubyforge.lookup 'package', @gemspec.name
          true
        rescue RuntimeError => e
          raise unless e.message == "no <package_id> configured for <#{@gemspec.name}>"
          false
        end
      end

      def create_package
        begin
          @rubyforge.create_package(@gemspec.rubyforge_project, @gemspec.name)
        rescue StandardError => e
          case e.message
          when /no <group_id> configured for <#{Regexp.escape @gemspec.rubyforge_project}>/
            raise RubyForgeProjectNotConfiguredError, @gemspec.rubyforge_project
          else
            raise
          end
        end
      end

      def self.build_for(jeweler)
        command = new

        command.gemspec = jeweler.gemspec
        command.output = jeweler.output

        command
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
gemrage-1.0.0 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.4.1 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.4.0 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.3.2 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.3.1 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.3.0 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.2.0 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.1.2 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.1.1 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.1.0 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
gemrage-0.0.0 vendor/ruby/1.8/gems/jeweler-1.4.0/lib/jeweler/commands/setup_rubyforge.rb
jeweler-1.4.0 lib/jeweler/commands/setup_rubyforge.rb
jeweler-1.3.0 lib/jeweler/commands/setup_rubyforge.rb