pione 0.2.1 → 0.2.2
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/.gitignore +16 -13
- data/.travis.yml +1 -1
- data/History.txt +11 -0
- data/Rakefile +13 -0
- data/bin/pione-package +5 -0
- data/example/AbstractRule/package.yml +6 -0
- data/example/AbstractRule/scenario/a/output/message.txt +1 -0
- data/example/AbstractRule/scenario/a/scenario.yml +4 -0
- data/example/AbstractRule/scenario/b/output/message.txt +1 -0
- data/example/AbstractRule/scenario/b/scenario.yml +4 -0
- data/example/AbstractRule/scenario/c/output/message.txt +1 -0
- data/example/AbstractRule/scenario/c/scenario.yml +4 -0
- data/example/HelloWorld/package.yml +5 -1
- data/example/HelloWorld/scenario/scenario.yml +2 -1
- data/example/LoopByTouch/package.yml +4 -1
- data/example/MakePair/package.yml +6 -0
- data/example/MakePair/scenario/{input → case1/input}/1.i +0 -0
- data/example/MakePair/scenario/{input → case1/input}/2.i +0 -0
- data/example/MakePair/scenario/{input → case1/input}/3.i +0 -0
- data/example/MakePair/scenario/{input → case1/input}/4.i +0 -0
- data/example/MakePair/scenario/{input → case1/input}/5.i +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-1-2.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-1-3.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-1-4.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-1-5.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-2-3.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-2-4.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-2-5.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-3-4.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-3-5.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/comb-4-5.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-1-2.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-1-3.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-1-4.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-1-5.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-2-1.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-2-3.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-2-4.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-2-5.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-3-1.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-3-2.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-3-4.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-3-5.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-4-1.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-4-2.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-4-3.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-4-5.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-5-1.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-5-2.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-5-3.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/perm-5-4.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/succ-1-2.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/succ-2-3.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/succ-3-4.pair +0 -0
- data/example/MakePair/scenario/{output → case1/output}/succ-4-5.pair +0 -0
- data/example/MakePair/scenario/case1/scenario.yml +42 -0
- data/example/MakePair/scenario/case2/input/10.i +0 -0
- data/example/MakePair/scenario/case2/input/11.i +0 -0
- data/example/MakePair/scenario/case2/input/9.i +0 -0
- data/example/MakePair/scenario/case2/output/comb-10-11.pair +0 -0
- data/example/MakePair/scenario/case2/output/comb-9-10.pair +0 -0
- data/example/MakePair/scenario/case2/output/comb-9-11.pair +0 -0
- data/example/MakePair/scenario/case2/output/perm-10-11.pair +0 -0
- data/example/MakePair/scenario/case2/output/perm-10-9.pair +0 -0
- data/example/MakePair/scenario/case2/output/perm-11-10.pair +0 -0
- data/example/MakePair/scenario/case2/output/perm-11-9.pair +0 -0
- data/example/MakePair/scenario/case2/output/perm-9-10.pair +0 -0
- data/example/MakePair/scenario/case2/output/perm-9-11.pair +0 -0
- data/example/MakePair/scenario/case2/output/succ-10-11.pair +0 -0
- data/example/MakePair/scenario/case2/output/succ-9-10.pair +0 -0
- data/example/MakePair/scenario/case2/scenario.yml +17 -0
- data/example/MakePair/scenario/case3/input/1.i +0 -0
- data/example/MakePair/scenario/case3/input/3.i +0 -0
- data/example/MakePair/scenario/case3/input/5.i +0 -0
- data/example/MakePair/scenario/case3/input/7.i +0 -0
- data/example/MakePair/scenario/case3/input/9.i +0 -0
- data/example/MakePair/scenario/case3/output/comb-1-3.pair +0 -0
- data/example/MakePair/scenario/case3/output/comb-1-5.pair +0 -0
- data/example/MakePair/scenario/case3/output/comb-1-7.pair +0 -0
- data/example/MakePair/scenario/case3/output/comb-1-9.pair +0 -0
- data/example/MakePair/scenario/case3/output/comb-3-5.pair +0 -0
- data/example/MakePair/scenario/case3/output/comb-3-7.pair +0 -0
- data/example/MakePair/scenario/case3/output/comb-3-9.pair +0 -0
- data/example/MakePair/scenario/case3/output/comb-5-7.pair +0 -0
- data/example/MakePair/scenario/case3/output/comb-5-9.pair +0 -0
- data/example/MakePair/scenario/case3/output/comb-7-9.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-1-3.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-1-5.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-1-7.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-1-9.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-3-1.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-3-5.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-3-7.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-3-9.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-5-1.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-5-3.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-5-7.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-5-9.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-7-1.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-7-3.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-7-5.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-7-9.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-9-1.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-9-3.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-9-5.pair +0 -0
- data/example/MakePair/scenario/case3/output/perm-9-7.pair +0 -0
- data/example/MakePair/scenario/case3/scenario.yml +39 -0
- data/example/PegasusWMS/Merge/Merge.pione +21 -0
- data/example/PegasusWMS/Merge/package.yml +2 -0
- data/example/PegasusWMS/Pipeline/Pipeline.pione +20 -0
- data/example/PegasusWMS/Pipeline/package.yml +2 -0
- data/example/PegasusWMS/Split/Split.pione +27 -0
- data/example/PegasusWMS/Split/package.yml +2 -0
- data/example/ScoreAggregation/package.yml +4 -0
- data/example/ScoreAggregation/scenario/case1/scenario.yml +27 -1
- data/example/SerialProcessing/package.yml +5 -1
- data/example/SerialProcessing/scenario/scenario.yml +10 -0
- data/lib/pione.rb +20 -71
- data/lib/pione/agent.rb +17 -0
- data/lib/pione/agent/basic-agent.rb +2 -4
- data/lib/pione/command.rb +1 -0
- data/lib/pione/command/option.rb +4 -1
- data/lib/pione/command/pione-package.rb +97 -0
- data/lib/pione/command/pione-task-worker.rb +11 -7
- data/lib/pione/component.rb +5 -0
- data/lib/pione/component/document.rb +22 -5
- data/lib/pione/component/package-archiver.rb +92 -0
- data/lib/pione/component/package-expander.rb +37 -0
- data/lib/pione/component/package-filename.rb +38 -0
- data/lib/pione/component/package-reader.rb +276 -0
- data/lib/pione/component/package.rb +50 -162
- data/lib/pione/front.rb +14 -0
- data/lib/pione/location.rb +5 -0
- data/lib/pione/location/basic-location.rb +47 -274
- data/lib/pione/location/data-location.rb +328 -0
- data/lib/pione/location/dropbox-location.rb +30 -7
- data/lib/pione/location/exception.rb +38 -0
- data/lib/pione/location/ftp-location.rb +24 -13
- data/lib/pione/location/git-repository-location.rb +153 -0
- data/lib/pione/location/http-location.rb +65 -0
- data/lib/pione/location/https-location.rb +37 -0
- data/lib/pione/location/local-location.rb +24 -5
- data/lib/pione/parser.rb +14 -0
- data/lib/pione/patch.rb +10 -0
- data/lib/pione/patch/drb-patch.rb +2 -2
- data/lib/pione/relay.rb +11 -0
- data/lib/pione/system/file-cache.rb +1 -1
- data/lib/pione/system/global.rb +15 -0
- data/lib/pione/tuple-space.rb +11 -0
- data/lib/pione/tuple-space/tuple-space-server.rb +1 -1
- data/lib/pione/util.rb +1 -0
- data/lib/pione/util/error-report.rb +7 -0
- data/lib/pione/util/misc.rb +2 -2
- data/lib/pione/util/zip.rb +60 -0
- data/lib/pione/version.rb +1 -1
- data/pione.gemspec +5 -1
- data/test/agent/spec_rule-provider.rb +2 -2
- data/test/command/spec_pione-package.rb +15 -0
- data/test/component/spec_document.rb +2 -2
- data/test/component/spec_package-archiver.rb +27 -0
- data/test/component/spec_package-expander.rb +11 -0
- data/test/component/spec_package-filename.rb +79 -0
- data/test/component/spec_package-reader.rb +100 -0
- data/test/component/spec_package.rb +50 -33
- data/test/location/http-behavior.rb +59 -0
- data/test/location/location-behavior.rb +8 -0
- data/test/location/spec_basic-location.rb +5 -1
- data/test/location/spec_git-repository-location.rb +143 -0
- data/test/location/spec_http-location.rb +28 -0
- data/test/location/spec_http-location/a.txt +1 -0
- data/test/location/spec_http-location/b.txt +1 -0
- data/test/location/spec_http-location/c.txt +1 -0
- data/test/location/spec_http-location/dir/d.txt +1 -0
- data/test/location/spec_https-location.rb +37 -0
- data/test/rule-handler/spec_flow-handler.rb +1 -1
- data/test/rule-handler/spec_update-criteria.rb +1 -1
- data/test/test-data/package/HelloWorld+v0.1.0.ppg +0 -0
- data/test/test-data/package/HelloWorld-gitrepos.zip +0 -0
- data/test/test-data/package/HelloWorld/HelloWorld.pione +5 -0
- data/test/test-data/package/HelloWorld/package.yml +6 -0
- data/test/test-data/package/HelloWorld/scenario/output/message.txt +1 -0
- data/test/test-data/package/HelloWorld/scenario/scenario.yml +3 -0
- data/test/test-data/package/TestPackage1+v0.1.0.ppg +0 -0
- data/test/{component/spec_package/TestPackage → test-data/package/TestPackage1}/Test.pione +3 -1
- data/test/test-data/package/TestPackage1/bin/count +11 -0
- data/test/test-data/package/TestPackage1/package.yml +9 -0
- data/test/{component/spec_package/TestPackage → test-data/package/TestPackage1}/scenario/case1/input/1.txt +0 -0
- data/test/test-data/package/TestPackage1/scenario/case1/output/1.count +1 -0
- data/test/test-data/package/TestPackage1/scenario/case1/scenario.yml +6 -0
- data/test/test-data/package/TestPackage1/scenario/case2/input/1.txt +2 -0
- data/test/test-data/package/TestPackage1/scenario/case2/input/2.txt +1 -0
- data/test/test-data/package/TestPackage1/scenario/case2/input/3.txt +3 -0
- data/test/test-data/package/TestPackage1/scenario/case2/output/1.count +1 -0
- data/test/test-data/package/TestPackage1/scenario/case2/output/2.count +1 -0
- data/test/test-data/package/TestPackage1/scenario/case2/output/3.count +1 -0
- data/test/test-data/package/TestPackage1/scenario/case2/scenario.yml +10 -0
- data/test/test-data/package/TestPackage1/scenario/case3/input/a.txt +1 -0
- data/test/test-data/package/TestPackage1/scenario/case3/input/b.txt +1 -0
- data/test/test-data/package/TestPackage1/scenario/case3/output/a.count +1 -0
- data/test/test-data/package/TestPackage1/scenario/case3/output/b.count +1 -0
- data/test/test-data/package/TestPackage1/scenario/case3/scenario.yml +8 -0
- data/test/test-util.rb +10 -146
- data/test/test-util/command.rb +53 -0
- data/test/test-util/package.rb +9 -0
- data/test/test-util/parser.rb +45 -0
- data/test/test-util/transformer.rb +50 -0
- data/test/test-util/webserver.rb +43 -0
- data/test/util/spec_error-report.rb +12 -3
- data/test/util/spec_zip.rb +36 -0
- metadata +282 -54
- data/example/MakePair/scenario/scenario.yml +0 -1
- data/test/component/spec_package/TestPackage/bin/count +0 -3
- data/test/component/spec_package/TestPackage/package.yml +0 -7
- data/test/component/spec_package/TestPackage/scenario/case1/scenario.yml +0 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
module Pione
|
|
2
|
+
module Location
|
|
3
|
+
# GitRepositoryLocation represents locations of git repository.
|
|
4
|
+
class GitRepositoryLocation < BasicLocation
|
|
5
|
+
location_type :git_repository
|
|
6
|
+
|
|
7
|
+
attr_reader :tag
|
|
8
|
+
|
|
9
|
+
def initialize(address)
|
|
10
|
+
@address = address[:git].to_s
|
|
11
|
+
@tag = address[:tag].to_s
|
|
12
|
+
@branch = address[:branch].to_s
|
|
13
|
+
@hash_id = address[:hash_id].to_s
|
|
14
|
+
@address_digest = Digest::SHA1.hexdigest(@address)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Return a new location with the option.
|
|
18
|
+
def +(option)
|
|
19
|
+
self.class.new({git: @address, tag: @tag, branch: @branch, hash_id: @hash_id}.merge(option))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Return the local location of repository.
|
|
23
|
+
def local
|
|
24
|
+
Global.git_repository_directory + @address_digest
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Return true if the local location exists.
|
|
28
|
+
def has_local?
|
|
29
|
+
local.exist?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Return a hash id string of the referrence name.
|
|
33
|
+
def ref(query)
|
|
34
|
+
clone_to_local unless has_local?
|
|
35
|
+
|
|
36
|
+
# parse query
|
|
37
|
+
type = query.keys.first
|
|
38
|
+
name = query[type]
|
|
39
|
+
|
|
40
|
+
# execute "git show-ref"
|
|
41
|
+
out = Temppath.create.open("w+")
|
|
42
|
+
process = ChildProcess.build("git", "show-ref")
|
|
43
|
+
process.cwd = local.path.to_s
|
|
44
|
+
process.io.stdout = out
|
|
45
|
+
process.start
|
|
46
|
+
process.wait
|
|
47
|
+
|
|
48
|
+
if process.crashed?
|
|
49
|
+
raise GitError.new("The command 'git clone' failed.", @address)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# find hash id
|
|
53
|
+
out.rewind
|
|
54
|
+
out.readlines.each do |line|
|
|
55
|
+
hash_id, refname = line.split(" ")
|
|
56
|
+
|
|
57
|
+
cond_tag = (type == :tag and "refs/tags/%s" % name == refname)
|
|
58
|
+
cond_branch = (type == :branch and "refs/remotes/origin/%s" % name == refname)
|
|
59
|
+
|
|
60
|
+
return hash_id if cond_tag or cond_branch
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# the name not found
|
|
64
|
+
return nil
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Return compact version hash id string.
|
|
68
|
+
def compact_hash_id
|
|
69
|
+
id = @hash_id if @hash_id
|
|
70
|
+
id = ref(tag: @tag) if @tag
|
|
71
|
+
id = ref(branch: @branch) if @branch
|
|
72
|
+
id = ref(branch: "HEAD") unless id
|
|
73
|
+
return short_hash_id(id)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Export git repository by hash id.
|
|
77
|
+
def export(location)
|
|
78
|
+
clone_to_local unless has_local?
|
|
79
|
+
|
|
80
|
+
hash_id = compact_hash_id
|
|
81
|
+
|
|
82
|
+
# git archive
|
|
83
|
+
path = Temppath.mkdir + "archive.zip"
|
|
84
|
+
ChildProcess.build("git", "archive", "-o", path.to_s, hash_id).tap do |process|
|
|
85
|
+
process.cwd = local.path
|
|
86
|
+
process.start
|
|
87
|
+
process.wait
|
|
88
|
+
if process.crashed?
|
|
89
|
+
raise GitError.new(@location, message: "'git archive' failed")
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# unzip
|
|
94
|
+
local = Location[Temppath.mkdir]
|
|
95
|
+
Util::Zip.uncompress(Location[path], local)
|
|
96
|
+
|
|
97
|
+
# update package.yml
|
|
98
|
+
info = YAML.load((local + "package.yml").read)
|
|
99
|
+
info["HashID"] = hash_id
|
|
100
|
+
(local + "package.yml").update(YAML.dump(info))
|
|
101
|
+
|
|
102
|
+
# upload
|
|
103
|
+
local.entries.each {|entry| entry.move(location)}
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
private
|
|
107
|
+
|
|
108
|
+
# Call "git clone" from the repository into local location.
|
|
109
|
+
#
|
|
110
|
+
# @param path [Pathname]
|
|
111
|
+
# the path of cloned repository
|
|
112
|
+
def clone_to_local
|
|
113
|
+
out = Temppath.create.open("w+")
|
|
114
|
+
|
|
115
|
+
# call git clone
|
|
116
|
+
process = ChildProcess.build("git", "clone", @address, local.path.to_s)
|
|
117
|
+
process.io.stdout = out
|
|
118
|
+
process.start
|
|
119
|
+
process.wait
|
|
120
|
+
|
|
121
|
+
# show debug message
|
|
122
|
+
out.rewind
|
|
123
|
+
ErrorReport.debug("git clone: %s" % out.read, self, __FILE__, __LINE__)
|
|
124
|
+
|
|
125
|
+
# check the process result
|
|
126
|
+
if process.crashed?
|
|
127
|
+
raise GitError.new(self, message: "'git clone' failed")
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Return short hash id.
|
|
132
|
+
def short_hash_id(hash_id)
|
|
133
|
+
out = Temppath.create.open("w+")
|
|
134
|
+
|
|
135
|
+
# git rev-parse
|
|
136
|
+
process = ChildProcess.build("git", "rev-parse", "--short", hash_id)
|
|
137
|
+
process.cwd = local.path.to_s
|
|
138
|
+
process.io.stdout = out
|
|
139
|
+
process.start
|
|
140
|
+
process.wait
|
|
141
|
+
|
|
142
|
+
# check the process result
|
|
143
|
+
if process.crashed?
|
|
144
|
+
raise GitError.new(self, message: "Hash ID '%s' is unknown or too short" % hash_id)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# show debug message
|
|
148
|
+
out.rewind
|
|
149
|
+
return out.read.chomp
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module Pione
|
|
2
|
+
module Location
|
|
3
|
+
class HTTPLocation < DataLocation
|
|
4
|
+
set_scheme "http"
|
|
5
|
+
set_real_appendable false
|
|
6
|
+
set_writable false
|
|
7
|
+
|
|
8
|
+
def read
|
|
9
|
+
http_get {|res| res.body}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def mtime
|
|
13
|
+
http_head {|res| Time.httpdate(res['last-modified']) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def size
|
|
17
|
+
http_head {|res| res.content_length } || read.size
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def exist?
|
|
21
|
+
http_head {|res| true}
|
|
22
|
+
rescue
|
|
23
|
+
false
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def file?
|
|
27
|
+
exist?
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def directory?
|
|
31
|
+
false
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def copy(dest)
|
|
35
|
+
http_get {|rec| dest.write rec.body}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
# Send a request HTTP Get and evaluate the block with the response.
|
|
41
|
+
def http_get(&b)
|
|
42
|
+
http = Net::HTTP.new(@uri.host, @uri.port)
|
|
43
|
+
req = Net::HTTP::Get.new(@uri.path)
|
|
44
|
+
res = http.request(req)
|
|
45
|
+
if res.kind_of?(Net::HTTPSuccess)
|
|
46
|
+
return b.call(res)
|
|
47
|
+
else
|
|
48
|
+
raise NotFound.new(@uri)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Send a request HTTP Head and evaluate the block with the response.
|
|
53
|
+
def http_head(&b)
|
|
54
|
+
http = Net::HTTP.new(@uri.host, @uri.port)
|
|
55
|
+
req = Net::HTTP::Head.new(@uri.path)
|
|
56
|
+
res = http.request(req)
|
|
57
|
+
if res.kind_of?(Net::HTTPSuccess)
|
|
58
|
+
return b.call(res)
|
|
59
|
+
else
|
|
60
|
+
raise NotFound(@uri)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Pione
|
|
2
|
+
module Location
|
|
3
|
+
class HTTPSLocation < HTTPLocation
|
|
4
|
+
set_scheme "https"
|
|
5
|
+
set_real_appendable false
|
|
6
|
+
set_writable false
|
|
7
|
+
|
|
8
|
+
# Send a request HTTPS Get and evaluate the block with the response.
|
|
9
|
+
def http_get(&b)
|
|
10
|
+
http = Net::HTTP.new(@uri.host, @uri.port)
|
|
11
|
+
http.use_ssl = true
|
|
12
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
13
|
+
req = Net::HTTP::Get.new(@uri.path)
|
|
14
|
+
res = http.request(req)
|
|
15
|
+
if res.kind_of?(Net::HTTPSuccess)
|
|
16
|
+
return b.call(res)
|
|
17
|
+
else
|
|
18
|
+
raise NotFound.new(@uri)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Send a request HTTPS Head and evaluate the block with the response.
|
|
23
|
+
def http_head(&b)
|
|
24
|
+
http = Net::HTTP.new(@uri.host, @uri.port)
|
|
25
|
+
http.use_ssl = true
|
|
26
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
27
|
+
req = Net::HTTP::Head.new(@uri.path)
|
|
28
|
+
res = http.request(req)
|
|
29
|
+
if res.kind_of?(Net::HTTPSuccess)
|
|
30
|
+
return b.call(res)
|
|
31
|
+
else
|
|
32
|
+
raise NotFound(@uri)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Pione
|
|
2
2
|
module Location
|
|
3
3
|
# LocalLocation represents local disk locations.
|
|
4
|
-
class LocalLocation <
|
|
4
|
+
class LocalLocation < DataLocation
|
|
5
5
|
set_scheme "local"
|
|
6
6
|
set_real_appendable true
|
|
7
7
|
|
|
@@ -54,6 +54,10 @@ module Pione
|
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
+
def mkdir
|
|
58
|
+
@path.mkpath unless exist?
|
|
59
|
+
end
|
|
60
|
+
|
|
57
61
|
def mtime
|
|
58
62
|
@path.exist? ? @path.mtime : (raise NotFound.new(self))
|
|
59
63
|
end
|
|
@@ -62,16 +66,31 @@ module Pione
|
|
|
62
66
|
@path.exist? ? @path.size : (raise NotFound.new(self))
|
|
63
67
|
end
|
|
64
68
|
|
|
65
|
-
def entries
|
|
66
|
-
|
|
67
|
-
not(entry.to_s == "." or entry.to_s == "..")
|
|
68
|
-
end.map do |entry|
|
|
69
|
+
def entries(option={})
|
|
70
|
+
rel_entries(option).map do |entry|
|
|
69
71
|
Location["local:%s" % (@path + entry).expand_path]
|
|
70
72
|
end
|
|
71
73
|
rescue Errno::ENOENT
|
|
72
74
|
raise NotFound.new(self)
|
|
73
75
|
end
|
|
74
76
|
|
|
77
|
+
def rel_entries(option={})
|
|
78
|
+
list = []
|
|
79
|
+
@path.entries.each do |entry|
|
|
80
|
+
if not(entry.to_s == "." or entry.to_s == "..")
|
|
81
|
+
list << entry
|
|
82
|
+
entry_location = self + entry
|
|
83
|
+
if option[:rec] and entry_location.directory?
|
|
84
|
+
_list = entry_location.rel_entries(option).map {|subentry| entry + subentry}
|
|
85
|
+
list = list + _list
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
return list
|
|
90
|
+
rescue Errno::ENOENT
|
|
91
|
+
raise NotFound.new(self)
|
|
92
|
+
end
|
|
93
|
+
|
|
75
94
|
def file?
|
|
76
95
|
@path.file?
|
|
77
96
|
end
|
data/lib/pione/parser.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Pione
|
|
2
|
+
# Parser is a namespace for PIONE parsers.
|
|
3
|
+
module Parser; end
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
require 'pione/parser/parslet-extension'
|
|
7
|
+
require 'pione/parser/common-parser'
|
|
8
|
+
require 'pione/parser/literal-parser'
|
|
9
|
+
require 'pione/parser/feature-expr-parser'
|
|
10
|
+
require 'pione/parser/expr-parser'
|
|
11
|
+
require 'pione/parser/flow-element-parser'
|
|
12
|
+
require 'pione/parser/block-parser'
|
|
13
|
+
require 'pione/parser/rule-definition-parser'
|
|
14
|
+
require 'pione/parser/document-parser'
|
data/lib/pione/patch.rb
ADDED
|
@@ -136,7 +136,7 @@ module DRb
|
|
|
136
136
|
req_id, succ, result = recv_reply
|
|
137
137
|
DRb.waiter_table.push(req_id, [succ, result])
|
|
138
138
|
end
|
|
139
|
-
rescue
|
|
139
|
+
rescue => e
|
|
140
140
|
@watcher_mutex.synchronize do
|
|
141
141
|
@watchers.each do |watcher|
|
|
142
142
|
if watcher.alive?
|
|
@@ -333,7 +333,7 @@ module DRb
|
|
|
333
333
|
result = DRbArray.new(result)
|
|
334
334
|
end
|
|
335
335
|
return true, result
|
|
336
|
-
rescue StandardError, ScriptError
|
|
336
|
+
rescue StandardError, ScriptError => e
|
|
337
337
|
return false, e
|
|
338
338
|
end
|
|
339
339
|
|
data/lib/pione/relay.rb
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Pione
|
|
2
|
+
# Relay is a namespace for relay.
|
|
3
|
+
module Relay; end
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
require 'pione/relay/transmitter-socket'
|
|
7
|
+
require 'pione/relay/trampoline'
|
|
8
|
+
require 'pione/relay/receiver-socket'
|
|
9
|
+
require 'pione/relay/relay-socket'
|
|
10
|
+
require 'pione/relay/relay-client-db'
|
|
11
|
+
require 'pione/relay/relay-account-db'
|
|
@@ -135,7 +135,7 @@ module Pione
|
|
|
135
135
|
def get(location)
|
|
136
136
|
# cache if record doesn't exist
|
|
137
137
|
unless @table.has_key?(location)
|
|
138
|
-
cache_location = Location[Temppath.create(
|
|
138
|
+
cache_location = Location[Temppath.create(basedir: @tmpdir)]
|
|
139
139
|
location.turn(cache_location)
|
|
140
140
|
@table[location] = cache_location
|
|
141
141
|
end
|
data/lib/pione/system/global.rb
CHANGED
|
@@ -191,6 +191,21 @@ module Pione
|
|
|
191
191
|
Pathname.new(Dir.mktmpdir(nil, Global.file_cache_directory_root))
|
|
192
192
|
end
|
|
193
193
|
|
|
194
|
+
# Git repository directory
|
|
195
|
+
define_item(:git_repository_directory, false) do
|
|
196
|
+
Location[Global.dot_pione_dir + "git-repository"]
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Git package directory
|
|
200
|
+
define_item(:git_package_directory, false) do
|
|
201
|
+
Location[Global.dot_pione_dir] + "git-package"
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# archive_package_cache_dir
|
|
205
|
+
define_item(:archive_package_cache_dir, false) do
|
|
206
|
+
Location[Global.dot_pione_dir + "archive-package-cache"]
|
|
207
|
+
end
|
|
208
|
+
|
|
194
209
|
# system front server
|
|
195
210
|
define_item(:front, false)
|
|
196
211
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Pione
|
|
2
|
+
# TupleSpace is a namespace for tuple space classes.
|
|
3
|
+
module TupleSpace; end
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
require 'pione/tuple-space/tuple-space-server-interface'
|
|
7
|
+
require 'pione/tuple-space/presence-notifier'
|
|
8
|
+
require 'pione/tuple-space/tuple-space-server'
|
|
9
|
+
require 'pione/tuple-space/tuple-space-receiver'
|
|
10
|
+
require 'pione/tuple-space/tuple-space-provider'
|
|
11
|
+
require 'pione/tuple-space/data-finder'
|
data/lib/pione/util.rb
CHANGED
|
@@ -15,6 +15,13 @@ module Pione
|
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
module_function :warn
|
|
18
|
+
|
|
19
|
+
def debug(msg, receiver, file, line)
|
|
20
|
+
if Pione.debug_mode?
|
|
21
|
+
$stderr.puts "PIONE debug [%s:%i] %s (%s)" % [file, line, msg, receiver]
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
module_function :debug
|
|
18
25
|
end
|
|
19
26
|
end
|
|
20
27
|
end
|