quandl 0.3.7 → 0.4.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.
- checksums.yaml +8 -8
- data/Rakefile +0 -4
- data/UPGRADE.md +8 -0
- data/VERSION +1 -1
- data/dist/resources/pkg/Distribution.erb +1 -1
- data/dist/resources/pkg/{postinstall → postinstall.erb} +3 -1
- data/dist/resources/pkg/quandl +2 -2
- data/dist/resources/windows/quandl +25 -0
- data/lib/quandl/command.rb +1 -1
- data/lib/quandl/command/config.rb +4 -0
- data/lib/quandl/command/task/configurable.rb +1 -1
- data/lib/quandl/command/task/dependable.rb +1 -0
- data/lib/quandl/command/task/updatable.rb +5 -5
- data/lib/quandl/command/tasks/schedule.rb +59 -51
- data/lib/quandl/command/tasks/update.rb +159 -105
- data/quandl.gemspec +4 -4
- data/scripts/win/quandl_toolbelt.iss +10 -5
- data/spec/factories/dataset.rb +10 -0
- data/spec/factories/source.rb +10 -0
- data/spec/fixtures/{scraper.rb → scraper-test-file.rb} +0 -0
- data/spec/lib/quandl/command/delete_spec.rb +7 -1
- data/spec/lib/quandl/command/replace_spec.rb +1 -1
- data/spec/lib/quandl/command/schedule_spec.rb +33 -2
- data/spec/lib/quandl/command/superset_spec.rb +2 -2
- data/spec/lib/quandl/command/upload_spec.rb +3 -3
- data/spec/lib/quandl/command_spec.rb +3 -3
- data/spec/spec_helper.rb +14 -3
- data/tasks/toolbelt.rake +27 -18
- data/tasks/toolbelt.rb +26 -2
- data/tasks/toolbelt/build/darwin.rb +59 -12
- data/tasks/toolbelt/build/tarball.rb +9 -3
- metadata +18 -13
data/quandl.gemspec
CHANGED
@@ -19,12 +19,12 @@ Gem::Specification.new do |s|
|
|
19
19
|
|
20
20
|
s.add_runtime_dependency "commander", '4.1.5'
|
21
21
|
|
22
|
-
s.add_runtime_dependency "quandl_format", "0.4.
|
23
|
-
s.add_runtime_dependency "quandl_client", '2.
|
22
|
+
s.add_runtime_dependency "quandl_format", "0.4.3"
|
23
|
+
s.add_runtime_dependency "quandl_client", '2.8.0'
|
24
24
|
s.add_runtime_dependency "quandl_data", '1.4.1'
|
25
25
|
s.add_runtime_dependency "quandl_operation", '0.3.2'
|
26
|
-
s.add_runtime_dependency "quandl_babelfish", '0.0.
|
27
|
-
s.add_runtime_dependency "quandl_logger", '0.2.
|
26
|
+
s.add_runtime_dependency "quandl_babelfish", '0.0.11'
|
27
|
+
s.add_runtime_dependency "quandl_logger", '0.2.6'
|
28
28
|
s.add_runtime_dependency "json", '1.7.7'
|
29
29
|
s.add_runtime_dependency "minitar", '0.5.4'
|
30
30
|
s.add_runtime_dependency "thread", "0.1.3"
|
@@ -32,12 +32,15 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
|
|
32
32
|
|
33
33
|
[Files]
|
34
34
|
Source: "..\..\build\tarball\installer\rubyinstaller.exe"; DestDir: "{tmp}";
|
35
|
-
Source: "..\..\
|
36
|
-
Source: "..\..\build\tarball\quandl-command\lib\*.*"; DestDir: "{app}\lib"; Flags: recursesubdirs;
|
37
|
-
Source: "..\..\build\tarball\quandl-command\config\*.*"; DestDir: "{app}\config"; Flags: recursesubdirs;
|
38
|
-
Source: "..\..\build\tarball\quandl-command\vendor\*.*"; DestDir: "{app}\vendor"; Flags: recursesubdirs;
|
35
|
+
Source: "..\..\dist\resources\windows\*.*"; DestDir: "{app}\bin"; Flags: recursesubdirs;
|
36
|
+
Source: "..\..\build\tarball\quandl-command\lib\*.*"; DestDir: "{app}\current\lib"; Flags: recursesubdirs;
|
37
|
+
Source: "..\..\build\tarball\quandl-command\config\*.*"; DestDir: "{app}\current\config"; Flags: recursesubdirs;
|
38
|
+
Source: "..\..\build\tarball\quandl-command\vendor\*.*"; DestDir: "{app}\current\vendor"; Flags: recursesubdirs;
|
39
39
|
Source: "..\..\build\tarball\quandl\quandl.bat"; DestDir: "{app}\bin"; Flags: recursesubdirs;
|
40
|
-
Source: "..\..\VERSION"; DestDir: "{app}";
|
40
|
+
Source: "..\..\VERSION"; DestDir: "{app}\current";
|
41
|
+
|
42
|
+
[Dirs]
|
43
|
+
Name: "{app}\releases"; Permissions: everyone-modify
|
41
44
|
|
42
45
|
[Registry]
|
43
46
|
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: "expandsz"; ValueName: "QuandlPath"; \
|
@@ -80,5 +83,7 @@ Type: filesandordirs; Name: "{app}/ruby-1.9.3"
|
|
80
83
|
Type: filesandordirs; Name: "{app}/vendor"
|
81
84
|
Type: filesandordirs; Name: "{app}/backup"
|
82
85
|
Type: filesandordirs; Name: "{app}/update"
|
86
|
+
Type: filesandordirs; Name: "{app}/current"
|
87
|
+
Type: filesandordirs; Name: "{app}/releases"
|
83
88
|
Type: files; Name: "{app}/*"
|
84
89
|
Type: dirifempty; Name: "{app}"
|
@@ -0,0 +1,10 @@
|
|
1
|
+
FactoryGirl.define do
|
2
|
+
|
3
|
+
factory :source do
|
4
|
+
sequence(:code) { |n| "QUANDL_CLIENT_#{(Time.now.to_f * 1000).to_i}_#{n}" }
|
5
|
+
name "Quandl Client Source"
|
6
|
+
description "Quandl Client Source Spec"
|
7
|
+
sequence(:host) { |n| "http://quandl.com/host/#{(Time.now.to_f * 1000).to_i}_#{n}" }
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
File without changes
|
@@ -5,11 +5,17 @@ describe "./bin/quandl delete" do
|
|
5
5
|
|
6
6
|
let(:command){ self.class.superclass.description }
|
7
7
|
subject{ quandl("delete #{command}") }
|
8
|
+
|
8
9
|
|
9
10
|
context "DOES_NOT_EXIST" do
|
10
11
|
its(:stdout){ should match 'Not Found' }
|
11
12
|
end
|
12
13
|
|
14
|
+
context "DATASET_1" do
|
15
|
+
before(:each){ create(:dataset, code: 'DATASET_1') }
|
16
|
+
its(:stdout){ should match 'Deleted' }
|
17
|
+
end
|
18
|
+
|
13
19
|
end
|
14
20
|
|
15
21
|
describe Quandl::Command::Tasks::Delete do
|
@@ -22,7 +28,7 @@ describe Quandl::Command::Tasks::Delete do
|
|
22
28
|
before(:each){ Quandl::Command::Tasks::Upload.call( 'spec/fixtures/data/datasets.qdf' ) }
|
23
29
|
|
24
30
|
it "should delete spec/fixtures/data/datasets.qdf" do
|
25
|
-
TestOutput.should_receive(:info).with(/
|
31
|
+
TestOutput.should_receive(:info).with(/Deleted/).at_least(4).times
|
26
32
|
datasets = Quandl::Format::Dataset.load_from_file('spec/fixtures/data/datasets.qdf')
|
27
33
|
datasets.each{|d| Quandl::Command::Tasks::Delete.call( d.code, force_yes: true ) }
|
28
34
|
end
|
@@ -10,7 +10,7 @@ describe "./bin/quandl replace" do
|
|
10
10
|
subject{ quandl( [prefix, command].flatten.join(" ") ) }
|
11
11
|
|
12
12
|
context data_path("replace.qdf") do
|
13
|
-
its(:stdout){ should match /
|
13
|
+
its(:stdout){ should match /Updated|Created/ }
|
14
14
|
its(:stderr){ should be_blank }
|
15
15
|
end
|
16
16
|
|
@@ -8,11 +8,42 @@ describe "Quandl::Command::Tasks::Schedule" do
|
|
8
8
|
|
9
9
|
its "should parse 'at' time to cron correctly " do
|
10
10
|
schedule.stub_chain(:options, :at){'13:00'}
|
11
|
-
schedule.instance_eval{cron_at}.should == "0 13 * * *"
|
11
|
+
schedule.instance_eval{cron_at}.should == "* 0 13 * * *"
|
12
12
|
end
|
13
13
|
|
14
14
|
its "should parse 'at' time to cron correctly " do
|
15
15
|
schedule.stub_chain(:options, :at){'7pm monday'}
|
16
|
-
schedule.instance_eval{cron_at}.should == "0 19 * * 1"
|
16
|
+
schedule.instance_eval{cron_at}.should == "* 0 19 * * 1"
|
17
17
|
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "./bin/quandl schedule" do
|
21
|
+
|
22
|
+
let(:command){ self.class.superclass.description }
|
23
|
+
subject{ quandl("schedule #{command}") }
|
24
|
+
|
25
|
+
context "list" do
|
26
|
+
its(:stdout){ should_not match "scraper-test-file.rb" }
|
27
|
+
end
|
28
|
+
|
29
|
+
context "add spec/fixtures/scraper-test-file.rb" do
|
30
|
+
its(:stdout){ should match "You have successfully scheduled 'scraper-test-file.rb'" }
|
31
|
+
end
|
32
|
+
|
33
|
+
context "delete scraper-test-file.rb --force-yes" do
|
34
|
+
its(:stdout){ should match "You have successfully deleted 'scraper-test-file.rb'" }
|
35
|
+
end
|
36
|
+
|
37
|
+
context "add spec/fixtures/scraper-test-file.rb --at 7pm" do
|
38
|
+
its(:stdout){ should match "You have successfully scheduled 'scraper-test-file.rb'" }
|
39
|
+
end
|
40
|
+
|
41
|
+
context "list" do
|
42
|
+
its(:stdout){ should match "scraper-test-file.rb Scheduled: every day at 23:00"}
|
43
|
+
end
|
44
|
+
|
45
|
+
context "delete scraper-test-file.rb --force-yes" do
|
46
|
+
its(:stdout){ should match "You have successfully deleted 'scraper-test-file.rb'" }
|
47
|
+
end
|
48
|
+
|
18
49
|
end
|
@@ -14,7 +14,7 @@ describe "./bin/quandl superset" do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
context "upload spec/fixtures/superset.qdf" do
|
17
|
-
its(:stdout){ should match /Created|
|
17
|
+
its(:stdout){ should match /Created|Updated/ }
|
18
18
|
end
|
19
19
|
|
20
20
|
context "download SUPERSET_EXAMPLE" do
|
@@ -22,7 +22,7 @@ describe "./bin/quandl superset" do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
context "delete SUPERSET_EXAMPLE" do
|
25
|
-
its(:stdout){ should match /
|
25
|
+
its(:stdout){ should match /Deleted/ }
|
26
26
|
end
|
27
27
|
|
28
28
|
end
|
@@ -8,17 +8,17 @@ describe "./bin/quandl upload" do
|
|
8
8
|
subject{ quandl( [prefix, command].flatten.join(" ") ) }
|
9
9
|
|
10
10
|
context data_path("datasets.qdf") do
|
11
|
-
its(:stdout){ should match /
|
11
|
+
its(:stdout){ should match /Updated|Created/ }
|
12
12
|
its(:stderr){ should be_blank }
|
13
13
|
end
|
14
14
|
|
15
15
|
context data_path("metadata.qdf") do
|
16
|
-
its(:stdout){ should match /
|
16
|
+
its(:stdout){ should match /Updated|Created/ }
|
17
17
|
its(:stderr){ should be_blank }
|
18
18
|
end
|
19
19
|
|
20
20
|
context data_path("QUGC-42.qdf") do
|
21
|
-
its(:stdout){ should match /
|
21
|
+
its(:stdout){ should match /Updated|Created/ }
|
22
22
|
its(:stderr){ should be_blank }
|
23
23
|
end
|
24
24
|
|
@@ -13,7 +13,7 @@ describe "./bin/quandl" do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
context "upload spec/fixtures/data/metadata.qdf" do
|
16
|
-
its(:stdout){ should match /Created|
|
16
|
+
its(:stdout){ should match /Created|Updated/ }
|
17
17
|
its(:stderr){ should be_blank }
|
18
18
|
end
|
19
19
|
|
@@ -23,11 +23,11 @@ describe "./bin/quandl" do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
context "delete TEST_1 TEST_5 TEST_15 --force-yes" do
|
26
|
-
its(:stdout){ should match '
|
26
|
+
its(:stdout){ should match 'Deleted' }
|
27
27
|
end
|
28
28
|
|
29
29
|
context "info" do
|
30
|
-
its(:stdout){ should match
|
30
|
+
its(:stdout){ should match QuandlTestConfig.quandl_url }
|
31
31
|
its(:stderr){ should be_blank }
|
32
32
|
end
|
33
33
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,15 +1,26 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
QuandlTestConfig = OpenStruct.new(YAML.load(File.read(File.join(ENV['HOME'], '.quandl/test'))))
|
2
7
|
|
3
|
-
ENV['QUANDL_TOKEN'] =
|
4
|
-
ENV['QUANDL_URL'] =
|
8
|
+
ENV['QUANDL_TOKEN'] = QuandlTestConfig.token
|
9
|
+
ENV['QUANDL_URL'] = QuandlTestConfig.quandl_url
|
5
10
|
|
6
11
|
require "rspec"
|
7
12
|
require 'factory_girl'
|
8
13
|
require 'pry'
|
9
14
|
require 'commander'
|
10
15
|
require 'quandl/command'
|
16
|
+
require 'quandl/client'
|
11
17
|
require 'open3'
|
12
18
|
|
19
|
+
include Quandl::Client
|
20
|
+
|
21
|
+
Quandl::Client.token = QuandlTestConfig.token
|
22
|
+
Quandl::Client.use QuandlTestConfig.quandl_url
|
23
|
+
|
13
24
|
# disable log output
|
14
25
|
class TestOutput
|
15
26
|
|
@@ -41,7 +52,7 @@ end
|
|
41
52
|
def quandl(statement)
|
42
53
|
version = "#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
|
43
54
|
path = File.join(Quandl::Command::Tasks.root, 'bin/quandl')
|
44
|
-
command = "bundle exec #{path} #{statement} --token #{
|
55
|
+
command = "bundle exec #{path} #{statement} --token #{QuandlTestConfig.token} --url #{QuandlTestConfig.quandl_url} --threads 1 --force-yes --trace --sandbox"
|
45
56
|
stdin, stdout, stderr = Open3.popen3(command)
|
46
57
|
OpenStruct.new( stderr: stderr.read, stdout: stdout.read )
|
47
58
|
end
|
data/tasks/toolbelt.rake
CHANGED
@@ -27,42 +27,48 @@ def windows_root
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
namespace :
|
30
|
+
namespace :quandl do
|
31
31
|
|
32
32
|
namespace :release do
|
33
33
|
|
34
34
|
desc "Build tarball, windows, and darwin and push to storage"
|
35
|
-
task :all
|
35
|
+
task :all do |t, args|
|
36
36
|
# build tarball
|
37
|
-
Rake::Task["
|
37
|
+
Rake::Task["quandl:release:tarball"].execute args.to_hash
|
38
38
|
# build windows exe
|
39
|
-
Rake::Task["
|
39
|
+
Rake::Task["quandl:release:windows"].execute args.to_hash
|
40
40
|
# build darwin pkg
|
41
|
-
Rake::Task["
|
41
|
+
Rake::Task["quandl:release:darwin"].execute args.to_hash
|
42
42
|
end
|
43
43
|
|
44
44
|
desc "Build tarball and push to storage"
|
45
|
-
task :tarball
|
45
|
+
task :tarball do
|
46
|
+
revision = `git branch | grep '*'`.gsub("*", '').strip.rstrip
|
47
|
+
args = {}
|
48
|
+
args[:revision] = revision unless revision == 'master'
|
46
49
|
# build package
|
47
|
-
Rake::Task["
|
50
|
+
Rake::Task["quandl:build:tarball"].execute args
|
48
51
|
# push package to s3
|
49
|
-
Rake::Task["
|
52
|
+
Rake::Task["quandl:push:tarball"].execute args
|
50
53
|
end
|
51
54
|
|
52
55
|
desc "Build darwin and push to storage"
|
53
|
-
task :darwin
|
56
|
+
task :darwin do |t, args|
|
54
57
|
# build package
|
55
|
-
Rake::Task["
|
58
|
+
Rake::Task["quandl:build:darwin"].execute args.to_hash
|
56
59
|
# push package to s3
|
57
|
-
Rake::Task["
|
60
|
+
Rake::Task["quandl:push:darwin"].execute args.to_hash
|
58
61
|
end
|
59
62
|
|
60
63
|
desc "Build windows executable and push to storage"
|
61
|
-
task :windows
|
64
|
+
task :windows do |t, args|
|
65
|
+
revision = `git branch | grep '*'`.gsub("*", '').strip.rstrip
|
66
|
+
args = {}
|
67
|
+
args[:revision] = revision unless revision == 'master'
|
62
68
|
# build tarball
|
63
|
-
Rake::Task["
|
69
|
+
Rake::Task["quandl:build:tarball"].execute args.to_hash.merge({ platform: 'windows' })
|
64
70
|
# push tarball to s3
|
65
|
-
Rake::Task["
|
71
|
+
Rake::Task["quandl:push:tarball"].execute args.to_hash.merge( platform: 'windows' )
|
66
72
|
# prereleases should not build Quandl Setup
|
67
73
|
unless args[:revision].present?
|
68
74
|
# inno is required
|
@@ -71,7 +77,7 @@ namespace :toolbelt do
|
|
71
77
|
puts "Cannot build 'Quandl Setup.exe'"
|
72
78
|
else
|
73
79
|
# create windows exe setup
|
74
|
-
Rake::Task["
|
80
|
+
Rake::Task["quandl:build:windows"].execute
|
75
81
|
# push windows-package to s3
|
76
82
|
input_file = File.join( Toolbelt.pkg_path, 'Quandl Setup.exe')
|
77
83
|
# upload to s3
|
@@ -92,7 +98,7 @@ namespace :toolbelt do
|
|
92
98
|
Toolbelt::Build::Windows.execute args.to_hash
|
93
99
|
end
|
94
100
|
|
95
|
-
task :tarball, :revision do |t, args|
|
101
|
+
task :tarball, :revision, :platform do |t, args|
|
96
102
|
Toolbelt::Build::Tarball.execute args.to_hash
|
97
103
|
end
|
98
104
|
|
@@ -120,10 +126,13 @@ namespace :toolbelt do
|
|
120
126
|
end
|
121
127
|
|
122
128
|
task :darwin, :revision, :platform do |t,args|
|
123
|
-
|
129
|
+
name = "quandl-toolbelt"
|
130
|
+
name += "-#{args[:revision]}" if args[:revision].present?
|
131
|
+
Toolbelt::Storage.create( "#{name}.pkg", File.open( File.join(Toolbelt.build_path, 'quandl-toolbelt.pkg') ) )
|
132
|
+
Toolbelt::Storage.create( "VERSION", File.open( File.join(Toolbelt.root_path, 'VERSION') ) )
|
133
|
+
|
124
134
|
end
|
125
135
|
|
126
136
|
end
|
127
|
-
|
128
137
|
|
129
138
|
end
|
data/tasks/toolbelt.rb
CHANGED
@@ -15,6 +15,10 @@ class Toolbelt
|
|
15
15
|
@resource_path ||= File.join(root_path, "dist/resources/")
|
16
16
|
end
|
17
17
|
|
18
|
+
def pkg_releases_path
|
19
|
+
@pkg_releases_path ||= File.join( build_path, 'releases' )
|
20
|
+
end
|
21
|
+
|
18
22
|
def release_path
|
19
23
|
@release_path ||= File.join(tarball_path, "quandl-command" )
|
20
24
|
end
|
@@ -46,12 +50,12 @@ class Toolbelt
|
|
46
50
|
def trace?
|
47
51
|
Rake.application.options.trace == true
|
48
52
|
end
|
49
|
-
|
53
|
+
|
50
54
|
end
|
51
55
|
|
52
56
|
attr_accessor :args, :options, :block
|
53
57
|
|
54
|
-
delegate :root_path, :ruby_pkg_path, :pkg_path, :tmp_path, :build_path, :tarball_path, :release_path, :resource_path, :trace?, to: :class
|
58
|
+
delegate :root_path, :ruby_pkg_path, :pkg_path, :tmp_path, :build_path, :tarball_path, :pkg_releases_path, :release_path, :resource_path, :trace?, to: :class
|
55
59
|
|
56
60
|
def initialize(*args, &block)
|
57
61
|
self.options = OpenStruct.new(args.extract_options!)
|
@@ -72,6 +76,26 @@ class Toolbelt
|
|
72
76
|
run_callbacks(:ensure)
|
73
77
|
end
|
74
78
|
end
|
79
|
+
|
80
|
+
def timestamp
|
81
|
+
@timestamp ||= (Time.now.getutc.to_f * 10000).to_i.to_s.gsub('.','')
|
82
|
+
end
|
83
|
+
|
84
|
+
def git_short_reference
|
85
|
+
@git_short_reference ||= git_reference[0..7]
|
86
|
+
end
|
87
|
+
|
88
|
+
def git_reference
|
89
|
+
@git_reference ||= `git rev-parse HEAD`.strip.rstrip
|
90
|
+
end
|
91
|
+
|
92
|
+
def git_branch
|
93
|
+
@git_branch ||= `git rev-parse --abbrev-ref HEAD`.strip.rstrip
|
94
|
+
end
|
95
|
+
|
96
|
+
def prerelease_information
|
97
|
+
"(#{git_branch.split('/').first}/#{git_short_reference})" unless git_branch == 'master'
|
98
|
+
end
|
75
99
|
|
76
100
|
def revision
|
77
101
|
@revision ||= options.revision.to_s.gsub("/","-") || "master"
|
@@ -12,32 +12,77 @@ class Tasks::Toolbelt::Build::Darwin < Tasks::Toolbelt
|
|
12
12
|
# compile build
|
13
13
|
Tasks::Toolbelt::Build::Tarball.execute(options)
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
create_release
|
16
|
+
add_quandl_executable
|
17
|
+
|
18
|
+
generate_distribution
|
19
|
+
generate_package_info
|
20
|
+
generate_postinstall
|
21
|
+
generate_bom
|
17
22
|
|
18
|
-
|
19
|
-
|
23
|
+
add_payload
|
24
|
+
add_ruby
|
20
25
|
|
26
|
+
package_and_sign
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def kbytes
|
31
|
+
@kbytes ||= %x{ du -ks #{release_path} | cut -f 1 }.strip.rstrip
|
32
|
+
end
|
33
|
+
|
34
|
+
def num_files
|
35
|
+
@num_files ||= %x{ find #{release_path} | wc -l }.strip.rstrip
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def create_release
|
41
|
+
# create releases dir and move quandl into it
|
42
|
+
mv release_path, "#{pkg_releases_path}/#{timestamp}"
|
43
|
+
mkdir_p release_path
|
44
|
+
mv pkg_releases_path, "#{release_path}/releases"
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_quandl_executable
|
48
|
+
mkdir_p "#{release_path}/bin"
|
49
|
+
cp resource("pkg/quandl"), "#{release_path}/bin/quandl"
|
50
|
+
end
|
51
|
+
|
52
|
+
def generate_distribution
|
21
53
|
mkdir_p "#{pkg_path}/Resources"
|
22
54
|
mkdir_p "#{pkg_path}/quandl-toolbelt.pkg"
|
23
55
|
|
24
56
|
dist = File.read(resource("pkg/Distribution.erb"))
|
25
57
|
dist = ERB.new(dist).result(binding)
|
26
58
|
File.open("#{pkg_path}/Distribution", "w") { |f| f.puts dist }
|
27
|
-
|
59
|
+
end
|
60
|
+
|
61
|
+
def generate_package_info
|
28
62
|
dist = File.read(resource("pkg/PackageInfo.erb"))
|
29
63
|
dist = ERB.new(dist).result(binding)
|
30
64
|
File.open("#{pkg_path}/quandl-toolbelt.pkg/PackageInfo", "w") { |f| f.puts dist }
|
31
|
-
|
65
|
+
end
|
66
|
+
|
67
|
+
def generate_postinstall
|
68
|
+
file = File.read(resource("pkg/postinstall.erb"))
|
69
|
+
file = ERB.new(file).result(binding)
|
32
70
|
mkdir_p "#{pkg_path}/quandl-toolbelt.pkg/Scripts"
|
33
|
-
|
71
|
+
File.open("#{pkg_path}/quandl-toolbelt.pkg/Scripts/postinstall", "w") { |f| f.puts file }
|
34
72
|
chmod 0755, "#{pkg_path}/quandl-toolbelt.pkg/Scripts/postinstall"
|
35
|
-
|
73
|
+
end
|
74
|
+
|
75
|
+
def generate_bom
|
36
76
|
sh %{ mkbom -s #{release_path} #{pkg_path}/quandl-toolbelt.pkg/Bom }
|
37
|
-
|
77
|
+
end
|
78
|
+
|
79
|
+
def add_payload
|
38
80
|
Dir.chdir(release_path) do
|
39
81
|
sh %{ pax -wz -x cpio . > #{pkg_path}/quandl-toolbelt.pkg/Payload }
|
40
82
|
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def add_ruby
|
41
86
|
|
42
87
|
# download, compile, and build ruby pkg unless already done
|
43
88
|
Tasks::Toolbelt::Build::Ruby.execute unless File.exists?(File.join(build_path, 'ruby.pkg'))
|
@@ -49,20 +94,22 @@ class Tasks::Toolbelt::Build::Darwin < Tasks::Toolbelt
|
|
49
94
|
mv "ruby.pkg", "#{pkg_path}/ruby.pkg"
|
50
95
|
end
|
51
96
|
|
97
|
+
end
|
98
|
+
|
99
|
+
def package_and_sign
|
52
100
|
sh %{ pkgutil --flatten #{pkg_path} #{build_path}/quandl-toolbelt-unsigned.pkg }
|
53
101
|
sh %{ productsign --sign #{CERTIFICATE_ID} #{build_path}/quandl-toolbelt-unsigned.pkg #{build_path}/quandl-toolbelt.pkg }
|
54
102
|
|
55
103
|
end
|
56
104
|
|
57
|
-
protected
|
58
|
-
|
59
|
-
|
60
105
|
def clean
|
61
106
|
rm "#{build_path}/quandl-toolbelt.pkg" if File.exists?("#{build_path}/quandl-toolbelt.pkg")
|
62
107
|
rm_rf tmp_path
|
63
108
|
mkdir_p tmp_path
|
64
109
|
rm_rf pkg_path
|
65
110
|
mkdir_p pkg_path
|
111
|
+
rm_rf pkg_releases_path
|
112
|
+
mkdir_p pkg_releases_path
|
66
113
|
end
|
67
114
|
|
68
115
|
def cleanup
|