castanaut 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/tasks/setup.rb DELETED
@@ -1,221 +0,0 @@
1
- # $Id$
2
-
3
- require 'rubygems'
4
- require 'rake'
5
- require 'fileutils'
6
- require 'ostruct'
7
-
8
- PROJ = OpenStruct.new
9
-
10
- PROJ.name = nil
11
- PROJ.summary = nil
12
- PROJ.description = nil
13
- PROJ.changes = nil
14
- PROJ.authors = nil
15
- PROJ.email = nil
16
- PROJ.url = nil
17
- PROJ.version = ENV['VERSION'] || '0.0.0'
18
- PROJ.rubyforge_name = nil
19
- PROJ.exclude = %w(tmp$ bak$ ~$ CVS .svn/ ^pkg/ ^doc/ announcement.txt)
20
- PROJ.release_name = ENV['RELEASE']
21
-
22
- # Rspec
23
- PROJ.specs = FileList['spec/**/*_spec.rb']
24
- PROJ.spec_opts = []
25
-
26
- # Test::Unit
27
- PROJ.tests = FileList['test/**/test_*.rb']
28
- PROJ.test_file = 'test/all.rb'
29
- PROJ.test_opts = []
30
-
31
- # Rcov
32
- PROJ.rcov_opts = ['--sort', 'coverage', '-T']
33
-
34
- # Rdoc
35
- PROJ.rdoc_opts = []
36
- PROJ.rdoc_include = %w(^lib/ ^bin/ ^ext/ .txt$)
37
- PROJ.rdoc_exclude = %w(extconf.rb$ ^Manifest.txt$)
38
- PROJ.rdoc_main = 'README.txt'
39
- PROJ.rdoc_dir = 'doc'
40
- PROJ.rdoc_remote_dir = nil
41
-
42
- # Extensions
43
- PROJ.extensions = FileList['ext/**/extconf.rb']
44
- PROJ.ruby_opts = %w(-w)
45
- PROJ.libs = []
46
- %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
47
-
48
- # Gem Packaging
49
- PROJ.files =
50
- if test ?f, 'Manifest.txt'
51
- files = File.readlines('Manifest.txt').map {|fn| fn.chomp.strip}
52
- files.delete ''
53
- files
54
- else [] end
55
- PROJ.executables = PROJ.files.find_all {|fn| fn =~ %r/^bin/}
56
- PROJ.dependencies = []
57
- PROJ.need_tar = true
58
- PROJ.need_zip = false
59
- PROJ.post_install_message = nil
60
-
61
- # File Annotations
62
- PROJ.annotation_exclude = %w(^tasks/setup.rb$)
63
- PROJ.annotation_extensions = %w(.txt .rb .erb) << ''
64
- PROJ.annotation_tags = %w(FIXME OPTIMIZE TODO)
65
-
66
- # Subversion Repository
67
- PROJ.svn = false
68
- PROJ.svn_root = nil
69
- PROJ.svn_trunk = 'trunk'
70
- PROJ.svn_tags = 'tags'
71
- PROJ.svn_branches = 'branches'
72
-
73
- # Announce
74
- PROJ.ann_text = nil
75
- PROJ.ann_paragraphs = []
76
- PROJ.ann_email = {
77
- :from => nil,
78
- :to => %w(ruby-talk@ruby-lang.org),
79
- :server => 'localhost',
80
- :port => 25,
81
- :domain => ENV['HOSTNAME'],
82
- :acct => nil,
83
- :passwd => nil,
84
- :authtype => :plain
85
- }
86
-
87
- # Load the other rake files in the tasks folder
88
- rakefiles = Dir.glob('tasks/*.rake').sort
89
- rakefiles.unshift(rakefiles.delete('tasks/post_load.rake')).compact!
90
- import(*rakefiles)
91
-
92
- # Setup some constants
93
- WIN32 = %r/djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM unless defined? WIN32
94
-
95
- DEV_NULL = WIN32 ? 'NUL:' : '/dev/null'
96
-
97
- def quiet( &block )
98
- io = [STDOUT.dup, STDERR.dup]
99
- STDOUT.reopen DEV_NULL
100
- STDERR.reopen DEV_NULL
101
- block.call
102
- ensure
103
- STDOUT.reopen io.first
104
- STDERR.reopen io.last
105
- end
106
-
107
- DIFF = if WIN32 then 'diff.exe'
108
- else
109
- if quiet {system "gdiff", __FILE__, __FILE__} then 'gdiff'
110
- else 'diff' end
111
- end unless defined? DIFF
112
-
113
- SUDO = if WIN32 then ''
114
- else
115
- if quiet {system 'which sudo'} then 'sudo'
116
- else '' end
117
- end
118
-
119
- RCOV = WIN32 ? 'rcov.bat' : 'rcov'
120
- GEM = WIN32 ? 'gem.bat' : 'gem'
121
-
122
- %w(rcov spec/rake/spectask rubyforge bones facets/ansicode).each do |lib|
123
- begin
124
- require lib
125
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", true}
126
- rescue LoadError
127
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", false}
128
- end
129
- end
130
-
131
- # Reads a file at +path+ and spits out an array of the +paragraphs+
132
- # specified.
133
- #
134
- # changes = paragraphs_of('History.txt', 0..1).join("\n\n")
135
- # summary, *description = paragraphs_of('README.txt', 3, 3..8)
136
- #
137
- def paragraphs_of( path, *paragraphs )
138
- title = String === paragraphs.first ? paragraphs.shift : nil
139
- ary = File.read(path).delete("\r").split(/\n\n+/)
140
-
141
- result = if title
142
- tmp, matching = [], false
143
- rgxp = %r/^=+\s*#{Regexp.escape(title)}/i
144
- paragraphs << (0..-1) if paragraphs.empty?
145
-
146
- ary.each do |val|
147
- if val =~ rgxp
148
- break if matching
149
- matching = true
150
- rgxp = %r/^=+/i
151
- elsif matching
152
- tmp << val
153
- end
154
- end
155
- tmp
156
- else ary end
157
-
158
- result.values_at(*paragraphs)
159
- end
160
-
161
- # Adds the given gem _name_ to the current project's dependency list. An
162
- # optional gem _version_ can be given. If omitted, the newest gem version
163
- # will be used.
164
- #
165
- def depend_on( name, version = nil )
166
- spec = Gem.source_index.find_name(name).last
167
- version = spec.version.to_s if version.nil? and !spec.nil?
168
-
169
- PROJ.dependencies << (version.nil? ? [name] : [name, ">= #{version}"])
170
- end
171
-
172
- # Adds the given arguments to the include path if they are not already there
173
- #
174
- def ensure_in_path( *args )
175
- args.each do |path|
176
- path = File.expand_path(path)
177
- $:.unshift(path) if test(?d, path) and not $:.include?(path)
178
- end
179
- end
180
-
181
- # Find a rake task using the task name and remove any description text. This
182
- # will prevent the task from being displayed in the list of available tasks.
183
- #
184
- def remove_desc_for_task( names )
185
- Array(names).each do |task_name|
186
- task = Rake.application.tasks.find {|t| t.name == task_name}
187
- next if task.nil?
188
- task.instance_variable_set :@comment, nil
189
- end
190
- end
191
-
192
- # Change working directories to _dir_, call the _block_ of code, and then
193
- # change back to the original working directory (the current directory when
194
- # this method was called).
195
- #
196
- def in_directory( dir, &block )
197
- curdir = pwd
198
- begin
199
- cd dir
200
- return block.call
201
- ensure
202
- cd curdir
203
- end
204
- end
205
-
206
- # Scans the current working directory and creates a list of files that are
207
- # candidates to be in the manifest.
208
- #
209
- def manifest_files
210
- files = []
211
- exclude = Regexp.new(PROJ.exclude.join('|'))
212
- Find.find '.' do |path|
213
- path.sub! %r/^(\.\/|\/)/o, ''
214
- next unless test ?f, path
215
- next if path =~ exclude
216
- files << path
217
- end
218
- files.sort!
219
- end
220
-
221
- # EOF
data/tasks/spec.rake DELETED
@@ -1,43 +0,0 @@
1
- # $Id$
2
-
3
- if HAVE_SPEC_RAKE_SPECTASK
4
-
5
- namespace :spec do
6
-
7
- desc 'Run all specs with basic output'
8
- Spec::Rake::SpecTask.new(:run) do |t|
9
- t.spec_opts = PROJ.spec_opts
10
- t.spec_files = PROJ.specs
11
- t.libs += PROJ.libs
12
- end
13
-
14
- desc 'Run all specs with text output'
15
- Spec::Rake::SpecTask.new(:specdoc) do |t|
16
- t.spec_opts = PROJ.spec_opts + ['--format', 'specdoc']
17
- t.spec_files = PROJ.specs
18
- t.libs += PROJ.libs
19
- end
20
-
21
- if HAVE_RCOV
22
- desc 'Run all specs with RCov'
23
- Spec::Rake::SpecTask.new(:rcov) do |t|
24
- t.spec_opts = PROJ.spec_opts
25
- t.spec_files = PROJ.specs
26
- t.libs += PROJ.libs
27
- t.rcov = true
28
- t.rcov_opts = PROJ.rcov_opts + ['--exclude', 'spec']
29
- end
30
- end
31
-
32
- end # namespace :spec
33
-
34
- desc 'Alias to spec:run'
35
- task :spec => 'spec:run'
36
-
37
- task :clobber => 'spec:clobber_rcov' if HAVE_RCOV
38
-
39
- remove_desc_for_task %w(spec:clobber_rcov)
40
-
41
- end # if HAVE_SPEC_RAKE_SPECTASK
42
-
43
- # EOF
data/tasks/svn.rake DELETED
@@ -1,44 +0,0 @@
1
- # $Id$
2
-
3
-
4
- if PROJ.svn and system("svn --version 2>&1 > #{DEV_NULL}")
5
-
6
- unless PROJ.svn_root
7
- info = %x/svn info ./
8
- m = %r/^Repository Root:\s+(.*)$/.match(info)
9
- PROJ.svn_root = (m.nil? ? '' : m[1])
10
- end
11
- PROJ.svn_root = File.join(PROJ.svn_root, PROJ.svn) if String === PROJ.svn
12
-
13
- namespace :svn do
14
-
15
- desc 'Show tags from the SVN repository'
16
- task :show_tags do |t|
17
- tags = %x/svn list #{File.join(PROJ.svn_root, PROJ.svn_tags)}/
18
- tags.gsub!(%r/\/$/, '')
19
- puts tags
20
- end
21
-
22
- desc 'Create a new tag in the SVN repository'
23
- task :create_tag do |t|
24
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
25
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
26
-
27
- trunk = File.join(PROJ.svn_root, PROJ.svn_trunk)
28
- tag = "%s-%s" % [PROJ.name, PROJ.version]
29
- tag = File.join(PROJ.svn_root, PROJ.svn_tags, tag)
30
- msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
31
-
32
- puts "Creating SVN tag '#{tag}'"
33
- unless system "svn cp -m '#{msg}' #{trunk} #{tag}"
34
- abort "Tag creation failed"
35
- end
36
- end
37
-
38
- end # namespace :svn
39
-
40
- task 'gem:release' => 'svn:create_tag'
41
-
42
- end # if PROJ.svn
43
-
44
- # EOF
data/tasks/test.rake DELETED
@@ -1,40 +0,0 @@
1
- # $Id$
2
-
3
- require 'rake/testtask'
4
-
5
- namespace :test do
6
-
7
- Rake::TestTask.new(:run) do |t|
8
- t.libs = PROJ.libs
9
- t.test_files = if test ?f, PROJ.test_file then [PROJ.test_file]
10
- else PROJ.tests end
11
- t.ruby_opts += PROJ.ruby_opts
12
- t.ruby_opts += PROJ.test_opts
13
- end
14
-
15
- if HAVE_RCOV
16
- desc 'Run rcov on the unit tests'
17
- task :rcov => :clobber_rcov do
18
- opts = PROJ.rcov_opts.join(' ')
19
- files = if test ?f, PROJ.test_file then [PROJ.test_file]
20
- else PROJ.tests end
21
- files = files.join(' ')
22
- sh "#{RCOV} #{files} #{opts}"
23
- end
24
-
25
- desc 'Remove rcov products'
26
- task :clobber_rcov do
27
- rm_r 'coverage' rescue nil
28
- end
29
- end
30
-
31
- end # namespace :test
32
-
33
- desc 'Alias to test:run'
34
- task :test => 'test:run'
35
-
36
- task :clobber => 'test:clobber_rcov' if HAVE_RCOV
37
-
38
- remove_desc_for_task %w(test:clobber_rcov)
39
-
40
- # EOF
@@ -1,91 +0,0 @@
1
- PageLoadTime = 2
2
-
3
- plugin 'safari'
4
- plugin 'mousepose'
5
- plugin 'ishowu'
6
-
7
- pause 0.5
8
- launch "Mousepose"
9
- launch "Safari", at(32, 64, 800, 600)
10
- url "http://dockyard.localhost/admin/structure"
11
-
12
- pause PageLoadTime
13
-
14
- ishowu_set_region at(32, 64, 800, 600)
15
- move to_element('input')
16
- ishowu_start_recording
17
- click
18
-
19
- while_saying "Welcome to Blueprint. Here's how you sign in." do
20
- pause 0.5
21
- type "screencast"
22
- hit Tab
23
- type "password"
24
- move to_element('.mainAction')
25
- click
26
- end
27
-
28
- pause PageLoadTime
29
-
30
- say "This is the structure tab. Let's create a page!"
31
- highlight do
32
- move to_element("#page_title", :area => :left)
33
- click
34
- end
35
- type "Welcome"
36
- move to_element(".sidebarButton")
37
- click
38
- move to_element("#structureTree li:last-child a")
39
- say "The page has been created."
40
-
41
- while_saying "We should add a few more, to create a simple site structure." do
42
- move to_element("#page_title", :area => :left)
43
- click
44
- type "About"
45
- move to_element(".sidebarButton")
46
- click
47
-
48
- move to_element("#page_title", :area => :left)
49
- click
50
- type "Contact us"
51
- move to_element(".sidebarButton")
52
- click
53
- end
54
-
55
- while_saying "A page hierarchy is established by dragging and dropping." do
56
- move to_element("#structureTree li:last-child img")
57
- highlight do
58
- drag by(25, -42)
59
- end
60
- end
61
-
62
- pause 2
63
-
64
- while_saying "Blueprint has many types of pages." do
65
- move to_element("#page_blueprint_id")
66
- highlight do
67
- mousedown
68
- pause 2
69
- drag by(0, 26)
70
- end
71
- end
72
-
73
- move to_element("#page_title")
74
- click
75
- type "Chronicle"
76
- move to_element(".sidebarButton") and pause 0.1
77
- click
78
-
79
- while_saying "See how this page has a different icon? This means it has " +
80
- "special functionality. In this case, it's a blog." do
81
- move to_element('li[blueprint="blg"] img')
82
- end
83
-
84
- while_saying "One last thing: don't forget to save your site structure!" do
85
- pause 1.5
86
- move to_element(".mainAction")
87
- # click
88
- pause PageLoadTime
89
- end
90
-
91
- pause 3
@@ -1,34 +0,0 @@
1
- #!/usr/bin/env castanaut
2
-
3
- PageLoadTime = 2.5
4
-
5
- plugin 'safari'
6
-
7
- pause 0.5
8
- launch "safari", at(64, 64, 1024, 768)
9
- url "about:blank"
10
-
11
-
12
- while_saying "Let's go vanity-searching!" do
13
- url "http://www.google.com"
14
- pause PageLoadTime
15
- end
16
-
17
- move to_element('input[name="q"]')
18
- click
19
- type "Castanaut"
20
- hit Enter
21
- pause PageLoadTime
22
-
23
- say "Oh. I was hoping for more results."
24
-
25
- move to(340, 100)
26
- tripleclick
27
- pause 0.5
28
- type "http://inventivelabs.com.au"
29
- hit Enter
30
-
31
- pause 6
32
-
33
- move to_element("#switch")
34
- click