teapot 3.2.1 → 3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 629d7c7614d378aca1f52df03b7f94fbbbd75bf99c60a2171d5cba2ab63b17ae
4
- data.tar.gz: 443aa45d4d4f4d732bb7fce592b35f9312d3a8abadabcd5c4b4a4191f82e3ff9
3
+ metadata.gz: 9ddf54a5f033a10d5fc574f0222df4cb5f567416d4d279d0a272052527eacfad
4
+ data.tar.gz: 147d1d9e73c9fd945cdc3d64beba318b2f660aa2aabd974ac3dd9ec487455cc5
5
5
  SHA512:
6
- metadata.gz: 40486dc53b3a879a786209091b2adc8d70a32c66baac7b12b830bd58dd8917cd5df8c2814621978f41351c0b128b9cc0fb92191b54d10d09c1de3d2483abf767
7
- data.tar.gz: 2d29b7ae0f9735121cebcb2b1f887257a2982035b258f50331e9787d47fbbcd2aa89f3ffaab4a9a50de4a9140412985875c000e8d269e60b989eb1d685e35fdc
6
+ metadata.gz: e394f73f673ac474050f75fbbe2d8a9a2f3eaf381c49b5f928814deb6ec7d32fae0143155025d06da768dad39eadaa39bb7ee7ad89e3588a13f20205b34a9c80
7
+ data.tar.gz: bc7f8a41f4b8ded58880e777cb3f412245a198885f9cc0002ed43944673956d03c98fbe5c4cb3bd11902b131547e3135ac3537e54233ff0892a2c5a19591b60a
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .rspec_status
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
@@ -15,4 +16,6 @@ spec/reports
15
16
  test/tmp
16
17
  test/version_tmp
17
18
  tmp
19
+
18
20
  kurocha
21
+ dependency.svg
data/bin/teapot CHANGED
@@ -22,40 +22,4 @@
22
22
 
23
23
  require_relative '../lib/teapot/command'
24
24
 
25
- if command = Teapot::Command.parse(ARGV)
26
- logger = command.logger
27
-
28
- begin
29
- command.invoke
30
- rescue Teapot::IncompatibleTeapotError => error
31
- logger.error(command, error) do
32
- "Supported minimum version #{Teapot::MINIMUM_LOADER_VERSION.dump} to #{Teapot::LOADER_VERSION.dump}."
33
- end
34
-
35
- exit 1
36
- rescue Build::Dependency::UnresolvedDependencyError => error
37
- logger.error(command, error) do |buffer|
38
- buffer.puts "Unresolved dependencies:"
39
-
40
- error.chain.unresolved.each do |name, parent|
41
- buffer.puts "#{parent} depends on #{name.inspect}"
42
-
43
- conflicts = error.chain.conflicts[name]
44
-
45
- if conflicts
46
- conflicts.each do |conflict|
47
- buffer.puts " - provided by #{conflict.name}"
48
- end
49
- end
50
- end
51
-
52
- buffer.puts "Cannot continue due to unresolved dependencies!"
53
- end
54
-
55
- exit 2
56
- rescue StandardError => error
57
- logger.error(command, error)
58
-
59
- exit 3
60
- end
61
- end
25
+ Teapot::Command::Top.call
@@ -39,10 +39,6 @@ require 'console'
39
39
 
40
40
  module Teapot
41
41
  module Command
42
- def self.parse(*args)
43
- Top.parse(*args)
44
- end
45
-
46
42
  class Top < Samovar::Command
47
43
  self.description = "A decentralised package manager and build tool."
48
44
 
@@ -97,14 +93,44 @@ module Teapot
97
93
  Context.new(root, configuration: configuration)
98
94
  end
99
95
 
100
- def invoke
96
+ def call
101
97
  if @options[:version]
102
98
  puts "teapot v#{Teapot::VERSION}"
103
99
  elsif @options[:help]
104
100
  print_usage(output: $stdout)
105
101
  else
106
- @command.invoke
102
+ @command.call
103
+ end
104
+ rescue Teapot::IncompatibleTeapotError => error
105
+ logger.error(command, error) do
106
+ "Supported minimum version #{Teapot::MINIMUM_LOADER_VERSION.dump} to #{Teapot::LOADER_VERSION.dump}."
107
+ end
108
+
109
+ raise
110
+ rescue ::Build::Dependency::UnresolvedDependencyError => error
111
+ logger.error(command, error) do |buffer|
112
+ buffer.puts "Unresolved dependencies:"
113
+
114
+ error.chain.unresolved.each do |name, parent|
115
+ buffer.puts "#{parent} depends on #{name.inspect}"
116
+
117
+ conflicts = error.chain.conflicts[name]
118
+
119
+ if conflicts
120
+ conflicts.each do |conflict|
121
+ buffer.puts " - provided by #{conflict.name}"
122
+ end
123
+ end
124
+ end
125
+
126
+ buffer.puts "Cannot continue due to unresolved dependencies!"
107
127
  end
128
+
129
+ raise
130
+ rescue StandardError => error
131
+ logger.error(command, error)
132
+
133
+ raise
108
134
  end
109
135
  end
110
136
  end
@@ -38,7 +38,7 @@ module Teapot
38
38
  many :targets, "Build these targets, or use them to help the dependency resolution process."
39
39
  split :argv, "Arguments passed to child process(es) of build if any."
40
40
 
41
- def invoke
41
+ def call
42
42
  context = parent.context
43
43
 
44
44
  # The targets to build:
@@ -52,7 +52,6 @@ module Teapot
52
52
  environment = context.configuration.environment
53
53
 
54
54
  controller = ::Build::Controller.new(logger: parent.logger, limit: @options[:limit]) do |controller|
55
-
56
55
  controller.add_chain(chain, self.argv, environment)
57
56
  end
58
57
 
@@ -25,7 +25,7 @@ module Teapot
25
25
  class Clean < Samovar::Command
26
26
  self.description = "Delete everything in the teapot directory."
27
27
 
28
- def invoke
28
+ def call
29
29
  context = parent.context
30
30
  logger = parent.logger
31
31
  configuration = context.configuration
@@ -33,7 +33,7 @@ module Teapot
33
33
 
34
34
  one :source, "The source repository to clone.", required: true
35
35
 
36
- def invoke
36
+ def call
37
37
  logger = parent.logger
38
38
 
39
39
  name = File.basename(::Build::URI[@source].path, ".git")
@@ -49,7 +49,7 @@ module Teapot
49
49
  _repository = Rugged::Repository.clone_at(@source, root.to_s, credentials: self.method(:credentials))
50
50
 
51
51
  # Fetch the initial packages:
52
- Fetch[parent: nested].invoke
52
+ Fetch[parent: nested].call
53
53
  end
54
54
 
55
55
  def credentials(url, username, types)
@@ -33,7 +33,7 @@ module Teapot
33
33
  one :source, "The source repository to use for fetching packages, e.g. https://github.com/kurocha.", required: true
34
34
  many :packages, "Any packages you'd like to include in the project.", default: ["generate-project"]
35
35
 
36
- def invoke
36
+ def call
37
37
  logger = parent.logger
38
38
 
39
39
  nested = parent['--root', parent.options[:root] || name.gsub(/\s+/, '-').downcase]
@@ -52,7 +52,7 @@ module Teapot
52
52
  generate_project(root, @name, @source, @packages)
53
53
 
54
54
  # Fetch the initial packages:
55
- Fetch[parent: nested].invoke
55
+ Fetch[parent: nested].call
56
56
 
57
57
  context = nested.context
58
58
  selection = context.select
@@ -60,10 +60,10 @@ module Teapot
60
60
 
61
61
  if target_names.any?
62
62
  # Generate the initial project files:
63
- Build[*target_names, parent: nested].invoke
63
+ Build[*target_names, parent: nested].call
64
64
 
65
65
  # Fetch any additional packages:
66
- Fetch[parent: nested].invoke
66
+ Fetch[parent: nested].call
67
67
  end
68
68
 
69
69
  # Stage all files:
@@ -51,7 +51,7 @@ module Teapot
51
51
  parent.context
52
52
  end
53
53
 
54
- def invoke
54
+ def call
55
55
  selection = context.select
56
56
 
57
57
  packages = selection.configuration.packages
@@ -41,7 +41,7 @@ module Teapot
41
41
  end
42
42
  end
43
43
 
44
- def invoke
44
+ def call
45
45
  context = parent.context
46
46
 
47
47
  self.process(selection(parent.context))
@@ -19,5 +19,5 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  module Teapot
22
- VERSION = "3.2.1"
22
+ VERSION = "3.4.0"
23
23
  end
@@ -35,7 +35,7 @@ RSpec.describe Teapot::Command::Clone, order: :defined do
35
35
  subject {top['clone', source]}
36
36
 
37
37
  it "should checkout files" do
38
- expect{subject.invoke}.to_not raise_error
38
+ expect{subject.call}.to_not raise_error
39
39
 
40
40
  expect(File).to be_exist(root + "teapot.rb")
41
41
 
@@ -33,7 +33,7 @@ RSpec.describe Teapot::Command::Fetch, order: :defined do
33
33
  subject {top['clean']}
34
34
 
35
35
  it "should delete all packages" do
36
- expect{subject.invoke}.to_not raise_error
36
+ expect{subject.call}.to_not raise_error
37
37
 
38
38
  expect(File).to_not be_exist(root + "test-project/teapot/packages/test")
39
39
  end
@@ -59,14 +59,14 @@ RSpec.describe Teapot::Command::Fetch, order: :defined do
59
59
  subject {top['fetch']}
60
60
 
61
61
  it "should fetch repositories" do
62
- expect{subject.invoke}.to_not raise_error
62
+ expect{subject.call}.to_not raise_error
63
63
 
64
64
  # Did the thing package checkout correctly?
65
65
  expect(File).to be_exist(root + "test-project/teapot/packages/test/thing/teapot.rb")
66
66
  end
67
67
 
68
68
  it "should fetch repositories with no changes" do
69
- expect{subject.invoke}.to_not raise_error
69
+ expect{subject.call}.to_not raise_error
70
70
 
71
71
  # Did the thing package checkout correctly?
72
72
  expect(File).to be_exist(root + "test-project/teapot/packages/test/thing/teapot.rb")
@@ -84,7 +84,7 @@ RSpec.describe Teapot::Command::Fetch, order: :defined do
84
84
  end
85
85
 
86
86
  it "can't fetch with local modifications" do
87
- expect{subject.invoke}.to raise_error(Teapot::Command::FetchError, /local modifications/)
87
+ expect{subject.call}.to raise_error(Teapot::Command::FetchError, /local modifications/)
88
88
 
89
89
  path.delete
90
90
  end
@@ -99,7 +99,7 @@ RSpec.describe Teapot::Command::Fetch, order: :defined do
99
99
  end
100
100
 
101
101
  it "can fetch changes" do
102
- expect{subject.invoke}.to_not raise_error
102
+ expect{subject.call}.to_not raise_error
103
103
 
104
104
  expect(File).to be_exist(thing_package_path + "README.md")
105
105
  end
@@ -35,7 +35,7 @@ RSpec.describe Teapot::Command, order: :defined do
35
35
  it "should create a new project" do
36
36
  root.delete
37
37
 
38
- expect{subject.invoke}.to_not raise_error
38
+ expect{subject.call}.to_not raise_error
39
39
  expect(project_path + "teapot.rb").to be_exist
40
40
  expect(project_path + ".travis.yml").to be_exist
41
41
  end
@@ -45,7 +45,7 @@ RSpec.describe Teapot::Command, order: :defined do
45
45
  subject {top["build", "Run/TestProject"]}
46
46
 
47
47
  it "should build project" do
48
- expect{subject.invoke}.to_not raise_error
48
+ expect{subject.call}.to_not raise_error
49
49
  end
50
50
  end
51
51
 
@@ -53,7 +53,7 @@ RSpec.describe Teapot::Command, order: :defined do
53
53
  subject {top["fetch"]}
54
54
 
55
55
  it "should fetch any changes" do
56
- expect{subject.invoke}.to_not raise_error
56
+ expect{subject.call}.to_not raise_error
57
57
  end
58
58
  end
59
59
  end
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.required_ruby_version = '>= 2.1.0'
26
26
 
27
27
  spec.add_dependency "graphviz", "~> 1.0"
28
- spec.add_dependency "rugged", "~> 0.27.0"
28
+ spec.add_dependency "rugged", "~> 1.0"
29
29
 
30
30
  spec.add_dependency "build", "~> 2.4"
31
31
  spec.add_dependency "build-environment", "~> 1.10"
@@ -34,6 +34,8 @@ Gem::Specification.new do |spec|
34
34
  spec.add_dependency "build-uri", "~> 1.0"
35
35
  spec.add_dependency "build-text", "~> 1.0"
36
36
 
37
+ spec.add_dependency "process-group", "~> 1.2"
38
+
37
39
  spec.add_dependency "console", "~> 1.0"
38
40
  spec.add_dependency "samovar", "~> 2.0"
39
41
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teapot
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-14 00:00:00.000000000 Z
11
+ date: 2020-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphviz
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.27.0
33
+ version: '1.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.27.0
40
+ version: '1.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: build
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '1.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: process-group
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.2'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.2'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: console
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -267,7 +281,7 @@ homepage: http://www.teapot.nz
267
281
  licenses:
268
282
  - MIT
269
283
  metadata: {}
270
- post_install_message:
284
+ post_install_message:
271
285
  rdoc_options: []
272
286
  require_paths:
273
287
  - lib
@@ -282,8 +296,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
296
  - !ruby/object:Gem::Version
283
297
  version: '0'
284
298
  requirements: []
285
- rubygems_version: 3.0.4
286
- signing_key:
299
+ rubygems_version: 3.1.2
300
+ signing_key:
287
301
  specification_version: 4
288
302
  summary: Teapot is a tool for managing complex cross-platform builds.
289
303
  test_files: