Updates and softens a bit a wallet schema to support the current structure

This commit is contained in:
Igor Kuzmenko 2017-07-18 20:09:34 +02:00
parent 83be9af811
commit e5efe43abf
4 changed files with 198 additions and 296 deletions

View file

@ -26,6 +26,7 @@ results = JSON::Validator.fully_validate(schema, document)
if results.empty? if results.empty?
exit(0) exit(0)
else else
puts ARGV[1]
puts results puts results
exit(1) exit(1)
end end

View file

@ -32,9 +32,6 @@ platform:
link: "https://appworld.blackberry.com/webstore/content/23952882/" link: "https://appworld.blackberry.com/webstore/content/23952882/"
source: "https://github.com/bitcoin-wallet/bitcoin-wallet" source: "https://github.com/bitcoin-wallet/bitcoin-wallet"
screenshot: "bitcoinwalletandroid.png" screenshot: "bitcoinwalletandroid.png"
os:
- android
- blackberry
check: check:
control: "checkgoodcontrolfull" control: "checkgoodcontrolfull"
validation: "checkpassvalidationspvp2p" validation: "checkpassvalidationspvp2p"

View file

@ -40,7 +40,6 @@ platform:
text: "walletbitgo" text: "walletbitgo"
link: "https://www.bitgo.com/" link: "https://www.bitgo.com/"
screenshot: "bitgo.png" screenshot: "bitgo.png"
os:
check: check:
control: "checkpasscontrolmulti" control: "checkpasscontrolmulti"
validation: "checkfailvalidationcentralized" validation: "checkfailvalidationcentralized"

View file

@ -2,48 +2,22 @@
# This file is licensed under the MIT License (MIT) available on # This file is licensed under the MIT License (MIT) available on
# http://opensource.org/licenses/MIT. # http://opensource.org/licenses/MIT.
id: https://bitcoin.org/quality-assurance/schemas/wallets.yaml id: https://bitcoin.org/quality-assurance/schemas/wallets.yaml
description: The main container description: The wallet object
type: object type: object
required: required:
- layout
- id - id
- wallets
additionalProperties: false
properties:
layout:
description: The Jekyll page layout to use
type: string
enum:
- base
id:
description: The page identifier to use for translations
type: string
max_wallet_text_length:
description: >
The global maximum length for a wallet text description in any
langugage (counted in Unicode characters). Ensures text doesn't
overfill its box.
type: integer
## The wallets array
wallets:
description: The array containing all wallets
type: array
uniqueItems: true
items:
description: The wallets. Each value is an arbitrary ID
type: object
additionalProperties: ## matches anything since this is an arbitrary ID string
required:
- title - title
- titleshort - titleshort
- compat - compat
- level - level
- platform - platform
additionalProperties: false # additionalProperties can not be true, as then the wallet fails due to license
properties: properties:
id:
description: The page identifier to use for translations
type: string
title: title:
description: The full wallet name; displayed when you view the full listing description: The full wallet name; displayed when you view the full listing
type: string type: string
@ -79,48 +53,59 @@ properties:
## The platforms the wallet supports ## The platforms the wallet supports
platform: platform:
description: the platforms the wallet supports description: the platforms the wallet supports
type: object type: array
additionalProperties: false additionalProperties: false
## Wallets that want to use different names, screenshots, items:
## download URLs, or scoring for different versions (e.g. an
## Android version and an iOS version) must declare both a
## default platform for the main platform (desktop, mobile,
## hardware, web) and then a sub-platform in the platform field
## for any entries that diverge from the default (android, ios,
## blackberry, etc...). We use a long hand-maintained list of
## dependencies here to ensure that any wallet using a
## sub-platform also declares main platform.
#
## TODO: refactor YAML to get rid of this weirdness
dependencies:
android:
- mobile
ios:
- mobile
blackberry:
- mobile
windowsphone:
- mobile
windows:
- desktop
linux:
- desktop
mac:
- desktop
properties:
desktop:
description: Wallets that run on desktop operating systems
type: object type: object
required: &desktop-required additionalProperties:
- default
required:
- os
- name
properties:
name:
type: string
enum:
- desktop
- mobile
- hardware
- web
os:
description: The specific operating systems the wallet supports
type: array
uniqueItems: true
items:
description: List of operating systems with wallet details
type: object
required: &required
- name
- text - text
- link - link
# - source ## TODO: Not currently required, but we should aim for making it required
- screenshot - screenshot
- os
- check - check
## TODO: Not currently required, but we should aim for making it required #
# - source
additionalProperties:
- privacycheck - privacycheck
additionalProperties: false
properties: properties:
name:
type: string
enum:
# mobile os
- android
- windowsphone
- blackberry
- ios
# desktop os
- windows
- mac
- linux
# pseudo web os
- web
# pseudo hardware os
- hardware
text: &text text: &text
description: > description: >
The identifier for the wallet's translation string. The identifier for the wallet's translation string.
@ -138,16 +123,6 @@ properties:
screenshot: &screenshot screenshot: &screenshot
description: File name for screenshot within the /img/screenshots/ directory description: File name for screenshot within the /img/screenshots/ directory
type: string type: string
os:
description: The specific operating systems the wallet supports
type: array
uniqueItems: true
items:
type: string
enum:
- windows
- mac
- linux
check: &check check: &check
description: The wallet's features (or lack thereof) description: The wallet's features (or lack thereof)
type: object type: object
@ -157,7 +132,8 @@ properties:
- transparency - transparency
- environment - environment
- privacy - privacy
# - fees ## TODO: make required when web wallets moved ## TODO: make required when web wallets moved
# - fees
additionalProperties: false additionalProperties: false
properties: properties:
control: control:
@ -245,74 +221,3 @@ properties:
enum: enum:
- checkpassprivacynetworksupporttorproxy - checkpassprivacynetworksupporttorproxy
- checkfailprivacynetworknosupporttor - checkfailprivacynetworknosupporttor
mobile: &mobile
description: Wallets that run on mobile devices with limited operating systems
type: object
required: *desktop-required
properties:
text: *text
link: *link
source: *source
screenshot: *screenshot
os:
description: The specific operating systems the wallet supports
type: array
uniqueItems: true
items:
type: string
enum:
- android
- blackberry
- ios
- windowsphone
check: *check
privacycheck: *privacycheck
## Aliases for the mobile platform to allow setting
## specific download URLs and screenshots for apps on
## different mobile platforms
android: *mobile
ios: *mobile
blackberry: *mobile
windowsphone: *mobile
web:
description: Wallets that run in a web browser
type: object
required:
- text
- link
# - source ## Not required :-(
- screenshot
- os
- check
- privacycheck
additionalProperties: false
properties:
text: *text
link: *link
source: *source
screenshot: *screenshot
os:
type: null
check: *check
privacycheck: *privacycheck
hardware:
description: Transaction-signing hardware that works in conjunction with software that interacts with the network
type: object
required:
- text
- link
- source
- screenshot
- check
additionalProperties: false
properties:
text: *text
link: *link
source: *source
screenshot: *screenshot
check: *check