berkshelf 7.0.7 → 7.0.8
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 +4 -4
- data/Rakefile +1 -1
- data/berkshelf.gemspec +8 -9
- data/bin/berks +5 -0
- data/lib/berkshelf/cached_cookbook.rb +1 -1
- data/lib/berkshelf/chef_config_compat.rb +1 -0
- data/lib/berkshelf/chef_repo_universe.rb +2 -2
- data/lib/berkshelf/formatters/json.rb +3 -3
- data/lib/berkshelf/lockfile.rb +3 -3
- data/lib/berkshelf/uploader.rb +3 -3
- data/lib/berkshelf/version.rb +1 -1
- metadata +32 -186
- data/.github/lock.yml +0 -1
- data/.gitignore +0 -30
- data/.rubocop.yml +0 -12
- data/.travis.yml +0 -73
- data/CHANGELOG.legacy.md +0 -307
- data/CHANGELOG.md +0 -1589
- data/CONTRIBUTING.md +0 -68
- data/Gemfile.lock +0 -292
- data/PLUGINS.md +0 -25
- data/README.md +0 -72
- data/Thorfile +0 -61
- data/appveyor.yml +0 -31
- data/docs/berkshelf_for_newcomers.md +0 -64
- data/features/artifactory.feature +0 -70
- data/features/berksfile.feature +0 -46
- data/features/commands/apply.feature +0 -41
- data/features/commands/contingent.feature +0 -47
- data/features/commands/info.feature +0 -141
- data/features/commands/install.feature +0 -646
- data/features/commands/list.feature +0 -78
- data/features/commands/outdated.feature +0 -176
- data/features/commands/package.feature +0 -17
- data/features/commands/search.feature +0 -17
- data/features/commands/shelf/list.feature +0 -32
- data/features/commands/shelf/show.feature +0 -113
- data/features/commands/shelf/uninstall.feature +0 -96
- data/features/commands/show.feature +0 -83
- data/features/commands/update.feature +0 -142
- data/features/commands/upload.feature +0 -499
- data/features/commands/vendor.feature +0 -154
- data/features/commands/verify.feature +0 -29
- data/features/commands/viz.feature +0 -66
- data/features/community_site.feature +0 -37
- data/features/help.feature +0 -11
- data/features/json_formatter.feature +0 -158
- data/features/lifecycle.feature +0 -378
- data/features/lockfile.feature +0 -378
- data/features/step_definitions/berksfile_steps.rb +0 -54
- data/features/step_definitions/chef/config_steps.rb +0 -12
- data/features/step_definitions/chef_server_steps.rb +0 -60
- data/features/step_definitions/cli_steps.rb +0 -18
- data/features/step_definitions/config_steps.rb +0 -46
- data/features/step_definitions/environment_steps.rb +0 -11
- data/features/step_definitions/filesystem_steps.rb +0 -286
- data/features/step_definitions/gem_steps.rb +0 -13
- data/features/step_definitions/json_steps.rb +0 -29
- data/features/step_definitions/utility_steps.rb +0 -11
- data/features/support/aruba.rb +0 -12
- data/features/support/env.rb +0 -77
- data/spec/fixtures/cookbooks/example_cookbook/.gitignore +0 -2
- data/spec/fixtures/cookbooks/example_cookbook/.kitchen.yml +0 -26
@@ -1,154 +0,0 @@
|
|
1
|
-
Feature: Vendoring cookbooks to a directory
|
2
|
-
Background:
|
3
|
-
* the Chef Server has cookbooks:
|
4
|
-
| fake | 1.0.0 |
|
5
|
-
| ekaf | 2.0.0 |
|
6
|
-
|
7
|
-
Scenario: successfully vendoring a Berksfile with multiple cookbook demands
|
8
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
9
|
-
"""
|
10
|
-
cookbook 'fake'
|
11
|
-
cookbook 'ekaf'
|
12
|
-
"""
|
13
|
-
When I successfully run `berks vendor cukebooks`
|
14
|
-
Then the directory "cukebooks/fake" should contain version "1.0.0" of the "fake" cookbook
|
15
|
-
And the directory "cukebooks/ekaf" should contain version "2.0.0" of the "ekaf" cookbook
|
16
|
-
|
17
|
-
Scenario: attempting to vendor when no Berksfile is present
|
18
|
-
When I run `berks vendor cukebooks`
|
19
|
-
Then the exit status should be "BerksfileNotFound"
|
20
|
-
|
21
|
-
Scenario: vendoring a Berksfile with a metadata demand
|
22
|
-
Given a cookbook named "fake"
|
23
|
-
And I cd to "fake"
|
24
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
25
|
-
"""
|
26
|
-
metadata
|
27
|
-
"""
|
28
|
-
When I successfully run `berks vendor cukebooks`
|
29
|
-
Then the directory "cukebooks/fake" should contain version "0.0.0" of the "fake" cookbook
|
30
|
-
|
31
|
-
Scenario: vendoring a cookbook with transitive dependencies
|
32
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
33
|
-
"""
|
34
|
-
metadata
|
35
|
-
"""
|
36
|
-
And I write to "metadata.rb" with:
|
37
|
-
"""
|
38
|
-
name 'bacon'
|
39
|
-
version '1.0.0'
|
40
|
-
|
41
|
-
depends 'fake'
|
42
|
-
depends 'ekaf'
|
43
|
-
"""
|
44
|
-
When I successfully run `berks vendor vendor`
|
45
|
-
Then the directory "vendor/bacon" should contain version "1.0.0" of the "bacon" cookbook
|
46
|
-
And the directory "vendor/fake" should contain version "1.0.0" of the "fake" cookbook
|
47
|
-
And the directory "vendor/ekaf" should contain version "2.0.0" of the "ekaf" cookbook
|
48
|
-
|
49
|
-
Scenario: vendoring a cookbook with transitive dependencies when a lockfile is present
|
50
|
-
Given a cookbook named "bacon"
|
51
|
-
And the cookbook "bacon" has the file "metadata.rb" with:
|
52
|
-
"""
|
53
|
-
name 'bacon'
|
54
|
-
version '1.0.0'
|
55
|
-
|
56
|
-
depends 'fake'
|
57
|
-
depends 'ekaf'
|
58
|
-
"""
|
59
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
60
|
-
"""
|
61
|
-
cookbook 'bacon', path: './bacon'
|
62
|
-
"""
|
63
|
-
And I write to "Berksfile.lock" with:
|
64
|
-
"""
|
65
|
-
DEPENDENCIES
|
66
|
-
bacon
|
67
|
-
path: ./bacon
|
68
|
-
|
69
|
-
GRAPH
|
70
|
-
bacon (1.0.0)
|
71
|
-
ekaf (>= 0.0.0)
|
72
|
-
fake (>= 0.0.0)
|
73
|
-
ekaf (2.0.0)
|
74
|
-
fake (1.0.0)
|
75
|
-
"""
|
76
|
-
When I successfully run `berks vendor vendor`
|
77
|
-
Then the directory "vendor/bacon" should contain version "1.0.0" of the "bacon" cookbook
|
78
|
-
And the directory "vendor/fake" should contain version "1.0.0" of the "fake" cookbook
|
79
|
-
And the directory "vendor/ekaf" should contain version "2.0.0" of the "ekaf" cookbook
|
80
|
-
|
81
|
-
Scenario: vendoring without an explicit path to vendor into
|
82
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
83
|
-
"""
|
84
|
-
cookbook 'fake'
|
85
|
-
"""
|
86
|
-
When I successfully run `berks vendor`
|
87
|
-
Then the directory "berks-cookbooks/fake" should contain version "1.0.0" of the "fake" cookbook
|
88
|
-
|
89
|
-
Scenario: vendoring to a directory that already exists
|
90
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
91
|
-
"""
|
92
|
-
cookbook 'fake'
|
93
|
-
"""
|
94
|
-
And a directory named "cukebooks"
|
95
|
-
And a directory named "cukebooks/fake/ponies"
|
96
|
-
And a directory named "cukebooks/existing_cookbook"
|
97
|
-
When I successfully run `berks vendor --delete cukebooks`
|
98
|
-
Then the directory "cukebooks/fake" should contain version "1.0.0" of the "fake" cookbook
|
99
|
-
And a directory named "cukebooks/fake/ponies" should not exist
|
100
|
-
And a directory named "cukebooks/existing_cookbook" should not exist
|
101
|
-
|
102
|
-
Scenario: vendoring into a nested directory
|
103
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
104
|
-
"""
|
105
|
-
cookbook 'fake'
|
106
|
-
"""
|
107
|
-
When I successfully run `berks vendor path/to/cukebooks`
|
108
|
-
Then the directory "path/to/cukebooks/fake" should contain version "1.0.0" of the "fake" cookbook
|
109
|
-
|
110
|
-
Scenario: vendoring a cookbook with chefignores
|
111
|
-
Given a cookbook named "bacon"
|
112
|
-
And the cookbook "bacon" has the file "metadata.rb" with:
|
113
|
-
"""
|
114
|
-
name 'bacon'
|
115
|
-
version '1.0.0'
|
116
|
-
"""
|
117
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
118
|
-
"""
|
119
|
-
cookbook 'bacon', path: './bacon'
|
120
|
-
"""
|
121
|
-
And the cookbook "bacon" has the file "chefignore" with:
|
122
|
-
"""
|
123
|
-
*.turd
|
124
|
-
"""
|
125
|
-
And the cookbook "bacon" has the file "foo.turd" with:
|
126
|
-
"""
|
127
|
-
poop
|
128
|
-
"""
|
129
|
-
And the cookbook "bacon" has the file "recipes/foo.turd" with:
|
130
|
-
"""
|
131
|
-
poop
|
132
|
-
"""
|
133
|
-
When I successfully run `berks vendor vendor`
|
134
|
-
Then the directory "vendor/bacon" should contain version "1.0.0" of the "bacon" cookbook
|
135
|
-
And a file named "vendor/bacon/foo.turd" should not exist
|
136
|
-
And a file named "vendor/bacon/recipes/foo.turd" should not exist
|
137
|
-
|
138
|
-
Scenario: metadata.json / metadata.rb handling when vendoring a cookbook
|
139
|
-
Given a cookbook named "bacon"
|
140
|
-
And the cookbook "bacon" has the file "metadata.rb" with:
|
141
|
-
"""
|
142
|
-
name 'bacon'
|
143
|
-
version '1.0.0'
|
144
|
-
"""
|
145
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
146
|
-
"""
|
147
|
-
cookbook 'bacon', path: './bacon'
|
148
|
-
"""
|
149
|
-
When I successfully run `berks vendor vendor`
|
150
|
-
Then the directory "vendor/bacon" should contain version "1.0.0" of the "bacon" cookbook
|
151
|
-
And a file named "vendor/bacon/metadata.json" should exist
|
152
|
-
And a file named "vendor/bacon/metadata.rb" should exist
|
153
|
-
And a file named "bacon/metadata.rb" should exist
|
154
|
-
And a file named "bacon/metadata.json" should not exist
|
@@ -1,29 +0,0 @@
|
|
1
|
-
Feature: berks verify
|
2
|
-
Scenario: running verify when there is no Lockfile present
|
3
|
-
Given a cookbook named "sparkle_motion"
|
4
|
-
And I cd to "sparkle_motion"
|
5
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
6
|
-
"""
|
7
|
-
metadata
|
8
|
-
"""
|
9
|
-
And I run `berks verify`
|
10
|
-
Then the output should contain:
|
11
|
-
"""
|
12
|
-
Lockfile not found! Run `berks install` to create the lockfile.
|
13
|
-
"""
|
14
|
-
And the exit status should be "LockfileNotFound"
|
15
|
-
|
16
|
-
Scenario: running verify when there is a valid Lockfile present
|
17
|
-
Given a cookbook named "sparkle_motion"
|
18
|
-
And I cd to "sparkle_motion"
|
19
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
20
|
-
"""
|
21
|
-
metadata
|
22
|
-
"""
|
23
|
-
When I successfully run `berks install`
|
24
|
-
And I successfully run `berks verify`
|
25
|
-
Then the output should contain:
|
26
|
-
"""
|
27
|
-
Verifying (1) cookbook(s)...
|
28
|
-
Verified.
|
29
|
-
"""
|
@@ -1,66 +0,0 @@
|
|
1
|
-
@graphviz @not-windows
|
2
|
-
Feature: berks viz
|
3
|
-
Scenario: With no options
|
4
|
-
* I have a Berksfile pointing at the local Berkshelf API with:
|
5
|
-
"""
|
6
|
-
cookbook 'fake', '1.0.0'
|
7
|
-
"""
|
8
|
-
* I write to "Berksfile.lock" with:
|
9
|
-
"""
|
10
|
-
DEPENDENCIES
|
11
|
-
fake (= 1.0.0)
|
12
|
-
|
13
|
-
GRAPH
|
14
|
-
fake (1.0.0)
|
15
|
-
"""
|
16
|
-
* I successfully run `berks viz`
|
17
|
-
* a file named "graph.png" should exist
|
18
|
-
|
19
|
-
Scenario: When there are transitive dependencies
|
20
|
-
* I have a Berksfile pointing at the local Berkshelf API with:
|
21
|
-
"""
|
22
|
-
cookbook 'fake', '1.0.0'
|
23
|
-
"""
|
24
|
-
* I write to "Berksfile.lock" with:
|
25
|
-
"""
|
26
|
-
DEPENDENCIES
|
27
|
-
fake (= 1.0.0)
|
28
|
-
|
29
|
-
GRAPH
|
30
|
-
dep (1.0.0)
|
31
|
-
fake (1.0.0)
|
32
|
-
dep (~> 1.0.0)
|
33
|
-
"""
|
34
|
-
* I successfully run `berks viz`
|
35
|
-
* a file named "graph.png" should exist
|
36
|
-
|
37
|
-
Scenario: When a custom output is given
|
38
|
-
* I have a Berksfile pointing at the local Berkshelf API with:
|
39
|
-
"""
|
40
|
-
cookbook 'fake', '1.0.0'
|
41
|
-
"""
|
42
|
-
* I write to "Berksfile.lock" with:
|
43
|
-
"""
|
44
|
-
DEPENDENCIES
|
45
|
-
fake (= 1.0.0)
|
46
|
-
|
47
|
-
GRAPH
|
48
|
-
dep (1.0.0)
|
49
|
-
fake (1.0.0)
|
50
|
-
dep (~> 1.0.0)
|
51
|
-
"""
|
52
|
-
* I successfully run `berks viz --outfile ponies.png`
|
53
|
-
* a file named "graph.png" should not exist
|
54
|
-
* a file named "ponies.png" should exist
|
55
|
-
|
56
|
-
Scenario: When there is no lockfile present
|
57
|
-
* I have a Berksfile pointing at the local Berkshelf API with:
|
58
|
-
"""
|
59
|
-
cookbook 'fake', '1.0.0'
|
60
|
-
"""
|
61
|
-
* I run `berks viz`
|
62
|
-
* the output should contain:
|
63
|
-
"""
|
64
|
-
Lockfile not found! Run `berks install` to create the lockfile.
|
65
|
-
"""
|
66
|
-
* the exit status should be "LockfileNotFound"
|
@@ -1,37 +0,0 @@
|
|
1
|
-
Feature: Installing cookbooks from the community site
|
2
|
-
Scenario: when the cookbook exists
|
3
|
-
Given I have a Berksfile pointing at the community API endpoint with:
|
4
|
-
"""
|
5
|
-
cookbook 'apache2', '1.6.6'
|
6
|
-
"""
|
7
|
-
When I successfully run `berks install`
|
8
|
-
Then the output should contain:
|
9
|
-
"""
|
10
|
-
Installing apache2 (1.6.6)
|
11
|
-
"""
|
12
|
-
And the cookbook store should have the cookbooks:
|
13
|
-
| apache2 | 1.6.6 |
|
14
|
-
|
15
|
-
Scenario: when the cookbook does not exist
|
16
|
-
Given I have a Berksfile pointing at the community API endpoint with:
|
17
|
-
"""
|
18
|
-
cookbook '1234567890'
|
19
|
-
"""
|
20
|
-
When I run `berks install`
|
21
|
-
Then the output should contain:
|
22
|
-
"""
|
23
|
-
Unable to find a solution for demands: 1234567890 (>= 0.0.0)
|
24
|
-
"""
|
25
|
-
And the exit status should be "NoSolutionError"
|
26
|
-
|
27
|
-
Scenario: when the cookbook exists, but the version does not
|
28
|
-
Given I have a Berksfile pointing at the community API endpoint with:
|
29
|
-
"""
|
30
|
-
cookbook 'apache2', '0.0.0'
|
31
|
-
"""
|
32
|
-
When I run `berks install`
|
33
|
-
Then the output should contain:
|
34
|
-
"""
|
35
|
-
Unable to find a solution for demands: apache2 (= 0.0.0)
|
36
|
-
"""
|
37
|
-
And the exit status should be "NoSolutionError"
|
data/features/help.feature
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
Feature: Appending -h or --help to a command
|
2
|
-
Scenario Outline: Using various help switches
|
3
|
-
Then the output from `<actual>` should be the same as `<expected>`
|
4
|
-
Examples:
|
5
|
-
| actual | expected |
|
6
|
-
| berks --help | berks help |
|
7
|
-
| berks -h | berks help |
|
8
|
-
| berks cookbook --help | berks help cookbook |
|
9
|
-
| berks cookbook -h | berks help cookbook |
|
10
|
-
| berks shelf --help | berks shelf help |
|
11
|
-
| berks shelf -h | berks shelf help |
|
@@ -1,158 +0,0 @@
|
|
1
|
-
Feature: --format json
|
2
|
-
Background:
|
3
|
-
* the Chef Server is empty
|
4
|
-
* the cookbook store is empty
|
5
|
-
|
6
|
-
Scenario: JSON output installing a cookbook from the default location
|
7
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
8
|
-
"""
|
9
|
-
cookbook 'berkshelf', '1.0.0'
|
10
|
-
"""
|
11
|
-
And the Chef Server has cookbooks:
|
12
|
-
| berkshelf | 1.0.0 |
|
13
|
-
When I successfully run `berks install --format json`
|
14
|
-
Then the output should contain JSON:
|
15
|
-
"""
|
16
|
-
{
|
17
|
-
"cookbooks": [
|
18
|
-
{
|
19
|
-
"api_source": "http://127.0.0.1:26310",
|
20
|
-
"location_path": "http://127.0.0.1:26310/cookbooks/berkshelf/1.0.0",
|
21
|
-
"version": "1.0.0",
|
22
|
-
"name": "berkshelf"
|
23
|
-
}
|
24
|
-
],
|
25
|
-
"errors": [],
|
26
|
-
"messages": [
|
27
|
-
"Resolving cookbook dependencies...",
|
28
|
-
"Fetching cookbook index from http://127.0.0.1:26310..."
|
29
|
-
],
|
30
|
-
"warnings": []
|
31
|
-
}
|
32
|
-
"""
|
33
|
-
|
34
|
-
Scenario: JSON output installing a cookbook we already have
|
35
|
-
Given the cookbook store has the cookbooks:
|
36
|
-
| berkshelf-cookbook-fixture | 1.0.0 |
|
37
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
38
|
-
"""
|
39
|
-
cookbook 'berkshelf-cookbook-fixture', '1.0.0'
|
40
|
-
"""
|
41
|
-
When I successfully run `berks install --format json`
|
42
|
-
Then the output should contain JSON:
|
43
|
-
"""
|
44
|
-
{
|
45
|
-
"cookbooks": [
|
46
|
-
{
|
47
|
-
"name": "berkshelf-cookbook-fixture",
|
48
|
-
"version": "1.0.0"
|
49
|
-
}
|
50
|
-
],
|
51
|
-
"errors": [],
|
52
|
-
"messages": [
|
53
|
-
"Resolving cookbook dependencies...",
|
54
|
-
"Fetching cookbook index from http://127.0.0.1:26310..."
|
55
|
-
],
|
56
|
-
"warnings": []
|
57
|
-
}
|
58
|
-
"""
|
59
|
-
|
60
|
-
Scenario: JSON output when running the show command
|
61
|
-
Given the cookbook store has the cookbooks:
|
62
|
-
| fake | 1.0.0 |
|
63
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
64
|
-
"""
|
65
|
-
cookbook 'fake', '1.0.0'
|
66
|
-
"""
|
67
|
-
And I write to "Berksfile.lock" with:
|
68
|
-
"""
|
69
|
-
DEPENDENCIES
|
70
|
-
fake (= 1.0.0)
|
71
|
-
|
72
|
-
GRAPH
|
73
|
-
fake (1.0.0)
|
74
|
-
"""
|
75
|
-
When I successfully run `berks show fake --format json`
|
76
|
-
Then the output should contain JSON:
|
77
|
-
"""
|
78
|
-
{
|
79
|
-
"cookbooks": [
|
80
|
-
{
|
81
|
-
"name": "fake",
|
82
|
-
"path": "<%= Berkshelf.cookbook_store.storage_path.join('fake-1.0.0') %>"
|
83
|
-
}
|
84
|
-
],
|
85
|
-
"errors": [],
|
86
|
-
"messages": [],
|
87
|
-
"warnings": []
|
88
|
-
}
|
89
|
-
"""
|
90
|
-
|
91
|
-
Scenario: JSON output when running the upload command
|
92
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
93
|
-
"""
|
94
|
-
cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
|
95
|
-
"""
|
96
|
-
And I write to "Berksfile.lock" with:
|
97
|
-
"""
|
98
|
-
DEPENDENCIES
|
99
|
-
example_cookbook
|
100
|
-
path: ../../spec/fixtures/cookbooks/example_cookbook-0.5.0
|
101
|
-
|
102
|
-
GRAPH
|
103
|
-
example_cookbook (0.5.0)
|
104
|
-
"""
|
105
|
-
When I successfully run `berks upload --format json`
|
106
|
-
Then the output should contain JSON:
|
107
|
-
"""
|
108
|
-
{
|
109
|
-
"cookbooks": [
|
110
|
-
{
|
111
|
-
"name": "example_cookbook",
|
112
|
-
"version": "0.5.0",
|
113
|
-
"uploaded_to": "http://localhost:26310"
|
114
|
-
}
|
115
|
-
],
|
116
|
-
"errors": [],
|
117
|
-
"messages": [],
|
118
|
-
"warnings": []
|
119
|
-
}
|
120
|
-
"""
|
121
|
-
|
122
|
-
Scenario: JSON output when running the outdated command
|
123
|
-
Given the cookbook store has the cookbooks:
|
124
|
-
| seth | 0.1.0 |
|
125
|
-
And the Chef Server has cookbooks:
|
126
|
-
| seth | 0.1.0 |
|
127
|
-
| seth | 0.2.9 |
|
128
|
-
| seth | 1.0.0 |
|
129
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
130
|
-
"""
|
131
|
-
cookbook 'seth', '~> 0.1'
|
132
|
-
"""
|
133
|
-
And I write to "Berksfile.lock" with:
|
134
|
-
"""
|
135
|
-
DEPENDENCIES
|
136
|
-
seth (~> 0.1)
|
137
|
-
|
138
|
-
GRAPH
|
139
|
-
seth (0.1.0)
|
140
|
-
"""
|
141
|
-
And I successfully run `berks outdated --format json`
|
142
|
-
Then the output should contain JSON:
|
143
|
-
"""
|
144
|
-
{
|
145
|
-
"cookbooks": [
|
146
|
-
{
|
147
|
-
"local": "0.1.0",
|
148
|
-
"remote": {
|
149
|
-
"http://127.0.0.1:26310": "0.2.9"
|
150
|
-
},
|
151
|
-
"name": "seth"
|
152
|
-
}
|
153
|
-
],
|
154
|
-
"errors": [],
|
155
|
-
"messages": [],
|
156
|
-
"warnings": []
|
157
|
-
}
|
158
|
-
"""
|