Skip to content

Commit

Permalink
Merge branch 'jerms/OTE-344_router-interface' into jerms/OTE-345_skip…
Browse files Browse the repository at this point in the history
…-processor-base
  • Loading branch information
yogurtandjam authored May 29, 2024
2 parents 7b2101f + f12c5fb commit 6c87cb1
Show file tree
Hide file tree
Showing 5 changed files with 203 additions and 18 deletions.
52 changes: 38 additions & 14 deletions .github/workflows/bump_version.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,55 @@
name: Bump version on PR merge
name: Bump version on PR
on:
pull_request:
branches:
- main
types: closed
pull_request_target:
types: [opened, synchronize, reopened]

permissions:
contents: write

jobs:
update_version:
if: github.event.pull_request.merged == true
runs-on: macos-latest
steps:
- name: checkout
uses: actions/checkout@v4
with:
# Fetch full depth, otherwise the last step overwrites the last commit's parent, essentially removing the graph.
fetch-depth: 0

token: ${{ secrets.BOT_PAT }}
ref: ${{ github.head_ref }}

- name: Run bump_version_gh_action.sh
id: bump-version
run: |
bash ./bump_version_gh_action.sh
- name: Amend the last commit
set +e
./bump_version_gh_action.sh
echo "bump_version_ret=$?" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.BOT_PAT }}

- name: Import bot's GPG key for signing commits
id: import-gpg
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.BOT_GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.BOT_GPG_PASSPHRASE }}
#git_config_global: true
git_user_signingkey: true
git_commit_gpgsign: true

- name: Sign commit and push changes
run: |
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git config --global user.name "${GITHUB_ACTOR}"
git commit -a --amend --no-edit
git push --force-with-lease
echo "Complete"
if [[ "${{ steps.bump-version.outputs.bump_version_ret }}" == "0" ]]; then
git config --global user.email ${{ steps.import-gpg.outputs.name }}
git config --global user.name ${{ steps.import-gpg.outputs.email }}
git commit -S -m "Bump version" build.gradle.kts
git push
fi
env:
# GITHUB_TOKEN: ${{ secrets.BOT_PAT }}
GIT_AUTHOR_NAME: ${{ steps.import-gpg.outputs.name }}
GIT_AUTHOR_EMAIL: ${{ steps.import-gpg.outputs.email }}
GIT_COMMITTER_NAME: ${{ steps.import-gpg.outputs.name }}
GIT_COMMITTER_EMAIL: ${{ steps.import-gpg.outputs.email }}

2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ allprojects {
}

group = "exchange.dydx.abacus"
version = "1.7.32"
version = "1.7.34"

repositories {
google()
Expand Down
56 changes: 55 additions & 1 deletion bump_version_gh_action.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,68 @@
#!/bin/sh

vercomp () {
if [[ $1 == $2 ]]
then
return 0
fi
local IFS=.
local i ver1=($1) ver2=($2)
# fill empty fields in ver1 with zeros
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
do
ver1[i]=0
done
for ((i=0; i<${#ver1[@]}; i++))
do
if [[ -z ${ver2[i]} ]]
then
# fill empty fields in ver2 with zeros
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]}))
then
return 1
fi
if ((10#${ver1[i]} < 10#${ver2[i]}))
then
return 2
fi
done
return 0
}

# Defining a temporary directory for cloning
TMP_DIR=$(mktemp -d)

curl https://raw.githubusercontent.com/dydxprotocol/v4-abacus/main/build.gradle.kts > $TMP_DIR/build.gradle.kts

# search for the first line that starts with "version" in build.gradle.kts
# get the value in the quotes
VERSION=$(grep "^version = " build.gradle.kts | sed -n 's/version = "\(.*\)"/\1/p')

REPO_VERSION=$(grep "^version = " $TMP_DIR/build.gradle.kts | sed -n 's/version = "\(.*\)"/\1/p')

# call the version comparison function

vercomp $REPO_VERSION $VERSION
case $? in
0) SHOULD_BUMP=true ;;
1) SHOULD_BUMP=true ;;
2) SHOULD_BUMP=false ;;
esac

if [ $SHOULD_BUMP == false ]; then
echo "Repo version < PR version... No need to bump."
exit -1
fi

# increment the version number
NEW_VERSION=$(echo $VERSION | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g')
NEW_VERSION=$(echo $REPO_VERSION | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g')

#if NEW_VERSION is not empty, replace the version in build.gradle.kts
if [ -n "$NEW_VERSION" ]; then
sed -i '' "s/version = \"$VERSION\"/version = \"$NEW_VERSION\"/" build.gradle.kts
echo "Version bumped to $NEW_VERSION"
fi

exit 0
109 changes: 108 additions & 1 deletion src/commonMain/kotlin/exchange.dydx.abacus/output/Configs.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import exchange.dydx.abacus.protocols.ParserProtocol
import exchange.dydx.abacus.utils.IList
import exchange.dydx.abacus.utils.Logger
import kollections.JsExport
import kollections.iListOf
import kollections.iMutableListOf
import kotlinx.serialization.Serializable

Expand Down Expand Up @@ -247,6 +248,103 @@ data class FeeTier(
}
}

@JsExport
@Serializable
data class EquityTiers(
val shortTermOrderEquityTiers: IList<EquityTier>,
val statefulOrderEquityTiers: IList<EquityTier>,
) {
companion object {
internal fun create(
existing: EquityTiers?,
parser: ParserProtocol,
data: Map<*, *>?,
): EquityTiers? {
data?.let {
val shortTermOrderEquityTiers = parser.asNativeList(data["shortTermOrderEquityTiers"])?.let { tiers ->
create(existing?.shortTermOrderEquityTiers, parser, tiers)
} ?: iListOf()

val statefulOrderEquityTiers = parser.asNativeList(data["statefulOrderEquityTiers"])?.let { tiers ->
create(existing?.statefulOrderEquityTiers, parser, tiers)
} ?: iListOf()

return EquityTiers(shortTermOrderEquityTiers, statefulOrderEquityTiers)
}

Logger.d { "Equity Tiers not valid" }
return null
}

internal fun create(
existing: IList<EquityTier>?,
parser: ParserProtocol,
data: List<*>?
): IList<EquityTier>? {
data?.let {
val equityTiers = iMutableListOf<EquityTier>()
for (i in data.indices) {
val item = data[i]
val nextItem = data.getOrNull(i + 1)
parser.asMap(item)?.let {
val tier = existing?.getOrNull(i)
val nextTierData = parser.asMap(nextItem)
EquityTier.create(tier, parser, it, nextTierData)?.let { equityTier ->
equityTiers.add(equityTier)
}
}
}
return equityTiers
}
Logger.d { "Equity Tiers not valid" }
return null
}
}
}

@JsExport
@Serializable
data class EquityTier(
val requiredTotalNetCollateralUSD: Double,
val nextLevelRequiredTotalNetCollateralUSD: Double?,
val maxOrders: Int,
) {
companion object {
internal fun create(
existing: EquityTier?,
parser: ParserProtocol,
data: Map<*, *>?,
nextTierData: Map<*, *>?
): EquityTier? {
data?.let {
val requiredTotalNetCollateralUSD = parser.asDouble(data["requiredTotalNetCollateralUSD"])
val nextLevelRequiredTotalNetCollateralUSD = nextTierData?.let {
parser.asDouble(nextTierData["requiredTotalNetCollateralUSD"])
}
val maxOrders = parser.asInt(data["maxOrders"])

if (requiredTotalNetCollateralUSD != null && maxOrders != null) {
return if (
existing?.requiredTotalNetCollateralUSD != requiredTotalNetCollateralUSD ||
existing?.nextLevelRequiredTotalNetCollateralUSD != nextLevelRequiredTotalNetCollateralUSD ||
existing?.maxOrders != maxOrders
) {
EquityTier(
requiredTotalNetCollateralUSD,
nextLevelRequiredTotalNetCollateralUSD,
maxOrders,
)
} else {
existing
}
}
}
Logger.d { "Equity Tier not valid" }
return null
}
}
}

@JsExport
@Serializable
data class WithdrawalGating(
Expand Down Expand Up @@ -346,6 +444,7 @@ data class Configs(
val network: NetworkConfigs?,
val feeTiers: IList<FeeTier>?,
val feeDiscounts: IList<FeeDiscount>?,
val equityTiers: EquityTiers?,
val withdrawalGating: WithdrawalGating?,
val withdrawalCapacity: WithdrawalCapacity?,
) {
Expand All @@ -371,6 +470,11 @@ data class Configs(
parser.asList(data["feeDiscounts"]),
localizer,
)
val equityTiers = EquityTiers.create(
existing?.equityTiers,
parser,
parser.asMap(data["equityTiers"]),
)
var withdrawalGating = WithdrawalGating.create(
existing?.withdrawalGating,
parser,
Expand All @@ -383,12 +487,14 @@ data class Configs(
)
return if (existing?.network !== network ||
existing?.feeTiers != feeTiers ||
existing?.feeDiscounts != feeDiscounts
existing?.feeDiscounts != feeDiscounts ||
existing?.equityTiers != equityTiers
) {
Configs(
network,
feeTiers,
feeDiscounts,
equityTiers,
withdrawalGating,
withdrawalCapacity,
)
Expand All @@ -399,6 +505,7 @@ data class Configs(
null,
null,
null,
null,
)
}
}
Expand Down
2 changes: 1 addition & 1 deletion v4_abacus.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |spec|
spec.name = 'v4_abacus'
spec.version = '1.7.32'
spec.version = '1.7.34'
spec.homepage = 'https://github.com/dydxprotocol/v4-abacus'
spec.source = { :http=> ''}
spec.authors = ''
Expand Down

0 comments on commit 6c87cb1

Please sign in to comment.