Skip to content

Commit

Permalink
Upgrade parachain to polkadot-v0.9.13 (#372)
Browse files Browse the repository at this point in the history
* bump to 0.9.13

* cargo fmt

* bump subxt

* cargo fmt

* up simuator to 0.9.13

Signed-off-by: Dzmitry Lahoda <[email protected]>

* bump

Co-authored-by: Dzmitry Lahoda <[email protected]>

Bump picasso chain spec (#375)

* bump spec

* cargo fmt

Composable Runtime (#364)

* composable-runtime

* initial implementation

* support multiple runtimes for subcommand

* cargo fmt

CU-1nbhuu3 - upgrade price feed to match oracle (#373)

* upgrade price feed to match oracle, simplify normalization and allow more configuration

* use latest version of clap and add new required `derive` feature

* fix main

* apply clippy suggestions

adds composable chain spec (#378)

* adds composable chain spec

* cargo fmt

* fix clap

* sigh

Check runtime ci [WIP] (#379)

* Update Makefile

* Update release

* Update

* Updating release

* Added runtime check

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* Testing runtime checki ci for chachacha branch

* remove westend-native

Co-authored-by: Seun Lanlege <[email protected]>

Add a sequence diagram to explain a work of pallet-assets-registry (#380)

Implement property test for add/remove_liquidity() and exchange().
Also fix minor bug found with proptesting.

CU-1nbj6eq - Cherry develop (#384)

* dex docs, groups for lending, api (#183)

Signed-off-by: dzmitry-lahoda <[email protected]>

* smallest possible unit for currencies + refactor + lending fixes / tests more clear (#186)

* make sure we allow liquidation if the source account has zero funds after

* introduce PriceableAsset capability

* refactor lending pallet + oracle mock to use smallest unit of an asset

* fix merge conflicts, make tests more clear

* simpler priceable type & upgrade runtime currency to handle it

* simplify and better documentation

* cleanup unused constraints

* Vault-index-configurable (#200)

* make VaultId an associated type

* Unmanle doc comment

* rent implementation (#189)

* implement rent and tombstoning

* clean up claim_surcharge

Also ensure that tombstoned vaults have funds returned by strategies.

* handle deletion_reward

* add delete_tombstoned functionality

* add add_surcharge

* fmt and fix doc comment

* Use NativeCurrency associated type instead of querying for native id (#202)

* Update Vault Readme (#207)

* describe vault

* sync readme with rustdoc

* Tests documentations & refactoring (#254)

* introduce composable-helpers

* refactor vault/lending tests to use composable-helpers

* apply advices

* Vault benchmarking (#270)

* fix missing runtime paramter

* add vault benchmarking

* Update CI config

Co-authored-by: Andrey Orlov <[email protected]>

* CU-1kjehh6 - avoid less than expected bonus by using safe maths (#289)

* CU-1kr011f - merge allocations in StrategyOverview (#290)

Both Allocations and CapitaalStructure storage map were tied.
Which mean you couldn't have an allocation without having a StrategyOverview.
This was wrong for the case of the reserve, as the vault itself has an
allocation (the reserve) but no StrategyOverview.

Because of that, one could trigger a panic by asking for `available_funds` using
the vault id.
We fix this issue by merging the allocation inside the StrategyOverview.

* fix benchmarking

* feature gate vault benchmark

* apply udeps suggestions

* update cargo.lock

Co-authored-by: Andrey Orlov <[email protected]>

Update ansible picasso (#396)

Resolve conflicting `Cargo.lock` dependencies (#390)

Resolve conflicting `Cargo.lock` dependencies (#390)

Update ansible picasso (#399)

* Update ansible

Update GitHub ansible workflow (#407)

Update GitHub ansible workflow (#408)

CU-1wef6he - add enable/disable hook to call-filter and extract behavior to (#398)

composable-traits

We were previously using a map `Entry -> Option<()>` but a StorageMap `Entry -> ()`
is enough as it uses `OptionQuery` by default.

I added a way to hook into enable/disable call of the filter pallet to make it
more flexible. If we want to block a pallet from being disabled, it can now be
done at the Runtime declaration.

Architecture.md (#405)

* CU-1nbetfw - move `price-feed` in `utils`

* CU-1nbetfw - add `ARCHITECTURE.md` describind the repository architecture

Add `clippy::disallowed_method` lint

parent 62f6e5b
author Hussein Ait-Lahcen <[email protected]> 1640264806 +0100
committer Ben Luelo <[email protected]> 1641229158 -0500
gpgsig -----BEGIN PGP SIGNATURE-----

 iQGzBAABCgAdFiEEvcJAWzQ+hHD6e6hZKDJl/2mUhmAFAmHTK2YACgkQKDJl/2mU
 hmAZUgv/YlQbIMXV8utYIgxSDSTAGtW4Ruo5bXSQzDQJWKL8AMk04WJs/A2YgsV4
 v7COvbFaTEKM0BrfAbSd8RhGUI2xQmTtvzr3M7dXhTPh6UIRK1O2QU62XBwFlRiG
 m40HoP+FHnhdMeO49jiD+6JiJQZJ4YysLw3TpF4NMCLLAE+OEVUkTHkbovrawfte
 zPrw2suOz4PIhajPKlThPsyec7GfnLTRZFZcsjovSerI+BYUBIroCWtoLP3Hw873
 nCdve/HigNfwyeFVVw61coa8csqzN8CA2qzg2AFAHfsvNBil8baFJMywm+6vfV7s
 qnN+XK/GgrYZew5V00vNhKmW8h7/K0Gdyeuri/LelokXNE/PGiRrODl+066F/qCN
 U6urzh2nny1lTsbIoVMnOryk5yj3ekFd8Nsy/SmFtaGFjRvErdtZ0Qzd3zENVxie
 YCb4Msgce3UgZbQ8wLo3RaQKg+32i562ewDyWtnATG+CY+jCWeRlAqHYakTKzRrn
 91xqAEMi
 =4XKn
 -----END PGP SIGNATURE-----

CU-1kr4tya - Crowdloan rewards benchmarking (#412)

* CU-1kr4tya - crowdloan rewards benchmarking

* fix main benchmarking

* add crowdloan-rewards to runtime and generated benchmark weights

* update cargo lock

* refactor crowdloan rewards test to use 1:1 benchmarking types

* fix populate weight calculation

* make sure to remove rewards prior to populate

* use runtime prefix in benchmarking

* unused dependency

Run benchmark for develop and fix `cargo vendor` (#419)

CU-1wtx9fb Implement Constant Product AMM.

Democracy (#389)

* CU-1rpbzkw - democracy pallet

Fixed missing test cases and related dependencies

Added missing test cases

Fixed format errors and docs

Fixing docs

 CU-1rpbzkw | Fixed failing test case

CU-1rpbzkw | handle transfer_held() result

CU-1rpbzkw | added few more multi currency tests

CU-1rpbzkw | fixing fmt

Changes & fixes for benchmarking

Linting fixes

* Democracy

Co-authored-by: kaiserkarel <[email protected]>

split out dali runtime from picasso (#421)

* split out dali runtime from picasso

* cargo fm

* fix runtimes

* cargo fmt

[BondedFinance] Add benchmarks (#377)

Add email (#431)

Add rust-toolchain.toml (#435)

* Add rust-toolchain.toml
* Remove ConvertInto import

Fix clippy lints

cargo fmt

Add clippy::indexing_slicing annotation to all crates

Fix slicing warnings in curve-amm crate.

I wasn't able to fix all of the occurences or slicing; some functions take indexes directly. I feel like these should be using .get(n) and returning some sort of dispatch error instead of panicking, but I'm not knowledgeable enough about substrate to say for sure. All instances of this have been annoted with a `REVIEW: indexing` comment at the function level.

Fix and/or audit indexing warninggs in oracle crate

Fix and/or audit indexing in oracle crate

Fix bug in add_liquidity

Add type annotation

Style & formatting

Fix extra underscore in integer literal

Add clippy::disallowed_type lint

Change MockCurrencyId variants to be CONSTANT_CASE

Remove uses of dbg!() macro

rustfmt

CU-1p8545r  dutch auction (#410)

* dutch auction

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed tests

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed clippy

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed review comments

Signed-off-by: dzmitry-lahoda <[email protected]>

* adding tests and fixing bugs

Signed-off-by: dzmitry-lahoda <[email protected]>

* refactoring

Signed-off-by: dzmitry-lahoda <[email protected]>

* fix fmt

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed udeps

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed clippy

Signed-off-by: dzmitry-lahoda <[email protected]>

Squash

audit use of ValueQuery

audit usage of ValueQuery

audit ValueQuery in vault

audit usage of unwrap and ValueQuery in transaction-fee

Audit clippy warnings in curve-amm pallet

indexing and slicing warning have been suppressed for now; A larger refactor will be required to remove the indexing that remains.

Audit use of ValueQuery in dutch-auction

Fix compilation error in test_interest_rate_model_default

Audit/ fix clippy warnings in assets-registry and dutch-auction

Fix or temporarilly suppress various clippy warnings

rustfmt

Signed-off-by: Ben Luelo <[email protected]>

Audit clippy warnings in curve-amm pallet

indexing and slicing warning have been suppressed for now; A larger refactor will be required to remove the indexing that remains.

Fix compilation error in test_interest_rate_model_default

Audit/ fix clippy warnings in assets-registry and dutch-auction

Fix or temporarilly suppress various clippy warnings

rustfmt

Signed-off-by: Ben Luelo <[email protected]>

rustfmt

Signed-off-by: Ben Luelo <[email protected]>

CU-1kr4tya - Crowdloan rewards benchmarking (#412)

* CU-1kr4tya - crowdloan rewards benchmarking

* fix main benchmarking

* add crowdloan-rewards to runtime and generated benchmark weights

* update cargo lock

* refactor crowdloan rewards test to use 1:1 benchmarking types

* fix populate weight calculation

* make sure to remove rewards prior to populate

* use runtime prefix in benchmarking

* unused dependency

Run benchmark for develop and fix `cargo vendor` (#419)

Democracy (#389)

* CU-1rpbzkw - democracy pallet

Fixed missing test cases and related dependencies

Added missing test cases

Fixed format errors and docs

Fixing docs

 CU-1rpbzkw | Fixed failing test case

CU-1rpbzkw | handle transfer_held() result

CU-1rpbzkw | added few more multi currency tests

CU-1rpbzkw | fixing fmt

Changes & fixes for benchmarking

Linting fixes

* Democracy

Co-authored-by: kaiserkarel <[email protected]>

split out dali runtime from picasso (#421)

* split out dali runtime from picasso

* cargo fm

* fix runtimes

* cargo fmt

[BondedFinance] Add benchmarks (#377)

Add email (#431)

Add rust-toolchain.toml (#435)

* Add rust-toolchain.toml
* Remove ConvertInto import

Fix clippy lints

cargo fmt

Add clippy::indexing_slicing annotation to all crates

Fix slicing warnings in curve-amm crate.

I wasn't able to fix all of the occurences or slicing; some functions take indexes directly. I feel like these should be using .get(n) and returning some sort of dispatch error instead of panicking, but I'm not knowledgeable enough about substrate to say for sure. All instances of this have been annoted with a `REVIEW: indexing` comment at the function level.

Fix and/or audit indexing warninggs in oracle crate

Fix bug in add_liquidity

Style & formatting

Add clippy::disallowed_type lint

Change MockCurrencyId variants to be CONSTANT_CASE

Remove uses of dbg!() macro

rustfmt

CU-1p8545r  dutch auction (#410)

* dutch auction

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed tests

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed clippy

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed review comments

Signed-off-by: dzmitry-lahoda <[email protected]>

* adding tests and fixing bugs

Signed-off-by: dzmitry-lahoda <[email protected]>

* refactoring

Signed-off-by: dzmitry-lahoda <[email protected]>

* fix fmt

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed udeps

Signed-off-by: dzmitry-lahoda <[email protected]>

* fixed clippy

Signed-off-by: dzmitry-lahoda <[email protected]>

rustfmt
  • Loading branch information
Seun Lanlege authored and benluelo committed Jan 3, 2022
1 parent 6ef2689 commit 84e9c31
Show file tree
Hide file tree
Showing 243 changed files with 22,479 additions and 4,168 deletions.
1 change: 1 addition & 0 deletions .github/workflows/Picasso-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ jobs:
- uses: actions/checkout@v2
with:
fetch-depth: 0
ref: picasso

- name: Set env
run: |
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/ansible-runner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,22 @@ on:
chain:
required: true
description: Chain to use, dali|picasso
inventory_file:
required: true
description: Inventory file to use
username:
required: true
description: Ansible Username


env:
TARGET: ${{ github.event.inputs.target }}
PLAYBOOK: ${{ github.event.inputs.playbook_file }}
INVENTORY_FILE: "gcp.yaml"
INVENTORY_FILE: ${{ github.event.inputs.inventory_file }}
CHAIN: ${{ github.event.inputs.chain }}
RELEASE_VERSION:
ROOT_KEY: ${{ secrets.ROOT_KEY }}
USERNAME: ${{ github.event.inputs.username }}

jobs:
run-playbooks:
Expand All @@ -37,9 +44,9 @@ jobs:

- name: Set env
run: |
echo "RELEASE_VERSION=$(git tag --sort=committerdate | grep -E '^dali-[0-9]' | tail -1 )" >> $GITHUB_ENV
echo "RELEASE_VERSION=$(git tag --sort=committerdate | grep -E '^'${CHAIN}'-[0-9]' | tail -1 )" >> $GITHUB_ENV
- name: Run ansible playbook
working-directory: "./playbooks"
working-directory: "./.maintain/playbooks"
run: |
ansible-playbook -l $TARGET $PLAYBOOK -i $INVENTORY_FILE -e 'ansible_python_interpreter=/usr/bin/python3'
ansible-playbook -l $TARGET $PLAYBOOK -i $INVENTORY_FILE --user $USERNAME -e 'ansible_python_interpreter=/usr/bin/python3'
59 changes: 28 additions & 31 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Test & Build & Benchmarking Build
name: CI Check

# please update docker, toolchain toml and github action with toolchain at same time

Expand All @@ -7,8 +7,9 @@ on:
branches:
- main
- develop
- dali-chachacha
- picasso
workflow_dispatch:

jobs:
check:
runs-on:
Expand All @@ -18,23 +19,23 @@ jobs:
- sre
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
- name: Cargo Check
- name: Setup toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
echo "$HOME/.cargo/bin:$PATH" >> $GITHUB_PATH
- name: Check
run: |
rustup target add wasm32-unknown-unknown
SKIP_WASM_BUILD=1 cargo check --all --benches
- name: Cargo Check Benchmark
- name: Benchmark
run: |
SKIP_WASM_BUILD=1 cargo check --features=runtime-benchmarks --workspace --release --exclude integration-tests
- name: Picasso Runtime Build
- name: Benchmark Develop
run: |
SKIP_WASM_BUILD=1 cargo check --features=runtime-benchmarks,develop --workspace --release --exclude integration-tests
- name: Picasso
run: |
cargo build --release -p picasso-runtime
- name: Picasso Runtime Build with develop feature
- name: Picasso Develop
run: |
cargo build --release -p picasso-runtime --features develop
linters:
Expand All @@ -46,20 +47,17 @@ jobs:
- sre
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
components: clippy
override: true
- name: Install Rust components and targets
- name: Setup toolchain
run: |
rustup target add wasm32-unknown-unknown
rustup component add rustfmt --toolchain nightly-x86_64-unknown-linux-gnu
rustup target add wasm32-unknown-unknown --toolchain nightly
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
echo "$HOME/.cargo/bin:$PATH" >> $GITHUB_PATH
- run: |
rustup show
rustup override unset
rustup show
- name: Cargo fmt
run: |
cargo +nightly fmt -- --check
cargo fmt -- --check
- name: Hadolint
env:
HADOLINT_VERSION: v2.8.0
Expand All @@ -76,7 +74,7 @@ jobs:
exit $total_exit_code
- name: Cargo clippy
run: |
cargo +nightly clippy -- -D warnings
cargo clippy -- -D warnings
- name: Cargo udeps
env:
UDEPS_VERSION: v0.1.24
Expand All @@ -89,7 +87,7 @@ jobs:
total_exit_code=0
while IFS= read -r crate; do
echo "=== $crate ==="
(cd "$crate"; SKIP_WASM_BUILD=1 cargo +nightly udeps -q --all-targets) || total_exit_code=$?
(cd "$crate"; SKIP_WASM_BUILD=1 cargo udeps -q --all-targets) || total_exit_code=$?
echo ""
done < <(find . -name "Cargo.toml" -not -path "./polkadot-launch/*" -not -path "./target/*" -exec dirname '{}' \;)
exit $total_exit_code
Expand All @@ -102,11 +100,10 @@ jobs:
- sre
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Setup toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
echo "$HOME/.cargo/bin:$PATH" >> $GITHUB_PATH
- name: Run Test
run: |
SKIP_WASM_BUILD=1 cargo test
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/dali-chachacha-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ jobs:
- uses: actions/checkout@v2
with:
fetch-depth: 0


- name: Set env
run: |
Expand All @@ -30,7 +31,7 @@ jobs:
tar -czvf composable-${{ env.RELEASE_VERSION }}.tar.gz target/release/composable
tar -czvf picasso_runtime.compact.wasm-${RELEASE_VERSION}.tar.gz target/release/wbuild/picasso-runtime/picasso_runtime.compact.wasm
tar -czvf parachain-utils-${RELEASE_VERSION}.tar.gz target/release/parachain-utils
gsutil mv *.tar.gz gs://composable-binaries/community-releases/dali/
gsutil cp *.tar.gz gs://composable-binaries/community-releases/dali/
- name: Login to DockerHub
uses: docker/login-action@v1
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,12 @@ on:
push:
branches:
- main
pull_request:
branches:
- dali-chachacha
- picasso
- picasso
jobs:
update_release_draft:
runs-on: ubuntu-latest
steps:
- uses: release-drafter/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.COMPOSABLE_GITHUB_TOKEN }}

22 changes: 22 additions & 0 deletions .github/workflows/runtime-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Check Runtime
on:
push:
branches:
- main
- check_runtime_ci
pull_request:
branches:
- dali-chachacha
- picasso
jobs:
check-runtime:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Check for runtime changes
working-directory: "./.maintain/"
run: |
sh check_runtime.sh
104 changes: 104 additions & 0 deletions .maintain/check_runtime.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#!/bin/sh
#
#
# check for any changes in the node/src/runtime, frame/ and primitives/sr_* trees. if
# there are any changes found, it should mark the PR breaksconsensus and
# "auto-fail" the PR if there isn't a change in the runtime/src/lib.rs file
# that alters the version.

set -e # fail on any error

#shellcheck source=../common/lib.sh
. "$(dirname "${0}")/./common/lib.sh"

VERSIONS_FILE="runtime/picasso/src/lib.rs"

boldprint () { printf "|\n| \033[1m%s\033[0m\n|\n" "${@}"; }
boldcat () { printf "|\n"; while read -r l; do printf "| \033[1m%s\033[0m\n" "${l}"; done; printf "|\n" ; }


boldprint "latest 10 commits of ${GITHUB_REF_NAME}"
git log --graph --oneline --decorate=short -n 10


boldprint "check if the wasm sources changed"
if ! has_runtime_changes origin/main "${GITHUB_REF_NAME}"
then
boldcat <<-EOT
no changes to the runtime source code detected
EOT

exit 0
fi



# check for spec_version updates: if the spec versions changed, then there is
# consensus-critical logic that has changed. the runtime wasm blobs must be
# rebuilt.

add_spec_version="$(git diff tags/release ${GITHUB_SHA} -- "${VERSIONS_FILE}" \
| sed -n -r "s/^\+[[:space:]]+spec_version: +([0-9]+),$/\1/p")"
sub_spec_version="$(git diff tags/release ${GITHUB_SHA} -- "${VERSIONS_FILE}" \
| sed -n -r "s/^\-[[:space:]]+spec_version: +([0-9]+),$/\1/p")"



if [ "${add_spec_version}" != "${sub_spec_version}" ]
then

boldcat <<-EOT
changes to the runtime sources and changes in the spec version.
spec_version: ${sub_spec_version} -> ${add_spec_version}
EOT
exit 0

else
# check for impl_version updates: if only the impl versions changed, we assume
# there is no consensus-critical logic that has changed.

add_impl_version="$(git diff tags/release ${GITHUB_SHA} -- "${VERSIONS_FILE}" \
| sed -n -r 's/^\+[[:space:]]+impl_version: +([0-9]+),$/\1/p')"
sub_impl_version="$(git diff tags/release ${GITHUB_SHA} -- "${VERSIONS_FILE}" \
| sed -n -r 's/^\-[[:space:]]+impl_version: +([0-9]+),$/\1/p')"


# see if the impl version changed
if [ "${add_impl_version}" != "${sub_impl_version}" ]
then
boldcat <<-EOT
changes to the runtime sources and changes in the impl version.
impl_version: ${sub_impl_version} -> ${add_impl_version}
EOT
exit 0
fi


boldcat <<-EOT
wasm source files changed but not the spec/impl version. If changes made do not alter logic,
just bump 'impl_version'. If they do change logic, bump 'spec_version'.
source file directories:
- bin/node/src/runtime
- frame
- primitives/sr-*
versions file: ${VERSIONS_FILE}
EOT
fi

# dropped through. there's something wrong; exit 1.

exit 1

# vim: noexpandtab
Loading

0 comments on commit 84e9c31

Please sign in to comment.