-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Getting those runners going to update Cosmos for the three images, and also check for any build updates to automate #23165
Conversation
for PMLL_Blockchain
full sweep to update and root a devcontainer for both Linux and Windows Developers before 1-25-2025
For Hal
📝 WalkthroughWalkthroughThis pull request introduces several new shell and workflow scripts to enhance the development and continuous integration processes. A new GitHub Actions workflow file for Go projects has been created to automate build and testing across multiple operating systems. Additionally, new shell scripts have been added for Docker environment setup, Cosmos SDK updates, and transaction broadcasting, focusing on cross-platform development and testing capabilities. Changes
Assessment against linked issues
Possibly related PRs
Suggested labels
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wow, that actually worked well haha.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 19
🧹 Nitpick comments (3)
Broadcasting.sh (2)
360-389
: Enhance error handling and add retry mechanism.The current broadcasting implementation:
- Lacks retry logic for temporary network issues
- Could benefit from more detailed error handling
- Should handle rate limiting scenarios
Consider adding retry logic and better error handling:
from urllib.error import HTTPError, URLError from time import sleep def broadcast_tx(hex_tx, blockcypher_token, max_retries=3, retry_delay=1): """Broadcast with retry logic and enhanced error handling.""" for attempt in range(max_retries): try: # ... existing code ... except HTTPError as e: if e.code == 429: # Rate limit sleep(retry_delay * (attempt + 1)) continue raise except URLError as e: if attempt < max_retries - 1: sleep(retry_delay * (attempt + 1)) continue raise
394-436
: Improve configuration management and documentation.The main function requires manual configuration of sensitive values and lacks proper documentation:
- Add type hints
- Document expected formats
- Use configuration management
- Add logging
Consider this improvement:
from typing import Optional from dataclasses import dataclass import logging @dataclass class TransactionConfig: priv_wif: str prev_txid: str prev_vout: int prev_value: int destination_address: str message: str nettype: str = "test" def main(config_file: Optional[str] = None) -> None: """ Create and broadcast a Bitcoin transaction. Args: config_file: Path to configuration file (optional) Raises: ValueError: If required configuration is missing ConfigError: If configuration file is invalid """ logging.basicConfig(level=logging.INFO) config = load_config(config_file) # ... rest of the implementation🧰 Tools
🪛 Gitleaks (8.21.2)
410-410: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
dockerclangfile.sh (1)
268-284
: Improve build retry logic and error handlingThe build retry logic could be enhanced with exponential backoff and better error reporting.
Consider implementing exponential backoff:
build_image() { local image_name="$1" local dockerfile_path="$2" local clangfile_path="$3" + local max_attempts=3 + local attempt=1 + local wait_time=5 + echo "[$(date +'%Y-%m-%d %H:%M:%S')] Building Docker image: ${image_name}..." - for i in {1..3}; do + while [[ $attempt -le $max_attempts ]]; do if docker build -t ${image_name} -f ${dockerfile_path} --build-arg CLANGFILE=${clangfile_path} ${CONTEXT_DIR} | tee -a ${LOG_FILE}; then echo "[$(date +'%Y-%m-%d %H:%M:%S')] Docker image ${image_name} built successfully." return 0 else - echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: Docker image build for ${image_name} failed. Retry $i/3." - sleep 5 + echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: Docker image build for ${image_name} failed. Retry $attempt/$max_attempts" + sleep $wait_time + wait_time=$((wait_time * 2)) + attempt=$((attempt + 1)) fi done echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: Docker image build for ${image_name} failed after 3 attempts. Check ${LOG_FILE} for details." exit 1 }
📜 Review details
Configuration used: .coderabbit.yml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (3)
PMLL_Blockchain_Assembly-main.zip
is excluded by!**/*.zip
ZBar-master.zip
is excluded by!**/*.zip
pmll_blockchain-main (8).zip
is excluded by!**/*.zip
📒 Files selected for processing (5)
.github/workflows/Cosmo.Mac.Ubuntu.Window.go.yml
(1 hunks)Broadcasting.sh
(1 hunks)Cosmos_sdk_updater.sh
(1 hunks)Ubunutu_Windows_Image_SDK_Updater.sh
(1 hunks)dockerclangfile.sh
(1 hunks)
🧰 Additional context used
🪛 Shellcheck (0.10.0)
Cosmos_sdk_updater.sh
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
[error] 9-9: Parsing stopped here. Is this keyword correctly matched up?
(SC1089)
dockerclangfile.sh
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
[error] 9-9: Parsing stopped here. Is this keyword correctly matched up?
(SC1089)
Broadcasting.sh
[error] 1-1: ShellCheck only supports sh/bash/dash/ksh/'busybox sh' scripts. Sorry!
(SC1071)
🪛 actionlint (1.7.4)
.github/workflows/Cosmo.Mac.Ubuntu.Window.go.yml
26-26: shellcheck reported issue in this script: SC2086:info:4:42: Double quote to prevent globbing and word splitting
(shellcheck)
🪛 Gitleaks (8.21.2)
Broadcasting.sh
410-410: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
🔇 Additional comments (2)
.github/workflows/Cosmo.Mac.Ubuntu.Window.go.yml (1)
13-13
:⚠️ Potential issueConsider using the latest Ubuntu LTS version
Ubuntu 24.04 is not yet released. Until its official release, it's recommended to use Ubuntu 22.04 LTS for stability.
- os: [ubuntu-24.04, macos-latest, windows-latest] + os: [ubuntu-22.04, macos-latest, windows-latest]Ubunutu_Windows_Image_SDK_Updater.sh (1)
83-85
: 🛠️ Refactor suggestionValidate file existence before using them
The script assumes Dockerfile paths exist but doesn't validate them.
Add this validation before using the paths:
+# Validate file existence +for file in "${UBUNTU_DOCKERFILE_PATH}" "${WINDOWS_DOCKERFILE_PATH}"; do + if [[ ! -f "${file}" ]]; then + echo "ERROR: Dockerfile not found: ${file}" + exit 1 + fi +doneLikely invalid or redundant comment.
@@ -0,0 +1,436 @@ | |||
#!/usr/bin/env python3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rename the file to match its content type.
The .sh
extension suggests a shell script, but this is a Python script. Rename the file to broadcasting.py
to accurately reflect its content type.
🧰 Tools
🪛 Shellcheck (0.10.0)
[error] 1-1: ShellCheck only supports sh/bash/dash/ksh/'busybox sh' scripts. Sorry!
(SC1071)
rx, ry = point_add(rx, ry, tx, ty) | ||
tx, ty = point_add(tx, ty, tx, ty) | ||
k >>= 1 | ||
return rx, ry | ||
|
||
def privkey_to_pubkey(privkey_bytes, compressed=True): | ||
"""Derive the public key (x, y) from a 32-byte private key.""" | ||
priv_int = int.from_bytes(privkey_bytes, 'big') | ||
# Multiply generator G by priv_int | ||
x, y = scalar_multiplication(priv_int, Gx, Gy) | ||
if compressed: | ||
# Compressed pubkey format | ||
prefix = b'\x02' if (y % 2 == 0) else b'\x03' | ||
return prefix + x.to_bytes(32, 'big') | ||
else: | ||
# Uncompressed: 0x04 + X + Y | ||
return b'\x04' + x.to_bytes(32, 'big') + y.to_bytes(32, 'big') | ||
|
||
def sign_transaction(hash32, privkey_bytes): | ||
""" | ||
Produce a compact DER ECDSA signature of hash32 using privkey_bytes. | ||
This is a minimal implementation and may omit some edge cases. | ||
""" | ||
z = int.from_bytes(hash32, 'big') | ||
k = deterministic_k(z, privkey_bytes) | ||
r, s = raw_ecdsa_sign(z, privkey_bytes, k) | ||
|
||
# Make sure s is low (BIP 62) | ||
if s > (N // 2): | ||
s = N - s | ||
|
||
# Convert r, s to DER format | ||
return der_encode_sig(r, s) | ||
|
||
def deterministic_k(z, privkey_bytes): | ||
""" | ||
Very simplified RFC 6979 (deterministic k) generator for demonstration. | ||
""" | ||
import hmac | ||
import sys | ||
|
||
x = int.from_bytes(privkey_bytes, 'big') | ||
z = z % N | ||
if x > N: | ||
x = x - N | ||
|
||
# RFC6979 step: V = 0x01 32-byte, K = 0x00 32-byte | ||
k_bytes = b'\x00' * 32 | ||
v_bytes = b'\x01' * 32 | ||
priv_bytes_32 = x.to_bytes(32, 'big') | ||
z_bytes_32 = z.to_bytes(32, 'big') | ||
|
||
def hmac_sha256(key, data): | ||
return hmac.new(key, data, hashlib.sha256).digest() | ||
|
||
k_bytes = hmac_sha256(k_bytes, v_bytes + b'\x00' + priv_bytes_32 + z_bytes_32) | ||
v_bytes = hmac_sha256(k_bytes, v_bytes) | ||
|
||
k_bytes = hmac_sha256(k_bytes, v_bytes + b'\x01' + priv_bytes_32 + z_bytes_32) | ||
v_bytes = hmac_sha256(k_bytes, v_bytes) | ||
|
||
while True: | ||
v_bytes = hmac_sha256(k_bytes, v_bytes) | ||
t = int.from_bytes(v_bytes, 'big') | ||
if 1 <= t < N: | ||
return t | ||
k_bytes = hmac_sha256(k_bytes, v_bytes + b'\x00') | ||
v_bytes = hmac_sha256(k_bytes, v_bytes) | ||
|
||
def raw_ecdsa_sign(z, privkey_bytes, k): | ||
"""Sign with ECDSA using random nonce k (already determined).""" | ||
priv_int = int.from_bytes(privkey_bytes, 'big') | ||
# R = (k * G).x mod n | ||
x_r, _ = scalar_multiplication(k, Gx, Gy) | ||
r = x_r % N | ||
if r == 0: | ||
raise Exception("Invalid r=0 in ECDSA signature") | ||
|
||
# s = k^-1 (z + r*priv) mod n | ||
s = (modinv(k, N) * (z + r*priv_int)) % N | ||
if s == 0: | ||
raise Exception("Invalid s=0 in ECDSA signature") | ||
return (r, s) | ||
|
||
def der_encode_sig(r, s): | ||
"""DER-encode the r, s ECDSA values.""" | ||
def encode_int(x): | ||
xb = x.to_bytes((x.bit_length() + 7) // 8, 'big') | ||
# If high bit is set, prefix with 0x00 | ||
if xb[0] & 0x80: | ||
xb = b'\x00' + xb | ||
return xb | ||
|
||
rb = encode_int(r) | ||
sb = encode_int(s) | ||
# 0x02 <len> <rb> 0x02 <len> <sb> | ||
sequence = b'\x02' + bytes([len(rb)]) + rb + b'\x02' + bytes([len(sb)]) + sb | ||
# 0x30 <len> <sequence> | ||
return b'\x30' + bytes([len(sequence)]) + sequence | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Replace custom cryptographic implementation with established libraries.
Implementing cryptographic operations manually is risky and prone to subtle security vulnerabilities. Instead of custom ECDSA implementation:
- Use
python-ecdsa
for ECDSA operations - Use
bitcoin-utils
orpython-bitcoinlib
for Bitcoin-specific operations
Consider this safer alternative:
from ecdsa import SigningKey, SECP256k1
from bitcoin.wallet import CBitcoinSecret, P2PKHBitcoinAddress
from bitcoin.core import Hash160
from bitcoin.core.script import CScript, OP_DUP, OP_HASH160, OP_EQUALVERIFY, OP_CHECKSIG
def sign_transaction(hash32, privkey_wif):
private_key = CBitcoinSecret(privkey_wif)
signature = private_key.sign(hash32)
return signature
# We'll do something naive: we have prev_value total, we'll spend 1000 sat for fees. | ||
fee = 1000 | ||
change_value = prev_value - fee | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Improve fee calculation logic.
The current implementation uses a hard-coded fee of 1000 satoshis without considering:
- Transaction size
- Current network fee rates
- Number of inputs/outputs
Consider implementing dynamic fee calculation:
def calculate_fee(tx_size, fee_rate):
"""Calculate fee based on transaction size and current network fee rate."""
return tx_size * fee_rate
MESSAGE = "Hello, Craig. Leave me alone." | ||
|
||
# 4) BlockCypher token | ||
BLOCKCYPHER_TOKEN = "8bd4fa2488614e509a677103b88b95fc" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove exposed API token.
The BlockCypher API token should not be hardcoded in the source code. This is a security risk as it exposes sensitive credentials.
Store sensitive credentials in environment variables or a secure configuration system:
import os
BLOCKCYPHER_TOKEN = os.environ.get('BLOCKCYPHER_TOKEN')
if not BLOCKCYPHER_TOKEN:
raise ValueError("BLOCKCYPHER_TOKEN environment variable is required")
🧰 Tools
🪛 Gitleaks (8.21.2)
410-410: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
- name: Set up Go | ||
uses: actions/setup-go@v5.2.0 | ||
with: | ||
go-version: '1.20' # You can specify a version range or use 'stable' if you want the latest stable version |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update Go version to latest stable
Given the current date (January 2025), Go 1.20 is outdated. Consider using a more recent version for security updates and performance improvements.
- go-version: '1.20' # You can specify a version range or use 'stable' if you want the latest stable version
+ go-version: '1.22' # Latest stable version as of January 2025
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
go-version: '1.20' # You can specify a version range or use 'stable' if you want the latest stable version | |
go-version: '1.22' # Latest stable version as of January 2025 |
@@ -0,0 +1,341 @@ | |||
# Use base images for C++ development |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add shebang directive and file description
The script lacks a proper shebang directive and file documentation.
Add the following at the beginning of the file:
+#!/usr/bin/env bash
+
+# dockerclangfile.sh - Script to build and run Docker images for Ubuntu and Windows
+# with Clang setup and Cosmos SDK integration
+
+set -euo pipefail
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
# Use base images for C++ development | |
#!/usr/bin/env bash | |
# dockerclangfile.sh - Script to build and run Docker images for Ubuntu and Windows | |
# with Clang setup and Cosmos SDK integration | |
set -euo pipefail | |
# Use base images for C++ development |
🧰 Tools
🪛 Shellcheck (0.10.0)
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
docker run -it --rm \ | ||
--name ${CONTAINER_NAME} \ | ||
--mount type=bind,source=${WORKSPACE_DIR},target=/workspace \ | ||
--network none \ # Ensures no network access for isolation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Security: Review network isolation implementation
The network isolation comment contains a syntax error that breaks the Docker run command.
Fix the network isolation implementation:
- --network none \ # Ensures no network access for isolation
+ --network none \
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
--network none \ # Ensures no network access for isolation | |
--network none \ |
validate_json_files() { | ||
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Validating JSON configurations..." | ||
for file in $CHAIN_INFO_JSON $IBC_INFO_JSON $ASSET_LIST_JSON $COSMWASM_MSGS_JSON $OSMOSIS_MSGS_JSON; do | ||
if jq empty $file >/dev/null 2>&1; then | ||
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $file is valid." | ||
else | ||
echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $file is not valid JSON." | ||
exit 1 | ||
fi | ||
done | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Enhance JSON validation robustness
The current JSON validation doesn't check for file existence and might fail silently.
Improve the validation function:
validate_json_files() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Validating JSON configurations..."
for file in $CHAIN_INFO_JSON $IBC_INFO_JSON $ASSET_LIST_JSON $COSMWASM_MSGS_JSON $OSMOSIS_MSGS_JSON; do
+ if [[ ! -f "$file" ]]; then
+ echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $file not found."
+ exit 1
+ fi
if jq empty $file >/dev/null 2>&1; then
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $file is valid."
else
echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $file is not valid JSON."
exit 1
fi
done
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
validate_json_files() { | |
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Validating JSON configurations..." | |
for file in $CHAIN_INFO_JSON $IBC_INFO_JSON $ASSET_LIST_JSON $COSMWASM_MSGS_JSON $OSMOSIS_MSGS_JSON; do | |
if jq empty $file >/dev/null 2>&1; then | |
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $file is valid." | |
else | |
echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $file is not valid JSON." | |
exit 1 | |
fi | |
done | |
} | |
validate_json_files() { | |
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Validating JSON configurations..." | |
for file in $CHAIN_INFO_JSON $IBC_INFO_JSON $ASSET_LIST_JSON $COSMWASM_MSGS_JSON $OSMOSIS_MSGS_JSON; do | |
if [[ ! -f "$file" ]]; then | |
echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $file not found." | |
exit 1 | |
fi | |
if jq empty $file >/dev/null 2>&1; then | |
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $file is valid." | |
else | |
echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $file is not valid JSON." | |
exit 1 | |
fi | |
done | |
} |
UBUNTU_DOCKERFILE_PATH="./Dockerfile.ubuntu" # Adjust if Dockerfile for Ubuntu is in a different location | ||
WINDOWS_DOCKERFILE_PATH="./Dockerfile.windows" # Adjust if Dockerfile for Windows is in a different location |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Missing Dockerfile.ubuntu and Dockerfile.windows
The referenced Dockerfile paths (Dockerfile.ubuntu
and Dockerfile.windows
) do not exist in the repository. While there are several Dockerfiles present:
Dockerfile
contrib/devtools/Dockerfile
contrib/images/simd-dlv/Dockerfile
contrib/images/simd-env/Dockerfile
None of them match the expected paths. This could lead to script failures as the paths are hardcoded but the files don't exist.
Recommendations:
- Create the required Dockerfile.ubuntu and Dockerfile.windows files
- Or update the paths in the script to point to existing Dockerfile locations
- Or add error handling to check for file existence before proceeding
🔗 Analysis chain
Verify Dockerfile paths
The script assumes the existence of Dockerfile.ubuntu and Dockerfile.windows but doesn't verify them.
Let's verify the existence of these files:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check if the Dockerfile paths exist in the repository
# Expected: Both Dockerfile.ubuntu and Dockerfile.windows should exist
fd -t f "Dockerfile\.(ubuntu|windows)$"
Length of output: 41
Script:
#!/bin/bash
# Let's try a broader search for Dockerfiles to understand what's available
fd -t f "Dockerfile"
# Also search for any mentions of these Dockerfile paths in the codebase
rg -l "Dockerfile\.(ubuntu|windows)"
Length of output: 246
CHAIN_INFO_JSON="chain_info_mainnets.json" | ||
IBC_INFO_JSON="ibc_info.json" | ||
ASSET_LIST_JSON="asset_list_mainnets.json" | ||
COSMWASM_MSGS_JSON="cosmwasm_json_msgs.json" | ||
OSMOSIS_MSGS_JSON="osmosis_json_msgs.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Missing JSON configuration files need to be created
The verification reveals that while these JSON files are referenced in multiple scripts (dockerclangfile.sh
, Cosmos_sdk_updater.sh
, and Ubunutu_Windows_Image_SDK_Updater.sh
), the actual JSON files are not present in the repository. This could lead to script failures during execution.
- Required JSON files that need to be created:
chain_info_mainnets.json
ibc_info.json
asset_list_mainnets.json
cosmwasm_json_msgs.json
osmosis_json_msgs.json
These configuration files appear to be essential for the scripts' functionality, but they are missing from the codebase. Either create these files with the necessary configuration or update the scripts to use existing configuration files.
🔗 Analysis chain
Verify JSON configuration files
The script references several JSON files but doesn't verify their existence in the repository.
Let's verify the existence of these configuration files:
Let me try another verification approach to locate these JSON files:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check if the required JSON configuration files exist
# Expected: All referenced JSON files should exist
fd -e json -x echo "Checking {}: " \; -x test -f {} -a -r {} && echo "exists and is readable" || echo "missing or not readable" \; \
chain_info_mainnets.json \
ibc_info.json \
asset_list_mainnets.json \
cosmwasm_json_msgs.json \
osmosis_json_msgs.json
Length of output: 5224
Script:
#!/bin/bash
# Search for the JSON files in a simpler way
echo "Searching for configuration files:"
rg -l "chain_info_mainnets.json|ibc_info.json|asset_list_mainnets.json|cosmwasm_json_msgs.json|osmosis_json_msgs.json"
echo -e "\nChecking if these files are referenced in other scripts:"
rg -l "CHAIN_INFO_JSON|IBC_INFO_JSON|ASSET_LIST_JSON|COSMWASM_MSGS_JSON|OSMOSIS_MSGS_JSON"
Length of output: 577
Description
Closes: #23162
I'm going to be automating the updating of the Ci/CL pipeline for cosmos here familia.
Author Checklist
All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.
I have...
!
in the type prefix if API or client breaking changeCHANGELOG.md
Reviewers Checklist
All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.
Please see Pull Request Reviewer section in the contributing guide for more information on how to review a pull request.
I have...
Summary by CodeRabbit
CI/CD
Development Tools
Infrastructure