summaryrefslogtreecommitdiff
path: root/rake_tasks/gem.rake
blob: e6fcb3115433f1b40d392fe63710fb22610da2bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
require 'rake/gempackagetask.rb'

def gemspec
	Gem::Specification.new do |s|
		# Basic Information
		s.name = s.rubyforge_project = 'coderay'
		s.version = '0'

		s.platform = Gem::Platform::RUBY
		s.requirements = ['strscan']
		s.date = Time.now.strftime '%Y-%m-%d'
		s.has_rdoc = true
		s.rdoc_options = '-SNw2', '-mREADME', '-a', '-t CodeRay Documentation'
		s.extra_rdoc_files = EXTRA_FILES.in('./')

		# Description
		s.summary = <<-EOF
	CodeRay is a fast syntax highlighter engine for many languages.
		EOF
		s.description = <<-EOF
	CodeRay is a Ruby library for syntax highlighting.
	I try to make CodeRay easy to use and intuitive, but at the same time
	fully featured, complete, fast and efficient.

	Usage is simple:
		require 'coderay'
		code = 'some %q(weird (Ruby) can\'t shock) me!'
		puts CodeRay.scan(code, :ruby).html
		EOF

		# Files
		s.require_path = 'lib'
		s.autorequire = 'coderay'
		s.executables = [ 'coderay' ]

		s.files = nil  # defined later		

		# Credits
		s.author = 'murphy'
		s.email = 'murphy@cYcnus.de'
		s.homepage = 'http://coderay.rubychan.de'
	end
end

namespace :gem do

	gemtask = Rake::GemPackageTask.new(gemspec) do |pkg|
		pkg.need_zip = true
		pkg.need_tar = true
	end

	desc 'Create the gem again'
	task :make => [:make_gemspec, :clean, :gem, :prepare_server]

	desc 'Delete previously created Gems'
	task :clean do
		Dir['pkg/*.gem'].each { |g| rm g }
	end
		
	desc 'Find out the current CodeRay version'
	task :get_version do
		unless $version
			$: << './lib'
			require 'coderay'
			$version = CodeRay::Version
		end
		puts 'Current Version: %s' % $version
		#$version.sub!(/\.(\d+)\./) { minor = $1; ".#{minor.to_i}." }
		$version << '.' << (`svn info`[/Revision: (\d+)/,1])
	end

	task :make_gemspec => :get_version do
		candidates = Dir['./lib/**/*.rb'] +
			Dir['./demo/*.rb'] +
			#		Dir['./bin/*'] +
			#		Dir['./demo/bench/*'] +
			#		Dir['./test/*'] +
			%w( ./README ./LICENSE)
		s = gemtask.gem_spec
		s.files = candidates #.delete_if { |item| item[/(?:CVS|rdoc)|~$/] }
		gemtask.version = s.version = $version
	end

	GEMDIR = 'gem_server/gems'
	task :prepare_server => :get_version do
		$gemfile = "coderay-#$version.gem"
		Dir[GEMDIR + '/*.gem'].each { |g| rm g }
		cp "pkg/#$gemfile", GEMDIR
		system 'ruby -S generate_yaml_index.rb -d gem_server'
	end
	
	desc 'Upload gemfile to ' + FTP_DOMAIN
	task :upload => :make do
		gn 'Uploading gem:'
		cYcnus_ftp do |ftp|
			Dir.chdir 'gem_server' do
				uploader = uploader_for ftp
				ftp.chdir FTP_CODERAY_DIR
				%w(yaml yaml.Z).each &uploader
				Dir.chdir 'gems' do
					ftp.chdir 'gems'
					uploader.call $gemfile
				end
			end
		end
		gn 'Gem successfully uploaded.'
	end

	desc 'Build the Gem and install it locally'
	task :install => :make do
		system "ruby -S gem install --no-rdoc pkg/#{$gemfile}"
	end

end