Releases: cloudfoundry/cli
v6.16.0
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Change Log
Route Services
Various commands have been enhanced to support route services.
Route services are services such as filters and content transformations for applications. Examples include rate limiting, metering, authorization, and caching.
This feature requires the target CF release to be v231 (CC API v2.51.0) or greater.
Space-Scoped Service Brokers
create-service-broker
now enables a Space Developer to create a service broker with service plans scoped to the space.
This feature requires the target CF release to be v228 (CC API v2.47.0) or greater.
New Commands
bind-route-service
allows binding of a route service instance to a routeunbind-route-service
allows unbinding of a route service instance from a route
Updated Commands
create-user-provided-service
now accepts a url to create a route servicecreate-user-provided-service
now accepts credential parameters in a JSON file (#650)update-user-provided-service
now accepts a url to create a route serviceupdate-user-provided-service
now accepts credential parameters in a JSON file (#650)curl
now supports reading HTTP request data from a file (#629)service
now also displays service tagslogin
and other commands now display a tip to check HTTP proxy settings when specific network errors occurlogin
without-o
option now returns faster on installations with many orgspush
no longer fails with an invalid query parameter error when targeting CC 2.24.0 or older (#744, #768)push
no longer fails on Windows with >260 character paths (#728)push
no longer errors when invalid path is supplied (with -p) and --no-start is specified (#733)push
now returns a better error message when failing to create a temporary file while preparing for the upload of app bits (#741)create-app-manifest
now produces a valid manifest with 'no-host' attribute for apps with routes with no host (#767)create-app-manifest
now includes the disk quota of the application in the generated manifest (#771)create-app-manifest
now includes the stack the application is deployed on in the generated manifest (#772)copy-source
to another space now works (#762)ssh-code
no longer fails when run behind a configured HTTP proxyoauth-token
now displays only the token to make it easier to embed in scripting (#752)check-route
now accepts a path without a slashcf config --locale
error message (when invalid code is specified) now displays locale codes with a hyphen as per RFC 5646 (codes with underscores are still accepted)update-buildpack
now has correct name forunlock
option in help (PR from Fabio Berchtold)api
andlogin
now display a more meaningful description for--skip-ssl-validation
optionadd-plugin-repo
now displays arguments as mandatory in usage helprepo-plugins
now displays correct usage helpinstall-plugin
now displays correct usage helpremove-plugin-repo
now displays argument correctly in usage helpdelete-space-quota
now displays missing-f
option in usage helproutes
now displays missing--org-level
option in usage helpconfig
now displays brackets around option values in usage helpdelete
anddelete-space
now display a single hyphen for short options in help- Warnings returned in the
X-Cf-Warnings
header by CC APIs are now displayed - Command help now lists options in alphabetical order (#730)
- Japanese help text updated for all commands (PR from Hiroyuki Kaneko)
Deprecated Commands
- The following commands now return an error when targeting CF v228 (CC API version 2.47.0) or greater, which removes deprecated features that these commands exposed:
migrate-service-instances
purge-service-offering
's-p
optionservice-auth-tokens
create-service-auth-token
update-service-auth-token
delete-service-auth-token
Updated & New Plugins:
- Download Droplet v1.0.1: https://github.com/krujos/download_droplet_plugin
- Doctor v1.0.2: https://github.com/emirozer/cf-doctor-plugin
- Fastpush v1.0.0: https://github.com/xiwenc/cf-fastpush-plugin
CF Version v6.15.0
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Change Log
Routes with Paths
Various commands have been enhanced to allow you to set a path for your route. This allows you to map a route with a path (e.g. myapp.example.com/foo) to your app.
This feature requires the target CF release to be v218 (CC API v2.36.0) or higher.
Updated Translations
IBM has contributed translations for all CLI help text and messages in 9 languages: de_DE, es_ES, fr_FR, it_IT, ja_JP, ko_KR, pt_BR, zh_Hans and zh_Hant.
We are brainstorming on ways to keep them up to date. Until that's worked out, you may find new or updated messages untranslated. We welcome PRs for this.
Updated Commands
create-route
now allows specifying a path in a route using a new--path
optioncreate-route
now accepts the human-readable--hostname
option in addition to short-n
option to set the hostnamecreate-route
now clarifies in the help that the--hostname
option is required for shared domainsdelete-route
now accepts the human-readable--hostname
option in addition to short-n
option to set the hostnamedelete-route
now allows specifying a path in a route using a new--path
optionmap-route
now allows specifying a path in a route using a new--path
optionmap-route
now accepts the human-readable--hostname
option in addition to short-n
option to set the hostnameunmap-route
now allows specifying a path in a route using a new--path
optionunmap-route
now accepts the human-readable--hostname
option in addition to short-n
option to set the hostnamedelete-route
now allows specifying a path in a route using a new--path
optiondelete-route
now accepts the human-readable--hostname
option in addition to short-n
option to set the hostnameroutes
now includes the path of a routepush
now allows specifying a path in a route using a new--path
optionpush
now accepts the human-readable--hostname
option in addition to short-n
option to set the hostnamepush -p
supports specifying a symlink to the directory containing the files to push (#693)ssh
now keeps its connection open when idleconfig
andcurl
now display the human-readable options consistently with double hyphens in the OPTIONS section of the help textfiles
now documents in its help that it only supports apps running on the DEA backend, and fails with a clear message when the backend is Diego (#724)- All commands that print a table (e.g.
apps
,routes
) now correctly align the table headers containing non-latin characters (e.g. Japanese) (#723)
Updated Plugins:
- CF Doctor Plugin: https://github.com/emirozer/cf-doctor-plugin
- Firehose Plugin: http://github.com/cloudfoundry/firehose-plugin
CF version v6.14.1
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Change Log
Install Experience Improvements
- Mac OS X installer is now digitally signed with a Foundation certificate, so CLI can be installed without needing to bypass security features. (Similar experience on Windows will be addressed soon.)
- Mac OS X installer now includes the correct CLI release version and package size in distribution manifest
- Debian installer now denotes the correct package size
Updated Commands
push
now deploys apps with jars generated with Spring Boot 1.3.0 that embed a script at the start of the jar file (#411)push
now deploys apps with >64KB read-only files (#685)push
no longer fails on Windows with >260 character paths that are specified in .cfignore (#564)push
no longer continues traversing folders specified in .cfignore (#564)push
now displays a user friendly message when no application files found (#687)push
now uses a CF Foundation buildpack as example in help text for-b
optionssh
no longer swallows execution result when invoked repeatedly with-c
option (#702)auth
now displays an error message in case of a 502 HTTP error responsehelp
no longer includes redundant BUILD TIME sectiondelete-quota
now displays correct help text for-f
option (#715)purge-service-instance
now returns a meaningful error message when targeting a CF release that does not support purging service instances (#690)
Plugin Framework Changes
- The
Domain
field of the application model returned by GetApp is now properly populated (#699)
New Plugins:
- CF Doctor Plugin: https://github.com/emirozer/cf-doctor-plugin
CF version v6.14.0
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Release Notes
New Commands
purge-service-instance
for admins dealing with an unresponsive service instance, to delete itrouter-groups
for admins to list the type of router groups configured.
Updated Commands
create-org
now assigns the org creator as its initial OrgManager automaticallycf -v
is now semver-compliant ("6.14.0+2654a47-2015-11-18")set-org-role
andunset-org-role
now work for Org Managers (see note below)set-space-role
andunset-space-role
now work for Org Managers and Space Managers (see note below)
Note that the set/unset role commands require the target CF release to be v219 (CC API v2.37.0) or higher and the feature flags set_roles_by_username
and unset_roles_by_username
to be enabled (use cf feature-flags
to check) to be used by Org/SpaceManagers. Without these conditions they will continue to work only for admins.
Bug Fixes
- Fixed issues in help and usage of
stack
andstacks
(#635) - Fixed issues in help examples of
create-service
(#107628656) - Fixed issue with plugins with long command names (#653)
push
did not upload empty folders, causing an issue with the Java buildpack not recognizing a valid Web application with an empty WEB-INF folder (#107835158)- When pushing apps under 1KB with
push
, the "B" unit is now present in the upload status message (#108280642) - Plugin API commands no longer leak file descriptors (#108012132)
User Experience Improvements
- Added better error message when trying to create a user with
create-user
and passing in an invalid username (#66201062) - Added better error message when passing more arguments than the required app name argument to
ssh
(#638) - Fixed typo in
space
help text. (#672) - Updated the bug report template to request more details (#106902332)
Plugin Framework Changes
- Tokens are now refreshed automatically when the AccessToken plugin method is called (#597)
- Added documentation and coding examples around libraries available for TDD plugin development (#107137824)
- MinCliVersion in PluginMetadata now works for patch releases (e.g. 6.12.1) (#103468700)
- Field PackageUpdatedAt in GetApp response is now populated instead of always being nil (#107859114)
CF version v6.13.0
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Change Log
- Exclude resource_matches we didn't request [#104364496]
- Improved message when 0 users are found per role in 'cf space-users' [#63224944]
- Improved message when 0 users are found per role in 'org-users' [#63224896]
- Add tip for listening on CF port when app start timeout [#97340332]
- Merge pull request #609 from cloudfoundry/update-go
- Move to go 1.5.1 [#104131294]
- Add a --build flag to show Go compiler version
- Add command disallow-space-ssh [#102295832]
- Add command allow-space-ssh [#102295832]
- Add ssh-enabled command [#102394414]
- Add disable-ssh command [#102394414]
- Add enable-ssh command [#102394414]
- Add --docker-image flag to cf push [#102218860]
- Add --health-check-type/-u flag to cf push [#101729532]
- Add support for health-check-type attribute in manifest [#101729532]
- Add get-health-check command [#100320472]
- Add user confirmation prompt before installing a plugin [#97265950]
- Remove one newline after domain TIPs [#104341944]
- Add more detail to delete-shared-domain error [#104341944]
- Add more detail to delete-domain error [#104341944]
- Add note about generating language resources [#100446378]
- Merge pull request #596 from SrinivasChilveri/Issue_68736518 [#68736518]
- Don't show help twice [#103916670]
- Merge pull request #590 from Zouuup/bug/555 [#101509044]
- Merge pull request #581 from mcowger/master [#103453190]
- Allow scaling an app to 0 instances [#97749342]
CF version v6.12.4
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Change Log
- Provide usage on unadorned push [#103419480]
- Update dependencies away from code.google.com [#103336616]
- Improve error message when app fail to start with "NoAppDetectedError"
- diego app not to use noaa for metrics [#103051454]
- populate organization name in security-group and security-groups [#102282206]
- create-app-manifest includes command attribute [#102135048]
- Merge pull request #572 from zachgersh/fix-extra-parsing Account for null being passed in extra
- Account for null being passed in extra - fixes #570 (fix panic in
cf marketplace
with v1 services) - handles cf --version [#102641456]
- fix panic in create-app-manifest [#101367528]
- remove inappropriate error message (#566)
CF version v6.12.3
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Change Log
- Merge pull request #544 from cloudfoundry/code-tidy Code tidy
- Merge pull request #523 from zachgersh/master Unmarshal the extra field, get documentation url
- add Diego to application model
- update GATS new repo path [#98861144]
- update jibber_jabber repo path [#98861144]
- use go 1.4 to detect symlink file in windows [#75245040]
- do not call GetContainerMetrics() when a diego app is stopped [#98672332]
- Merge pull request #540 from cloudfoundry/use_go_yaml Support yaml '<<' merge type
- complete removal of codegangsta related tests/packages [finishes #97061610 #97061532]
- remove orphaned SetApplicationName() in requirements factory
- func was there to partially support concourrent command calls from plugin. Currently we don't support concurrent calls.
- improve main package's readability [#97061610]
- remove codegangsta from plugin/rpc package - remove deprecated SetTheApp() [#97061610]
- Merge pull request #534 from cloudfoundry/feature/commands-restart-and-create Move commands to new command pattern.
- correct usage text in command space [finishes ##100470938]
- update command_registry test to pass windows
- show executable name instead of CF_NAME in usage help [finishes #100453848]
- handles -v for cf version
- handles usage help without codegangsta
- help command for cmd usage
- handle help menu printing without codegangsta - move cf/app/help into cf/help
- handles
cf help
/cf --help
/cf -h
- handles
- new func Metadatas() in command_registry for returning all metas
- commands_loader package
- BrokerBuilder and PlanBuilder in command_registry.Dependency
- update install-plugin to check conflicts with non-codegangsta commands
- command_registry.CommandExists() returns false for empty string command name
- add plugin_repo.PluginRepo to command_registry dependency
- add StringSlice flag feature
- add MaxCommandNameLength() to command_registry
- Merge pull request #505 from zhang-hua/bug-93578300 Reduce API calls when CRU operations of service keys
- Merge branch 'story-87481016' of https://github.com/zhang-hua/cli into zhang-hua-story-87481016
- handles 'cf help ' for non-codegangsta command
- Merge pull request #514 from HuaweiTech/hwcf-issue-34 Fix create-app-manifest only includes one host [92530254]
- both godep and travis should use golang v.1.4.2
- make reference to domain test suite for commands to self registered
- Godep golang 1.4
- use go v1.4.2 in travis
- Fix create-app-manifest only includes one host [92530254]
- SpaceManager and SpaceAuditor should receive 403 [#87481016]
- Reduce API calls when CRU operations of service keys [#93578300]
CF version v6.12.2
CF version v6.12.2
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Change Log
- implement skipFlagParsing in flags package [#97061558]
- add tip to curl command for api doc url [#98862944]
- improve RunCliCommand in testhelper for non-CG command [#97061558]
- rpc server version check uses new version package [#98664206]
- move version checking methods into utils package [#98664206]
- move NotifyUpdateIfNeeded() into UI package [#98664206]
- Fixed GetMinCliVersion and GetMinApiVersion to work with arbitrary version numbers. [#98664206]
CF version v6.12.1
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Change Log
- improve method to compare domains of local and redirecting target [98132086]
- only copy Authorization header when redirecting to same base domain [98132086]
- security-groups to not use inline-relation-depth to populate spaces model [96033766]
- add spaces_url field to SecurityGroup model [96033766]
CF version v6.12.0
CF version v6.12.0
Installers
- Debian 32 bit
- Debian 64 bit
- Redhat 32 bit
- Redhat 64 bit
- Mac OS X 64 bit
- Windows 32 bit
- Windows 64 bit
Binaries
- Linux 32 bit binary
- Linux 64 bit binary
- Mac OS X 64 bit binary
- Windows 32 bit binary
- Windows 64 bit binary
Change Log
- Merge pull request #487 from cloudfoundry/96912324-disable-service-access-performance
- Improve performance of disable-service-access
- Create plugin_examples/DOC.md
- Merge pull request #490 from zhang-hua/story-93578300
- Reduce API calls when creating,listing and getting details of service…
- Merge pull request #478 from cloudfoundry/update-empty-tags
- Allow update service instances with empty tags
- fix bug in uninstall-plugin - ensure the removal of plugin binary
- plugin API GetService() [#90442132]
- Merge pull request #484 from zhang-hua/list_key_endpoint
- Change api endpoint for listing service keys
- Reduce API calls when creating,listing and getting details of service keys [#93578300]
- Leveraging existing API calls in ServiceInstanceRequirement to find service
instance info by name so that no need to send the same request twice.
- Leveraging existing API calls in ServiceInstanceRequirement to find service
- added GetSpaces to api test plugin
- Merge branch 'improved-service-broker-no-permissions-message'
- Merge branch 'master' into improved-service-broker-no-permissions-message
- Merge pull request #483 from cloudfoundry/service_access_performance
- improve cf service-access performance
- Merge pull request #470 from cloudfoundry/go14_flake
- Fix flaky test for go 1.4 where map iteration order is randomized.
- Improve performance of disable-service-access - It was making an
async=true
delete request for each
service_plan_visibility. This meant each delete would take at least 5 seconds due to polling.- Deleting service plan visibilities does not interact with the broker and can be completed synchronously in ~.5s
- Add new http test matcher for testing empty query strings. [#96912324]
- Add GetSpace API [#97159474]
- Change api endpoint for listing service keys [#87481016]
- CLI should use the endpoint
/v2/service_instances/:fake-guid/service_keys
to list service keys instead of using/v2/service_keys?q=service_instance_guid:fake-guid
- CLI should use the endpoint
- Make delete service instance as Warn vs. regular Say. make consistent with delete service key
- Merge pull request #480 from cloudfoundry/missing_service_key_delete
- Missing service key coloring message from dsk now matches the coloring from ds
- Reduce service_access API requests: orgs - To map org guids to org names, we make individual requests for each org instead of requesting all orgs. [#96912380]
- This is optimized for the case where there are fewer orgs associated
with service_plan_visibilities than the total number of org pages.
This seemed to be the case on all environments we checked. - /v2/organizations does not support filtering on a list of org or
service_plan_visiblility guids, so we have to make separate GETs - In plan_builder, there are package variables that are used to memorize maps. This causes pollution plan_builder tests, so we nil them in test setup
- This is optimized for the case where there are fewer orgs associated
- Reduce service_access API requests: service plans [#96912380]
- Get all service plans in one request instead of a request per service offering
- Reduce service_access API requests: service offerings - Get all service offerings in one request instead of a request per broker [#96912380]
- godeps newest noaa package - implement new noaa.Close() method
- remove windows incompatible language test
- enable yes for confirmation when lang is not en_US
- ❄️ Deflakey-ify the org and space user tests.
- Tests were failing in go1.4 due to random org in map.. fixed test to be less brittle
- update vet tool url for travis build
- Added Services Plugin API [#90441956]
- Fix up Incorrect Usage i18n in new Plugin APIs [#90440496, #90062486]
- Implemented the GetSpaceUsers plugin API [#90441958]
- Add GetOrgUsers Plugin API [#97030456]
- Missing service key coloring message from
dsk
now matches the coloring fromds
. - ui type is nowWarn
instead ofSay
- Keyword highlight is now switched off [#94220156]
- New plugin api GetSpaces() [#90442002]
- Allow update service instances with empty tags [#96329216]
- Fix logic to handle graceful timeout if we cannot talk to log server.
- Also make log server connection timeout internally configurable. [#96626036]
- Merge pull request #453 from cloudfoundry/last-operation-timestamps
- Last operation timestamps
- Updated cf service-access and cf service-brokers so that they only pass through the 403 error,
rather than giving specific lookup information. [#91452714] - Refactor created_at test fixtures [#91240396]
- Updated the CLI to not return a Started date if the service/operation does not have a CreatedAt in it's JSON. [#91240396]
- Add started and updated timestamps to service instance operations [#91240396]
- Merge pull request #465 from cloudfoundry/94892746-service-brokers-403
- Expose api errors for service broker commands
- Merge pull request #469 from cloudfoundry/missing_service_key_delete
- Display correct error when deleting nonexistent service key
- Merge pull request #472 from cloudfoundry/service_access_performance
- Improve performance of enable/disable service access
- Made command_factory_test.go ignore .coverprofile files from running ginkgo in code-coverage mode. [#89585004]
- Update help text for update-service [#72117050]
- Allow
cf app
to display buildpack [#96147958] - Fixed passing in nil error handler to command_registry [#90652456]
- Merge pull request #463 from cloudfoundry/cli_user_can_provide_tags
- Add optional tags to create-service command
- Fix indentation in create-service help text - And rearrange translation files to appease i18n4go
- Add fields to cli msi to show app/publisher name in windows. [#93634720]
- Merge pull request #366 from HuaweiTech/hwcf-issue-15
- Fixed error message when there is a mismatch in the order of arguments for create-buildpack
- plugin Api
GetOrgs()
[#90442006] - Highlight restage command in uups tip [#96470272]
- plugin api GetApps() [#90062486]
- Add Buildpack to cf create-app-manifest [#96041780,91458856]
- Merge pull request #474 from cloudfoundry/cli_update_service_tags Update user-provided service tags
- Merge pull request #473 from cloudfoundry/i18n-readme-update Update readme with i18n info
- Update error message when plugin file does not exist. [#96267092]
- convert command
apps
to non-codegangsta structure [#90062486] - add alias support to command_registry [#90062486]
- Update arbitrary params error message [#96313592]
- Update tip for updating UPSIs - UPSIs now propogate their credentials on update, so it is no longer
necessary to unbind and rebind them. [#96470272] - Update readme with i18n info
- Split bind-service usage for easier translation - Improve params example to resemble a bind [#96320118, #72117050]
- Split long usage for update-service [#72117050]
- Update service can pass instance tags - Add ui_helpers/tags_parser.go [#72117050]
- Update service without changing plan works - Fixing a bug where passing arbitrary params without a plan change
would result in making no changess [#96250704] - Refactor update service - Plan validation in separate function [#72117050]
- Add optional tags to create-service [#61861194]
- Improve performance of enable/disable service access - Service access commands were embedding org names in service plans, but not using them. This resulted in calls to /v2/organizations, which would take a long time on environments with many orgs. [#95214984]
- Update help text for update-service [#96313962]
- Merge pull request #440 from xingzhou/service_key_cascade implement the story of delete service instance that has keys
- implement the story of delete service instance that has keys [#92185380]
https://www.pivotaltracker.com/story/show/92185380 - Fix flaky test for go 1.4 where map iteration order is randomized. [#96235836]
- Display correct error when deleting nonexistent service key [#94220156]
- Merge pull request #452 from cloudfoundry/arbitrary-params-final
- Arbitrary params for create-service, update-service, bind-service, create-service-key
- Expose api errors for service broker commands - Unless it is a specific case where there was no error but there were also no existing service brokers [#94892746]
- Update arbitrary parameter error message - Sometimes it is unclear if the user is intending to provide a file
path or JSON. Showing the underlying error in these cases can be confusing. [#89843658] - Merge branch 'cmdOutputCapture'
- Added the changes suggested in the pull request. - Errors no longer overwrite, they bubble up
- Files are now checked for existance before reading [#89843658]
- Surface error when json from file is invalid - When parsing arbitrary...