pastiepacker 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,34 @@
1
+ desc 'Release the website and new gem version'
2
+ task :deploy => [:check_version, :website, :release] do
3
+ puts "Remember to create SVN tag:"
4
+ puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
5
+ "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
6
+ puts "Suggested comment:"
7
+ puts "Tagging release #{CHANGES}"
8
+ end
9
+
10
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
11
+ task :local_deploy => [:website_generate, :install_gem]
12
+
13
+ task :check_version do
14
+ unless ENV['VERSION']
15
+ puts 'Must pass a VERSION=x.y.z release version'
16
+ exit
17
+ end
18
+ unless ENV['VERSION'] == VERS
19
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
20
+ exit
21
+ end
22
+ end
23
+
24
+ desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
25
+ task :install_gem_no_doc => [:clean, :package] do
26
+ sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
27
+ end
28
+
29
+ namespace :manifest do
30
+ desc 'Recreate Manifest.txt to include ALL files'
31
+ task :refresh do
32
+ `rake check_manifest | patch -p0 > Manifest.txt`
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ task :ruby_env do
2
+ RUBY_APP = if RUBY_PLATFORM =~ /java/
3
+ "jruby"
4
+ else
5
+ "ruby"
6
+ end unless defined? RUBY_APP
7
+ end
@@ -0,0 +1,17 @@
1
+ desc 'Generate website files'
2
+ task :website_generate => :ruby_env do
3
+ (Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
4
+ sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
5
+ end
6
+ end
7
+
8
+ desc 'Upload website files to rubyforge'
9
+ task :website_upload do
10
+ host = "#{rubyforge_username}@rubyforge.org"
11
+ remote_dir = "/var/www/gforge-projects/#{PATH}/"
12
+ local_dir = 'website'
13
+ sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
14
+ end
15
+
16
+ desc 'Generate and upload website files'
17
+ task :website => [:website_generate, :website_upload, :publish_docs]
@@ -0,0 +1,263 @@
1
+ <html>
2
+ <head id="head">
3
+ <title>Private Paste - Pastie</title>
4
+
5
+ </head>
6
+ <body>
7
+
8
+ <div id="topnews" style="display:none;">
9
+ <p>
10
+ Pastie now <a href="http://pastie.caboo.se/8763" class="subtle">auto-senses</a> if line-wrap is a bad or good idea. <a href="http://beast.caboo.se/forums/4">Feedback?</a>
11
+ </p>
12
+ </div>
13
+
14
+ <div id="header">
15
+
16
+ <ul id="nav">
17
+ <li class="hot"><a href="/pastes/new">New</a></li>
18
+
19
+ <li style="display:none;" class="loggedinonly">
20
+ <!--
21
+
22
+ -->
23
+ <a href="" id="mine_nav_link">Mine</a>
24
+
25
+ <li >
26
+ <a href="/pastes">All</a>
27
+
28
+ </li>
29
+
30
+ <li><a href="#" onclick="$('search').show(); $('search_box').focus();">Search</a>
31
+ </li>
32
+ <li id="search" style="display:none;">
33
+ <form action="/search/">
34
+ <input type="text" style="font-size:0.85em;" size="15" id="search_box" name="q" value="">
35
+ </form>
36
+ </li>
37
+
38
+ <li ><a href="/why/">Why</a></li>
39
+ <li ><a href="/help/">Help</a></li>
40
+
41
+ <li class="login loggedinonly" style="display:none;" id="login_nick"></li>
42
+
43
+ </ul>
44
+
45
+ <script language="javascript">logged_in_setup();</script>
46
+
47
+ <h1>
48
+
49
+ <img src="/images/pastie.gif" />
50
+ Pastie
51
+ <span class="sub"><a href='http://www.pledgie.com/campaign/show/16'>Show Pastie some love</a></span>
52
+ <!--
53
+ <span class="sub">What'cha want for Christmas?</span>
54
+ <span class="count"> pasties and counting</span>
55
+ -->
56
+ </h1>
57
+
58
+
59
+ </div>
60
+
61
+ <!-- <div id="news">
62
+ <p style="margin-bottom:0;">Now powered by <a href="http://www.sphinxsearch.com/">Sphinx</a>... Search doesn't suck anymore. :-) Give it a spin.</p>
63
+ </div> -->
64
+
65
+ <div id="container">
66
+
67
+
68
+ <div id="content">
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+ <!--
77
+
78
+ -->
79
+
80
+ <!--
81
+ <p class="private psmall" id="private">
82
+ <img src="/images/icons/mini/locked.gif" />
83
+ This paste is private.
84
+ </p>
85
+ -->
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+ <!-- only for someone who's logged in -->
94
+ <p class="smallutils" id="wrapoptions" style="display:none;">
95
+
96
+ <a href="http://pastie.caboo.se/175214/wrap?key=5hwfheniddqmyasmfcxaw">Wrap text</a>
97
+
98
+ </p>
99
+
100
+ <script language="javascript">
101
+ logged_in_setup();
102
+ if (logged_in_user && logged_in_user=="")
103
+ { $('wrapoptions').show(); }
104
+ </script>
105
+
106
+
107
+ <div style="position:absolute; font-size:0.6em; color:#999; z-index:100; right:10px; top:10px;">
108
+ <label style="font-size:1em; color:#aaa">Theme:</label>
109
+ <select onchange="setActiveStyleSheet(this.value);" id="tm_theme_picker">
110
+ <option value="clean">Clean (Pastie)</option>
111
+ <option value="all_hallows_eve">All Hallow's Eve</option>
112
+ <option value="blackboard">Blackboard</option>
113
+
114
+ <option value="brilliance_black">Brilliance Black</option>
115
+ <option value="cobalt">Cobalt</option>
116
+ <option value="expreso_libre">Espresso Libre</option>
117
+ <option value="idle">IDLE</option>
118
+ <option value="mac_classic">Mac Classic</option>
119
+ <option value="magicwb_amiga">MagicWB (Amiga)</option>
120
+ <option value="pastels_on_dark">Pastels on Dark</option>
121
+ <option value="slate">Slate</option>
122
+ <option value="slush_and_poppies">Slush and Poppies</option>
123
+
124
+ <option value="sunburst">Sunburst</option>
125
+ <option value="sunburst_josh">Sunburst (Josh)</option>
126
+ <option value="twilight">Twilight</option>
127
+ <option value="vibrant_ink">Vibrant Ink</option>
128
+ </select>
129
+ </div>
130
+
131
+
132
+
133
+
134
+
135
+ <h2>about:pastiepacker </h2>
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+ <div class="allcode">
144
+ <table cellpadding="0" cellspacing="0" border="0">
145
+ <tr>
146
+ <td>
147
+
148
+ <pre class="textmate-source-numbers">1
149
+ 2
150
+ </pre>
151
+
152
+ </td>
153
+ <td>
154
+ <pre class="textmate-source"><pre class="sunburst"><span class='meta meta_paragraph meta_paragraph_text'>Files for pastiepacker uploaded by pastiepacker.
155
+ To unpack files see <span class='markup markup_underline markup_underline_link'>http://pastiepacker.rubyforge.org</span>
156
+ </pre></pre>
157
+ </td>
158
+ </tr>
159
+ </table>
160
+
161
+ </div>
162
+
163
+
164
+ <hr />
165
+
166
+
167
+ </div>
168
+
169
+ <div id="right">
170
+
171
+
172
+
173
+
174
+
175
+ <p>
176
+ <label>Pasted</label><br />
177
+ <span class="typo_date" title="Fri, 04 Apr 2008 12:09:37 GMT" id='paste_date'>April 04, 2008<br /> 7:09AM EDT</span>
178
+ <script language="javascript">
179
+ e=$('paste_date');
180
+ e.innerHTML=get_local_time_for_date(e.title);
181
+ </script>
182
+
183
+ </p>
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+ <p style="margin-top:2em; font-size:0.75em;">
196
+ <a href="/pastes/175214/download?key=5hwfheniddqmyasmfcxaw" class="utility">Download</a>
197
+ <span class="pipe">|</span>
198
+ <a href="http://pastie.caboo.se/175214.txt?key=5hwfheniddqmyasmfcxaw" class="utility">View</a>
199
+ </p>
200
+
201
+
202
+
203
+ <p style="margin-top:2em;">
204
+ <a href="/pastes/175214/reply?key=5hwfheniddqmyasmfcxaw">Paste again</a>
205
+
206
+ </p>
207
+
208
+
209
+
210
+
211
+
212
+
213
+ <p style="margin-top:2em; display:none;" id="edit_link">
214
+ <a href="/pastes/175214/edit?key=5hwfheniddqmyasmfcxaw" class="utility remove">Edit paste</a>
215
+ </p>
216
+
217
+ <script language="javascript">
218
+ logged_in_setup();
219
+ pasties=readCookie("pasties");
220
+ if (logged_in_user && logged_in_user=="")
221
+ { $('edit_link').show(); }
222
+ else if (pasties)
223
+ {
224
+ pasties=pasties.split("&");
225
+ if (pasties.include(175214))
226
+ { $('edit_link').show(); }
227
+ }
228
+ </script>
229
+
230
+
231
+ </div>
232
+
233
+ <br style="clear:both;" />
234
+
235
+ </div>
236
+
237
+ <div id="footer">
238
+ <p class="legal">
239
+ <a href="/legal/" style="color:#369;">Legal</a>
240
+ </p>
241
+ <p class="disclaim">
242
+ <strong>
243
+
244
+ Use Pastie in your quest to save humanity,<br /> not in your evil plots to take over the world!
245
+ </strong>
246
+
247
+ </p>
248
+ <p class="credit">
249
+ Created by <a href="http://www.workingwithrails.com/person/5337-josh-goebel">Josh Goebel</a>
250
+ <span class="pipe">|</span>
251
+ Hosted by <a href="http://railsmachine.com/">Rails Machine</a>
252
+ </p>
253
+ <br style="clear:both;" />
254
+ </div>
255
+
256
+ <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
257
+ </script>
258
+ <script type="text/javascript">
259
+ _uacct = "UA-413537-1";
260
+ urchinTracker();
261
+ </script>
262
+ </body>
263
+ </html>
@@ -0,0 +1,3 @@
1
+ == 1.0.0
2
+
3
+ * Some history
@@ -0,0 +1 @@
1
+ This is the readme.txt
@@ -0,0 +1,3 @@
1
+ class Myapp
2
+
3
+ end
@@ -0,0 +1,116 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class TestApp < Test::Unit::TestCase
4
+ attr_reader :base_folder, :target_folder
5
+
6
+ def setup
7
+ @base_folder = File.dirname(__FILE__) + "/fixtures/sample_app"
8
+ @target_folder = File.dirname(__FILE__) + "/unpack"
9
+ FileUtils.mkdir_p target_folder
10
+ end
11
+
12
+ def teardown
13
+ FileUtils.rm_rf target_folder
14
+ end
15
+
16
+ def test_pack_current_folder
17
+ PastiePacker::API.any_instance.expects(:paste).
18
+ with($complete_pastie_and_header, 'ruby', false).
19
+ returns("http://pastie.caboo.se/123456")
20
+ FileUtils.cd base_folder do
21
+ PastiePacker.run
22
+ end
23
+ end
24
+
25
+ def test_pack_with_file_names
26
+ PastiePacker::API.any_instance.expects(:paste).
27
+ with($some_files_and_header, 'ruby', false).
28
+ returns("http://pastie.caboo.se/123456")
29
+ files = ["README.txt\n", "lib/myapp.rb\n"]
30
+ PastiePacker.any_instance.expects(:input_lines).returns(files)
31
+ FileUtils.cd base_folder do
32
+ PastiePacker.run
33
+ end
34
+ end
35
+
36
+ def test_pack_with_extra_comment
37
+ pastie = PastiePacker.new
38
+ pastie.extra_message = 'This is a bonus comment.'
39
+ PastiePacker::API.any_instance.expects(:paste).
40
+ with($complete_pastie_and_header_and_comment, nil, nil).
41
+ returns("http://pastie.caboo.se/123456")
42
+ FileUtils.cd base_folder do
43
+ pastie.do_pack
44
+ end
45
+ end
46
+
47
+ def test_pack_but_output_to_stdout
48
+ pastie = PastiePacker.new
49
+ pastie.expects(:to_stdout?).returns(true)
50
+ PastiePacker::API.any_instance.expects(:paste).never
51
+ output = mock()
52
+ output.expects(:puts).with($complete_pastie_and_header)
53
+ pastie.stubs(:output_stream).returns(output)
54
+ FileUtils.cd base_folder do
55
+ pastie.do_pack
56
+ end
57
+ end
58
+
59
+ def test_pack_but_no_header
60
+ pastie = PastiePacker.new
61
+ pastie.expects(:no_header?).returns(true)
62
+ PastiePacker::API.any_instance.expects(:paste).
63
+ with($complete_pastie, nil, nil).
64
+ returns("http://pastie.caboo.se/123456")
65
+ FileUtils.cd base_folder do
66
+ pastie.do_pack
67
+ end
68
+ end
69
+
70
+ def test_unpack_within_current_folder
71
+ PastiePacker.any_instance.expects(:fetch_pastie).
72
+ with("http://pastie.caboo.se/123456").
73
+ returns($complete_pastie_and_header)
74
+ PastiePacker.any_instance.expects(:parse_options)
75
+ PastiePacker.any_instance.expects(:args).returns(["http://pastie.caboo.se/123456"])
76
+ FileUtils.cd target_folder do
77
+ PastiePacker.run("http://pastie.caboo.se/123456")
78
+ end
79
+ assert(File.directory?("#{target_folder}/123456"), "/123456 folder not created")
80
+ diff = `diff -ur #{base_folder} #{target_folder}/123456`
81
+ assert_equal("", diff)
82
+ end
83
+
84
+ def test_unpack_within_current_folder_raw_txt
85
+ PastiePacker.any_instance.expects(:fetch_pastie).
86
+ with("http://pastie.caboo.se/123456").
87
+ returns($complete_pastie_and_header)
88
+ PastiePacker.any_instance.expects(:parse_options)
89
+ PastiePacker.any_instance.expects(:args).returns(["http://pastie.caboo.se/123456.txt"])
90
+ FileUtils.cd target_folder do
91
+ PastiePacker.run("http://pastie.caboo.se/123456.txt")
92
+ end
93
+ assert(File.directory?("#{target_folder}/123456"), "/123456 folder not created")
94
+ diff = `diff -ur #{base_folder} #{target_folder}/123456`
95
+ assert_equal("", diff)
96
+ end
97
+
98
+ def test_unpack_private_pastie
99
+ PastiePacker.any_instance.expects(:args).
100
+ returns(["http://pastie.caboo.se/private/5hwfheniddqmyasmfcxaw"])
101
+ private_pastie_html = open(File.dirname(__FILE__) + "/fixtures/private_pastie.html")
102
+ PastiePacker.any_instance.expects(:fetch_pastie).
103
+ with("http://pastie.caboo.se/private/5hwfheniddqmyasmfcxaw").
104
+ returns(private_pastie_html)
105
+ PastiePacker.any_instance.expects(:fetch_pastie).
106
+ with("http://pastie.caboo.se/175214.txt?key=5hwfheniddqmyasmfcxaw").
107
+ returns($complete_pastie_and_header)
108
+ PastiePacker.any_instance.expects(:parse_options)
109
+ FileUtils.cd target_folder do
110
+ PastiePacker.run("http://pastie.caboo.se/private/5hwfheniddqmyasmfcxaw")
111
+ end
112
+ assert(File.directory?("#{target_folder}/5hwfheniddqmyasmfcxaw"), "/5hwfheniddqmyasmfcxaw folder not created")
113
+ diff = `diff -ur #{base_folder} #{target_folder}/5hwfheniddqmyasmfcxaw`
114
+ assert_equal("", diff)
115
+ end
116
+ end