tumblr 0.0.1 → 2.0.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/README +80 -0
- data/Rakefile +235 -0
- data/bin/tumblr +0 -0
- data/lib/tumblr.rb +25 -25
- data/tumblr.gemspec +28 -0
- metadata +61 -51
- data/a.rb +0 -12
- data/gemspec.rb +0 -36
- data/install.rb +0 -212
data/README
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
NAME
|
2
|
+
tumblr
|
3
|
+
|
4
|
+
SYNOPSIS
|
5
|
+
tumblr (setup|write|read|authenticate|check-vimeo|check-audio) [options]+
|
6
|
+
|
7
|
+
DESCRIPTION
|
8
|
+
tumblr.rb is a command line utility and library which interfaces to the
|
9
|
+
excellent tumblr blogging platform @ http://www.tumblr.com
|
10
|
+
|
11
|
+
tumblr.rb implements the complete restful api in both library and
|
12
|
+
command line utility, doccumented in full @ http://www.tumblr.com/api
|
13
|
+
|
14
|
+
=== install ===
|
15
|
+
|
16
|
+
gem install tumblr
|
17
|
+
|
18
|
+
=== cli ===
|
19
|
+
|
20
|
+
the cli exactly mirrors the library api. arguments are passed to each
|
21
|
+
method as 'key=val' pairs, values may be read from files using the
|
22
|
+
syntax 'key=file=val' or 'key==val'
|
23
|
+
|
24
|
+
you should first cache your login info to avoid having to pass it everytime
|
25
|
+
|
26
|
+
cfp: ~> tumblr setup --email=my_email --password=my_password --name=drawohara
|
27
|
+
/Users/ahoward/.tumblr.yml
|
28
|
+
|
29
|
+
you can post
|
30
|
+
|
31
|
+
cfp: ~> tumblr write regular title=testing body=rock_on
|
32
|
+
|
33
|
+
you can post from files
|
34
|
+
|
35
|
+
cfp: ~> tumblr write regular title=slurp body==./post.html
|
36
|
+
|
37
|
+
you can read
|
38
|
+
|
39
|
+
cfp: ~> tumblr read start=42 num=42
|
40
|
+
|
41
|
+
you can test the auth
|
42
|
+
|
43
|
+
cfp: ~> tumblr authenticate
|
44
|
+
|
45
|
+
etc.
|
46
|
+
|
47
|
+
=== api ===
|
48
|
+
|
49
|
+
it's pretty simple. here's a start, use the web docs to figure out the
|
50
|
+
rest
|
51
|
+
|
52
|
+
config = {
|
53
|
+
:email => my_email,
|
54
|
+
:password => my_password,
|
55
|
+
:name => 'drawohara'
|
56
|
+
}
|
57
|
+
|
58
|
+
tumblr = Tumblr.for config
|
59
|
+
|
60
|
+
abort unless tumblr.uri == 'http://drawohara.tumblr.com'
|
61
|
+
|
62
|
+
response = tumblr.write :regular, :title = title, :body => body
|
63
|
+
|
64
|
+
video = open 'video.mpg'
|
65
|
+
response = tumblr.write :video, :data => video, :title => video.path
|
66
|
+
|
67
|
+
response = tumblr.read :start => 42, :num => 42
|
68
|
+
xml = response.content
|
69
|
+
|
70
|
+
response = tumblr.read :start => 42, :num => 42, :json => true
|
71
|
+
json = response.content
|
72
|
+
|
73
|
+
PARAMETERS
|
74
|
+
--name=name, -n (0 ~> name)
|
75
|
+
--email=email, -e (0 ~> email)
|
76
|
+
--password=password, -p (0 ~> password)
|
77
|
+
--debug, -d
|
78
|
+
--json, -j
|
79
|
+
--help, -h
|
80
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,235 @@
|
|
1
|
+
|
2
|
+
This.rubyforge_project = 'codeforpeople'
|
3
|
+
This.author = "Ara T. Howard"
|
4
|
+
This.email = "ara.t.howard@gmail.com"
|
5
|
+
This.homepage = "http://github.com/ahoward/#{ This.lib }/tree/master"
|
6
|
+
|
7
|
+
|
8
|
+
task :default do
|
9
|
+
puts(Rake::Task.tasks.map{|task| task.name} - ['default'])
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
task :gemspec do
|
14
|
+
ignore_extensions = 'git', 'svn', 'tmp', /sw./, 'bak', 'gem'
|
15
|
+
ignore_directories = 'pkg'
|
16
|
+
ignore_files = 'test/log'
|
17
|
+
|
18
|
+
shiteless =
|
19
|
+
lambda do |list|
|
20
|
+
list.delete_if do |entry|
|
21
|
+
next unless test(?e, entry)
|
22
|
+
extension = File.basename(entry).split(%r/[.]/).last
|
23
|
+
ignore_extensions.any?{|ext| ext === extension}
|
24
|
+
end
|
25
|
+
list.delete_if do |entry|
|
26
|
+
next unless test(?d, entry)
|
27
|
+
dirname = File.expand_path(entry)
|
28
|
+
ignore_directories.any?{|dir| File.expand_path(dir) == dirname}
|
29
|
+
end
|
30
|
+
list.delete_if do |entry|
|
31
|
+
next unless test(?f, entry)
|
32
|
+
filename = File.expand_path(entry)
|
33
|
+
ignore_files.any?{|file| File.expand_path(file) == filename}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
lib = This.lib
|
38
|
+
object = This.object
|
39
|
+
version = This.version
|
40
|
+
files = shiteless[Dir::glob("**/**")]
|
41
|
+
executables = shiteless[Dir::glob("bin/*")].map{|exe| File.basename(exe)}
|
42
|
+
has_rdoc = true #File.exist?('doc')
|
43
|
+
test_files = "test/#{ lib }.rb" if File.file?("test/#{ lib }.rb")
|
44
|
+
summary = object.respond_to?(:summary) ? object.summary : "summary: #{ lib } kicks the ass"
|
45
|
+
description = object.respond_to?(:description) ? object.description : "description: #{ lib } kicks the ass"
|
46
|
+
|
47
|
+
extensions = This.extensions
|
48
|
+
if extensions.nil?
|
49
|
+
%w( Makefile configure extconf.rb ).each do |ext|
|
50
|
+
extensions << ext if File.exists?(ext)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
extensions = [extensions].flatten.compact
|
54
|
+
|
55
|
+
template =
|
56
|
+
if test(?e, 'gemspec.erb')
|
57
|
+
Template{ IO.read('gemspec.erb') }
|
58
|
+
else
|
59
|
+
Template {
|
60
|
+
<<-__
|
61
|
+
## #{ lib }.gemspec
|
62
|
+
#
|
63
|
+
|
64
|
+
Gem::Specification::new do |spec|
|
65
|
+
spec.name = #{ lib.inspect }
|
66
|
+
spec.version = #{ version.inspect }
|
67
|
+
spec.platform = Gem::Platform::RUBY
|
68
|
+
spec.summary = #{ lib.inspect }
|
69
|
+
spec.description = #{ description.inspect }
|
70
|
+
|
71
|
+
spec.files = #{ files.inspect }
|
72
|
+
spec.executables = #{ executables.inspect }
|
73
|
+
|
74
|
+
spec.require_path = "lib"
|
75
|
+
|
76
|
+
spec.has_rdoc = #{ has_rdoc.inspect }
|
77
|
+
spec.test_files = #{ test_files.inspect }
|
78
|
+
#spec.add_dependency 'lib', '>= version'
|
79
|
+
#spec.add_dependency 'fattr'
|
80
|
+
|
81
|
+
spec.extensions.push(*#{ extensions.inspect })
|
82
|
+
|
83
|
+
spec.rubyforge_project = #{ This.rubyforge_project.inspect }
|
84
|
+
spec.author = #{ This.author.inspect }
|
85
|
+
spec.email = #{ This.email.inspect }
|
86
|
+
spec.homepage = #{ This.homepage.inspect }
|
87
|
+
end
|
88
|
+
__
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
92
|
+
unless test(?e, "#{ lib }.gemspec")
|
93
|
+
open("#{ lib }.gemspec", "w"){|fd| fd.puts template}
|
94
|
+
end
|
95
|
+
This.gemspec = "#{ lib }.gemspec"
|
96
|
+
end
|
97
|
+
|
98
|
+
task :gem => [:clean, :gemspec] do
|
99
|
+
Fu.mkdir_p This.pkgdir
|
100
|
+
before = Dir['*.gem']
|
101
|
+
cmd = "gem build #{ This.gemspec }"
|
102
|
+
`#{ cmd }`
|
103
|
+
after = Dir['*.gem']
|
104
|
+
gem = ((after - before).first || after.first) or abort('no gem!')
|
105
|
+
Fu.mv gem, This.pkgdir
|
106
|
+
This.gem = File.basename(gem)
|
107
|
+
end
|
108
|
+
|
109
|
+
task :readme do
|
110
|
+
samples = ''
|
111
|
+
prompt = '~ > '
|
112
|
+
lib = This.lib
|
113
|
+
version = This.version
|
114
|
+
|
115
|
+
Dir['sample*/*'].sort.each do |sample|
|
116
|
+
samples << "\n" << " <========< #{ sample } >========>" << "\n\n"
|
117
|
+
|
118
|
+
cmd = "cat #{ sample }"
|
119
|
+
samples << Util.indent(prompt + cmd, 2) << "\n\n"
|
120
|
+
samples << Util.indent(`#{ cmd }`, 4) << "\n"
|
121
|
+
|
122
|
+
cmd = "ruby #{ sample }"
|
123
|
+
samples << Util.indent(prompt + cmd, 2) << "\n\n"
|
124
|
+
|
125
|
+
cmd = "ruby -e'STDOUT.sync=true; exec %(ruby -I ./lib #{ sample })'"
|
126
|
+
samples << Util.indent(`#{ cmd } 2>&1`, 4) << "\n"
|
127
|
+
end
|
128
|
+
|
129
|
+
template =
|
130
|
+
if test(?e, 'readme.erb')
|
131
|
+
Template{ IO.read('readme.erb') }
|
132
|
+
else
|
133
|
+
Template {
|
134
|
+
<<-__
|
135
|
+
NAME
|
136
|
+
#{ lib }
|
137
|
+
|
138
|
+
DESCRIPTION
|
139
|
+
|
140
|
+
INSTALL
|
141
|
+
gem install #{ lib }
|
142
|
+
|
143
|
+
SAMPLES
|
144
|
+
#{ samples }
|
145
|
+
__
|
146
|
+
}
|
147
|
+
end
|
148
|
+
|
149
|
+
open("README", "w"){|fd| fd.puts template}
|
150
|
+
end
|
151
|
+
|
152
|
+
|
153
|
+
task :clean do
|
154
|
+
Dir[File.join(This.pkgdir, '**/**')].each{|entry| Fu.rm_rf(entry)}
|
155
|
+
end
|
156
|
+
|
157
|
+
|
158
|
+
task :release => [:clean, :gemspec, :gem] do
|
159
|
+
gems = Dir[File.join(This.pkgdir, '*.gem')].flatten
|
160
|
+
raise "which one? : #{ gems.inspect }" if gems.size > 1
|
161
|
+
raise "no gems?" if gems.size < 1
|
162
|
+
cmd = "rubyforge login && rubyforge add_release #{ This.rubyforge_project } #{ This.lib } #{ This.version } #{ This.pkgdir }/#{ This.gem }"
|
163
|
+
puts cmd
|
164
|
+
system cmd
|
165
|
+
end
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
BEGIN {
|
172
|
+
$VERBOSE = nil
|
173
|
+
|
174
|
+
require 'ostruct'
|
175
|
+
require 'erb'
|
176
|
+
require 'fileutils'
|
177
|
+
|
178
|
+
Fu = FileUtils
|
179
|
+
|
180
|
+
This = OpenStruct.new
|
181
|
+
|
182
|
+
This.file = File.expand_path(__FILE__)
|
183
|
+
This.dir = File.dirname(This.file)
|
184
|
+
This.pkgdir = File.join(This.dir, 'pkg')
|
185
|
+
|
186
|
+
lib = ENV['LIB']
|
187
|
+
unless lib
|
188
|
+
lib = File.basename(Dir.pwd)
|
189
|
+
end
|
190
|
+
This.lib = lib
|
191
|
+
|
192
|
+
version = ENV['VERSION']
|
193
|
+
unless version
|
194
|
+
require "./lib/#{ This.lib }"
|
195
|
+
This.name = lib.capitalize
|
196
|
+
This.object = eval(This.name)
|
197
|
+
version = This.object.send(:version)
|
198
|
+
end
|
199
|
+
This.version = version
|
200
|
+
|
201
|
+
abort('no lib') unless This.lib
|
202
|
+
abort('no version') unless This.version
|
203
|
+
|
204
|
+
module Util
|
205
|
+
def indent(s, n = 2)
|
206
|
+
s = unindent(s)
|
207
|
+
ws = ' ' * n
|
208
|
+
s.gsub(%r/^/, ws)
|
209
|
+
end
|
210
|
+
|
211
|
+
def unindent(s)
|
212
|
+
indent = nil
|
213
|
+
s.each do |line|
|
214
|
+
next if line =~ %r/^\s*$/
|
215
|
+
indent = line[%r/^\s*/] and break
|
216
|
+
end
|
217
|
+
indent ? s.gsub(%r/^#{ indent }/, "") : s
|
218
|
+
end
|
219
|
+
extend self
|
220
|
+
end
|
221
|
+
|
222
|
+
class Template
|
223
|
+
def initialize(&block)
|
224
|
+
@block = block
|
225
|
+
@template = block.call.to_s
|
226
|
+
end
|
227
|
+
def expand(b=nil)
|
228
|
+
ERB.new(Util.unindent(@template)).result(b||@block)
|
229
|
+
end
|
230
|
+
alias_method 'to_s', 'expand'
|
231
|
+
end
|
232
|
+
def Template(*args, &block) Template.new(*args, &block) end
|
233
|
+
|
234
|
+
Dir.chdir(This.dir)
|
235
|
+
}
|
data/bin/tumblr
CHANGED
File without changes
|
data/lib/tumblr.rb
CHANGED
@@ -1,15 +1,8 @@
|
|
1
1
|
#
|
2
2
|
# gems
|
3
3
|
#
|
4
|
-
begin
|
5
|
-
gem "main", ">= 2.5.0"
|
6
|
-
gem "attributes", ">= 4.1.0"
|
7
|
-
gem "httpclient", ">= 2.1.2"
|
8
|
-
rescue Exception
|
9
|
-
42
|
10
|
-
end
|
11
4
|
require "main"
|
12
|
-
require "
|
5
|
+
require "fattr"
|
13
6
|
require "httpclient"
|
14
7
|
#
|
15
8
|
# built-in
|
@@ -20,21 +13,28 @@
|
|
20
13
|
# tumblr.rb
|
21
14
|
#
|
22
15
|
module Tumblr
|
23
|
-
|
24
|
-
|
16
|
+
Version = '2.0.0'
|
17
|
+
|
18
|
+
class << Tumblr
|
19
|
+
def version() Tumblr::Version end
|
20
|
+
|
21
|
+
def for *a, &b
|
22
|
+
Account.new *a, &b
|
23
|
+
end
|
25
24
|
end
|
26
25
|
|
26
|
+
|
27
27
|
class Account
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
28
|
+
fattr "name"
|
29
|
+
fattr "email"
|
30
|
+
fattr "password"
|
31
|
+
fattr "debug"
|
32
|
+
fattr("uri"){ "http://#{ name }.tumblr.com" }
|
33
|
+
fattr("generator"){ "tumblr.rb" }
|
34
|
+
fattr("proxy"){ ENV["HTTP_PROXY"] }
|
35
|
+
fattr("httpclient"){ HTTPClient.new proxy }
|
36
|
+
fattr("api"){ API.new "account" => account }
|
37
|
+
fattr("account"){ self }
|
38
38
|
|
39
39
|
def initialize options = {}
|
40
40
|
options.each{|k,v| send k, v}
|
@@ -56,11 +56,11 @@
|
|
56
56
|
end
|
57
57
|
|
58
58
|
class API
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
59
|
+
fattr "account"
|
60
|
+
fattr("uri"){ "#{ account.uri }/api" }
|
61
|
+
fattr("uri_write"){ "#{ uri }/write" }
|
62
|
+
fattr("uri_read"){ "#{ uri }/read" }
|
63
|
+
fattr("uri_read_json"){ "#{ uri }/read/json" }
|
64
64
|
|
65
65
|
def initialize options = {}
|
66
66
|
options.each{|k,v| send k, v}
|
data/tumblr.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
## tumblr.gemspec
|
2
|
+
#
|
3
|
+
|
4
|
+
Gem::Specification::new do |spec|
|
5
|
+
spec.name = "tumblr"
|
6
|
+
spec.version = "2.0.0"
|
7
|
+
spec.platform = Gem::Platform::RUBY
|
8
|
+
spec.summary = "tumblr"
|
9
|
+
spec.description = "a command line utility and library for the excellent tumblr blogging platform"
|
10
|
+
|
11
|
+
spec.files = ["bin", "bin/tumblr", "lib", "lib/tumblr.rb", "Rakefile", "README", "tumblr.gemspec"]
|
12
|
+
spec.executables = ["tumblr"]
|
13
|
+
|
14
|
+
spec.require_path = "lib"
|
15
|
+
|
16
|
+
spec.has_rdoc = true
|
17
|
+
spec.test_files = nil
|
18
|
+
spec.add_dependency 'fattr'
|
19
|
+
spec.add_dependency 'main'
|
20
|
+
spec.add_dependency 'httpclient'
|
21
|
+
|
22
|
+
spec.extensions.push(*[])
|
23
|
+
|
24
|
+
spec.rubyforge_project = "codeforpeople"
|
25
|
+
spec.author = "Ara T. Howard"
|
26
|
+
spec.email = "ara.t.howard@gmail.com"
|
27
|
+
spec.homepage = "http://github.com/ahoward/tumblr/tree/master"
|
28
|
+
end
|
metadata
CHANGED
@@ -1,78 +1,88 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.2
|
3
|
-
specification_version: 1
|
4
2
|
name: tumblr
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0
|
7
|
-
date: 2007-11-02 00:00:00 -06:00
|
8
|
-
summary: tumblr
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: ara.t.howard@gmail.com
|
12
|
-
homepage: http://codeforpeople.com/lib/ruby/tumblr/
|
13
|
-
rubyforge_project:
|
14
|
-
description:
|
15
|
-
autorequire: tumblr
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: false
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 2.0.0
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Ara T. Howard
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
- bin/tumblr
|
35
|
-
- gemspec.rb
|
36
|
-
- install.rb
|
37
|
-
- lib
|
38
|
-
- lib/tumblr.rb
|
39
|
-
test_files: []
|
40
|
-
|
41
|
-
rdoc_options: []
|
42
|
-
|
43
|
-
extra_rdoc_files: []
|
44
|
-
|
45
|
-
executables:
|
46
|
-
- tumblr
|
47
|
-
extensions: []
|
48
|
-
|
49
|
-
requirements: []
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
50
11
|
|
12
|
+
date: 2009-10-14 00:00:00 -06:00
|
13
|
+
default_executable:
|
51
14
|
dependencies:
|
52
15
|
- !ruby/object:Gem::Dependency
|
53
|
-
name:
|
16
|
+
name: fattr
|
17
|
+
type: :runtime
|
54
18
|
version_requirement:
|
55
|
-
version_requirements: !ruby/object:Gem::
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
20
|
requirements:
|
57
21
|
- - ">="
|
58
22
|
- !ruby/object:Gem::Version
|
59
|
-
version:
|
23
|
+
version: "0"
|
60
24
|
version:
|
61
25
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
26
|
+
name: main
|
27
|
+
type: :runtime
|
63
28
|
version_requirement:
|
64
|
-
version_requirements: !ruby/object:Gem::
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
30
|
requirements:
|
66
31
|
- - ">="
|
67
32
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
33
|
+
version: "0"
|
69
34
|
version:
|
70
35
|
- !ruby/object:Gem::Dependency
|
71
36
|
name: httpclient
|
37
|
+
type: :runtime
|
72
38
|
version_requirement:
|
73
|
-
version_requirements: !ruby/object:Gem::
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
40
|
requirements:
|
75
41
|
- - ">="
|
76
42
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
43
|
+
version: "0"
|
78
44
|
version:
|
45
|
+
description: a command line utility and library for the excellent tumblr blogging platform
|
46
|
+
email: ara.t.howard@gmail.com
|
47
|
+
executables:
|
48
|
+
- tumblr
|
49
|
+
extensions: []
|
50
|
+
|
51
|
+
extra_rdoc_files: []
|
52
|
+
|
53
|
+
files:
|
54
|
+
- bin/tumblr
|
55
|
+
- lib/tumblr.rb
|
56
|
+
- Rakefile
|
57
|
+
- README
|
58
|
+
- tumblr.gemspec
|
59
|
+
has_rdoc: true
|
60
|
+
homepage: http://github.com/ahoward/tumblr/tree/master
|
61
|
+
licenses: []
|
62
|
+
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: "0"
|
73
|
+
version:
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
version:
|
80
|
+
requirements: []
|
81
|
+
|
82
|
+
rubyforge_project: codeforpeople
|
83
|
+
rubygems_version: 1.3.5
|
84
|
+
signing_key:
|
85
|
+
specification_version: 3
|
86
|
+
summary: tumblr
|
87
|
+
test_files: []
|
88
|
+
|
data/a.rb
DELETED
data/gemspec.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
lib, version = File::basename(File::dirname(File::expand_path(__FILE__))).split %r/-/, 2
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
|
5
|
-
Gem::Specification::new do |spec|
|
6
|
-
$VERBOSE = nil
|
7
|
-
|
8
|
-
shiteless = lambda do |list|
|
9
|
-
list.delete_if do |file|
|
10
|
-
file =~ %r/\.svn/ or file =~ %r/\.tmp/
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
spec.name = lib
|
15
|
-
spec.version = version
|
16
|
-
spec.platform = Gem::Platform::RUBY
|
17
|
-
spec.summary = lib
|
18
|
-
|
19
|
-
spec.files = shiteless[Dir::glob("**/**")]
|
20
|
-
spec.executables = shiteless[Dir::glob("bin/*")].map{|exe| File::basename exe}
|
21
|
-
|
22
|
-
spec.require_path = "lib"
|
23
|
-
spec.autorequire = lib
|
24
|
-
|
25
|
-
spec.has_rdoc = File::exist? "doc"
|
26
|
-
spec.test_suite_file = "test/#{ lib }.rb" if File::directory? "test"
|
27
|
-
spec.add_dependency 'main', '>= 2.5.0'
|
28
|
-
spec.add_dependency 'attributes', '>= 4.1.0'
|
29
|
-
spec.add_dependency 'httpclient', '>= 2.1.2' # rock on NaHi
|
30
|
-
|
31
|
-
spec.extensions << "extconf.rb" if File::exists? "extconf.rb"
|
32
|
-
|
33
|
-
spec.author = "Ara T. Howard"
|
34
|
-
spec.email = "ara.t.howard@gmail.com"
|
35
|
-
spec.homepage = "http://codeforpeople.com/lib/ruby/#{ lib }/"
|
36
|
-
end
|
data/install.rb
DELETED
@@ -1,212 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'rbconfig'
|
3
|
-
require 'find'
|
4
|
-
require 'ftools'
|
5
|
-
require 'tempfile'
|
6
|
-
include Config
|
7
|
-
|
8
|
-
LIBDIR = "lib"
|
9
|
-
LIBDIR_MODE = 0644
|
10
|
-
|
11
|
-
BINDIR = "bin"
|
12
|
-
BINDIR_MODE = 0755
|
13
|
-
|
14
|
-
|
15
|
-
$srcdir = CONFIG["srcdir"]
|
16
|
-
$version = CONFIG["MAJOR"]+"."+CONFIG["MINOR"]
|
17
|
-
$libdir = File.join(CONFIG["libdir"], "ruby", $version)
|
18
|
-
$archdir = File.join($libdir, CONFIG["arch"])
|
19
|
-
$site_libdir = $:.find {|x| x =~ /site_ruby$/}
|
20
|
-
$bindir = CONFIG["bindir"] || CONFIG['BINDIR']
|
21
|
-
$ruby_install_name = CONFIG['ruby_install_name'] || CONFIG['RUBY_INSTALL_NAME'] || 'ruby'
|
22
|
-
$ruby_ext = CONFIG['EXEEXT'] || ''
|
23
|
-
$ruby = File.join($bindir, ($ruby_install_name + $ruby_ext))
|
24
|
-
|
25
|
-
if !$site_libdir
|
26
|
-
$site_libdir = File.join($libdir, "site_ruby")
|
27
|
-
elsif $site_libdir !~ %r/#{Regexp.quote($version)}/
|
28
|
-
$site_libdir = File.join($site_libdir, $version)
|
29
|
-
end
|
30
|
-
|
31
|
-
def install_rb(srcdir=nil, destdir=nil, mode=nil, bin=nil)
|
32
|
-
#{{{
|
33
|
-
path = []
|
34
|
-
dir = []
|
35
|
-
Find.find(srcdir) do |f|
|
36
|
-
next unless FileTest.file?(f)
|
37
|
-
next if (f = f[srcdir.length+1..-1]) == nil
|
38
|
-
next if (/CVS$/ =~ File.dirname(f))
|
39
|
-
next if f =~ %r/\.lnk/
|
40
|
-
next if f =~ %r/\.svn/
|
41
|
-
next if f =~ %r/\.swp/
|
42
|
-
path.push f
|
43
|
-
dir |= [File.dirname(f)]
|
44
|
-
end
|
45
|
-
for f in dir
|
46
|
-
next if f == "."
|
47
|
-
next if f == "CVS"
|
48
|
-
File::makedirs(File.join(destdir, f))
|
49
|
-
end
|
50
|
-
for f in path
|
51
|
-
next if (/\~$/ =~ f)
|
52
|
-
next if (/^\./ =~ File.basename(f))
|
53
|
-
unless bin
|
54
|
-
File::install(File.join(srcdir, f), File.join(destdir, f), mode, true)
|
55
|
-
else
|
56
|
-
from = File.join(srcdir, f)
|
57
|
-
to = File.join(destdir, f)
|
58
|
-
shebangify(from) do |sf|
|
59
|
-
$deferr.print from, " -> ", File::catname(from, to), "\n"
|
60
|
-
$deferr.printf "chmod %04o %s\n", mode, to
|
61
|
-
File::install(sf, to, mode, false)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
#}}}
|
66
|
-
end
|
67
|
-
def shebangify f
|
68
|
-
#{{{
|
69
|
-
open(f) do |fd|
|
70
|
-
buf = fd.read 42
|
71
|
-
if buf =~ %r/^\s*#\s*!.*ruby/o
|
72
|
-
ftmp = Tempfile::new("#{ $$ }_#{ File::basename(f) }")
|
73
|
-
begin
|
74
|
-
fd.rewind
|
75
|
-
ftmp.puts "#!#{ $ruby }"
|
76
|
-
while((buf = fd.read(8192)))
|
77
|
-
ftmp.write buf
|
78
|
-
end
|
79
|
-
ftmp.close
|
80
|
-
yield ftmp.path
|
81
|
-
ensure
|
82
|
-
ftmp.close!
|
83
|
-
end
|
84
|
-
else
|
85
|
-
yield f
|
86
|
-
end
|
87
|
-
end
|
88
|
-
#}}}
|
89
|
-
end
|
90
|
-
def ARGV.switch
|
91
|
-
#{{{
|
92
|
-
return nil if self.empty?
|
93
|
-
arg = self.shift
|
94
|
-
return nil if arg == '--'
|
95
|
-
if arg =~ /^-(.)(.*)/
|
96
|
-
return arg if $1 == '-'
|
97
|
-
raise 'unknown switch "-"' if $2.index('-')
|
98
|
-
self.unshift "-#{$2}" if $2.size > 0
|
99
|
-
"-#{$1}"
|
100
|
-
else
|
101
|
-
self.unshift arg
|
102
|
-
nil
|
103
|
-
end
|
104
|
-
#}}}
|
105
|
-
end
|
106
|
-
def ARGV.req_arg
|
107
|
-
#{{{
|
108
|
-
self.shift || raise('missing argument')
|
109
|
-
#}}}
|
110
|
-
end
|
111
|
-
def linkify d, linked = []
|
112
|
-
#--{{{
|
113
|
-
if test ?d, d
|
114
|
-
versioned = Dir[ File::join(d, "*-[0-9].[0-9].[0-9].rb") ]
|
115
|
-
versioned.each do |v|
|
116
|
-
src, dst = v, v.gsub(%r/\-[\d\.]+\.rb$/, '.rb')
|
117
|
-
lnk = nil
|
118
|
-
begin
|
119
|
-
if test ?l, dst
|
120
|
-
lnk = "#{ dst }.lnk"
|
121
|
-
puts "#{ dst } -> #{ lnk }"
|
122
|
-
File::rename dst, lnk
|
123
|
-
end
|
124
|
-
unless test ?e, dst
|
125
|
-
puts "#{ src } -> #{ dst }"
|
126
|
-
File::copy src, dst
|
127
|
-
linked << dst
|
128
|
-
end
|
129
|
-
ensure
|
130
|
-
if lnk
|
131
|
-
at_exit do
|
132
|
-
puts "#{ lnk } -> #{ dst }"
|
133
|
-
File::rename lnk, dst
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
linked
|
140
|
-
#--}}}
|
141
|
-
end
|
142
|
-
|
143
|
-
|
144
|
-
#
|
145
|
-
# main program
|
146
|
-
#
|
147
|
-
|
148
|
-
libdir = $site_libdir
|
149
|
-
bindir = $bindir
|
150
|
-
no_linkify = false
|
151
|
-
linked = nil
|
152
|
-
help = false
|
153
|
-
|
154
|
-
usage = <<-usage
|
155
|
-
#{ File::basename $0 }
|
156
|
-
-d, --destdir <destdir>
|
157
|
-
-l, --libdir <libdir>
|
158
|
-
-b, --bindir <bindir>
|
159
|
-
-r, --ruby <ruby>
|
160
|
-
-n, --no_linkify
|
161
|
-
-s, --sudo
|
162
|
-
-h, --help
|
163
|
-
usage
|
164
|
-
|
165
|
-
begin
|
166
|
-
while switch = ARGV.switch
|
167
|
-
case switch
|
168
|
-
when '-d', '--destdir'
|
169
|
-
libdir = ARGV.req_arg
|
170
|
-
when '-l', '--libdir'
|
171
|
-
libdir = ARGV.req_arg
|
172
|
-
when '-b', '--bindir'
|
173
|
-
bindir = ARGV.req_arg
|
174
|
-
when '-r', '--ruby'
|
175
|
-
$ruby = ARGV.req_arg
|
176
|
-
when '-n', '--no_linkify'
|
177
|
-
no_linkify = true
|
178
|
-
when '-s', '--sudo'
|
179
|
-
sudo = 'sudo'
|
180
|
-
when '-h', '--help'
|
181
|
-
help = true
|
182
|
-
else
|
183
|
-
raise "unknown switch #{switch.dump}"
|
184
|
-
end
|
185
|
-
end
|
186
|
-
rescue
|
187
|
-
STDERR.puts $!.to_s
|
188
|
-
STDERR.puts usage
|
189
|
-
exit 1
|
190
|
-
end
|
191
|
-
|
192
|
-
if help
|
193
|
-
STDOUT.puts usage
|
194
|
-
exit
|
195
|
-
end
|
196
|
-
|
197
|
-
system "#{ sudo } #{ $ruby } pre-install.rb" if test(?s, 'pre-install.rb')
|
198
|
-
|
199
|
-
unless no_linkify
|
200
|
-
linked = linkify('lib') + linkify('bin')
|
201
|
-
end
|
202
|
-
|
203
|
-
system "#{ $ruby } extconf.rb && make && #{ sudo } make install" if test(?s, 'extconf.rb')
|
204
|
-
|
205
|
-
install_rb(LIBDIR, libdir, LIBDIR_MODE)
|
206
|
-
install_rb(BINDIR, bindir, BINDIR_MODE, bin=true)
|
207
|
-
|
208
|
-
if linked
|
209
|
-
linked.each{|path| File::rm_f path}
|
210
|
-
end
|
211
|
-
|
212
|
-
system "#{ sudo } #{ $ruby } post-install.rb" if test(?s, 'post-install.rb')
|