Tncli - TON smart contract command line interface

Overview

Superset

Tncli

License PyPI version Codacy Badge TON

TON smart contract command line interface

State

Not working, in active development

Installation and Configuration

  1. Compile fift, func, lite-client from ton and add them to PATH env or move to /usr/bin, docs can be founded here
    1. For Arch Linux we have AUR package of ton
  2. pip install tncli

Now you can access CLI tool by typing in terminal tncli

Usage example

tncli start wallet -n my-wallet
cd my-wallet
tncli deploy

Contributor Guide

Interested in contributing? Feel free to create issues and pull requests.

There is two main tasks and many TODOs.

Main tasks are - not to use lite-client / fift / func. All can be done with python.

There is many TODOs in code - feel free to fix them and create PRs

Features and status

Feature Status
fift / func / lite-server usage
Easy bootstrap project samples wallet
Deploy-wallet for auto send TON to contracts and tests
Add more project samples with advanced usage
Compile func to build/ from func/ with files.yaml
Get contract address by tncli address
Auto send TON to init contract address
Deploy to mainnet / testnet
Project interact after deploy: easily send messages, run getmethods
Gas auto calculation for store & deploy
Load from hard project structure (example: src/projects/wallet)
Project tests with runvmcode
Project debug
Library support
Init Message support (with signature)
Run remote contracts locally (get cells from chain and run locally to get error / debug / etc.)
Docs for contract creation for beginners
Advanced user-friendly docs on fift, func

Commands

All commands could be fined in docs/commands.md

Configuration

Config folder will create on first deploy, all fift / func libs will copy to it, also deploy wallet contract will be created

Deploy process (how it's actually work)

  1. Check network (testnet, mainnet) configuration locally (in config user folder)
    1. If no config found - download from URL in config.ini
  2. Check deploy wallet locally (in config user folder)
    1. If it's first time - simple wallet will be created in config folder
    2. Message with wallet address and tips will be displayed (user need to send some TON coin on it)
    3. If there is no TON in deploy contract - script will exit and notify user to update deployer balance
  3. Will run tests on fift/data.fif / fift/message.fif (if exist) / fift/lib.fif (if exist) before creating deploy message
    1. This will check all files are correct
    2. Also, you can run custom logic - for example create keys in build/
  4. Will calculate address of contract and display it to user
  5. Will send money from deploy wallet
  6. Will deploy your contract
    1. External message will be created
    2. Boc will generated
    3. Will invoke sendfile in lite-client (TODO: use native python lib, not lite-client)

Development

git clone [email protected]:disintar/tncli.git
cd tncli && pip install -e .
Comments
  • Adding docker submodule

    Adding docker submodule

    Hey! I think this one might come in handy to temporary relief most of the pain that comes with binaries/toncli versions issues. At least till the day when pip install toncli will just work with all the new features. New tests are far better than the old ones s people using toncli, are going to need to switch to those ASAP. Otherwise legacy code is going to continue to grow and cause pain to everyone. Only way i see to quickly and reliably do it at this stage is moving towards containerized development. What i'm proposing with this PR is to make some toncli approved container for people to work from.

    I doesn't have to be my container, because it's not tested much yet at the moment, but it would be much easier to start if there was one.

    Also there is probably better way to let people know about the existence of the new tests. Not many people read docs/advanced till they feel completely lost.

    I think it would be much better if there was at least a separate paragraph in quickstart more insistingly leading towards how tests work. Or maybe even on the front README.md

    Has at least to do with issue:#36

    enhancement 
    opened by Trinketer22 14
  • FIFT parameters are read as TONCLI parameters

    FIFT parameters are read as TONCLI parameters

    .fif files can be configured via positional parameters + nominal parameters. Positional parameters work well. Nominal parameters of FIFT dont work in toncli. Looking at the output, toncli thinks they're part of toncli nominal parameters while I want them to be FIFT parameters. Example: fift run .\fift\transaction.fif .\build\contract address 0 0 0.01 -C "test" Transaction Gives usage: toncli [-h] [-v] {start,deploy,get,send,tointeger,run_transaction,f,fc,lc,run,build,fift,lite-client,sendboc,wallet,run_tests,update_libs,func} ... toncli: error: unrecognized arguments: -C

    opened by SpeedK 5
  • toncli run_tests ->

    toncli run_tests -> "Stack underflow. Last op-code consume more elements ..."

    Bug Type

    Functional

    Reproduction steps

    project.yaml

    contract:
      func:
        - code.func
      tests:
        - test.func
    

    code.func

    () recv_internal (slice in_msg_body) {
    }
    
    int sum(int a, int b) {
        return a + b;
    }
    

    test.func

    _ __test_sum() {
        var (_, stack) = invoke_method(sum, [1, 2]);
        [int data] = stack;
        throw_if(200, data != 3);
    }
    
    % toncli run_tests 
    INFO: 🌈 Start tests
    INFO: 🥌 Build successfully, check out ./build
    [ 3][t 0][2022-12-09 11:49:01.925083][vm.cpp:558]	steps: 28 gas: used=2443, max=1000000000, limit=1000000000, credit=0
    INFO: Test [__test_sum] status: [FAIL], code: [2], error description [Stack underflow. Last op-code consume more elements than there are on stacks. (most probably means a error in asm declarations)] Total gas used (including testing code): [2443]
    
    Final status: [SUCCESS] - 0 cases
    Final status: [FAILED] - 1 cases
    

    Actual result

    INFO: Test [__test_sum] status: [FAIL], code: [2], error description [Stack underflow. Last op-code consume more elements than there are on stacks. (most probably means a error in asm declarations)] Total gas used (including testing code): [2443]

    Expected result

    INFO: Test [__test_sum] status: [SUCCESS]

    Suggested Severity

    Low

    Device

    mac m1

    toncli --version
    INFO: v0.0.43
    
    % ./func -V
    FunC semantic version: v0.2.0
    Build information: [ Commit: 9640a2794a1cc88a9534991c0709f64f95c1c4e0, Date: 2022-08-11 13:06:52 +0300]
    
    ./fift -V
    Fift build information: [ Commit: 9640a2794a1cc88a9534991c0709f64f95c1c4e0, Date: 2022-08-11 13:06:52 +0300]
    

    Additional Context

    Attach build/contract_tests.fif contract_tests.fif.txt

    opened by kuk 4
  • When running tests with recent ton tools and tonclin of branch main: `contract_tests.fif ...    PROC:<{:procedure already defined`

    When running tests with recent ton tools and tonclin of branch main: `contract_tests.fif ... PROC:<{:procedure already defined`

    With previous versions of ton and toncli 0.0.38 I could run without issue tests like:

    https://gitlab.com/pasosdeJesus/pruebas_mdc_func

    With the current version of ton and toncli from branch main of repository, running that test produces:

    toncli run_tests                                                                                                                                         [2/253]
    INFO: 🌈 Start tests                                                                                                                                            
    INFO: 🥌 Build successfully, check out ./build
    [ 1][t 0][2022-09-09 19:51:58.855893][Fift.cpp:67]      top: abort
    level 1: swap { <continuation 0x43a3ebce500> } if **HERE** drop 
    level 2: [in @PROC:<{:] over @fail-ifdef **HERE** 2 { <continuation 0x43a540e4b00> } does null swap @doafter<{ 0 32 u, 
    level 3: <text interpreter continuation> 
    level 4: <continuation 0x43a540b32c0>
    level 5: <text interpreter continuation> 
    [ 1][t 0][2022-09-09 19:51:58.855985][fift-main.cpp:204]        Error interpreting file `/tmp/tmpezl103ve.fif`: contract_tests.fif:1508:        PROC:<{:procedur
    e already defined                       
    
    opened by vtamara 4
  • broken with latest 4.x.x bitstring

    broken with latest 4.x.x bitstring

    Bug Type

    Functional

    Reproduction steps

    • use pip install toncli to install it
    • run it using toncli command

    Actual result

    it crashes with

        from bitstring import BitString
    ImportError: cannot import name 'BitString' from 'bitstring' 
    

    Expected result

    it should not crash

    Suggested Severity

    Critical

    Device

    OS: Fedora

    pip list | grep bitstr
    bitstring          4.0.1
    

    Additional Context

    Fix is to downgrade bitstring pip module to 3.x.x version for example pip install bitstring==3.1.9 fixes the issue

    opened by cloudfwd-artur 2
  • NFT and Jetton example projects support

    NFT and Jetton example projects support

    NFT Collection and NFT item added to toncli. Quite a bit of tests and helpers related to nft messages and data standards. Close to none documentation. Enjoy!

    opened by Trinketer22 2
  • Run tests only if tests specified.

    Run tests only if tests specified.

    If you have 2 projects and only one has defined tests then TestRunner is going to atempt to run [project_name]_tests.fif even if non generated. Firt exception is going to be thrown. So i think the best solution is just to not enter test processing loop if there are no tests.

    PS:It's possible to evade exception if you specify --contracts manually but i feel like it's not really the way to do it.

    opened by Trinketer22 2
  • Error during deploy with toncli from master

    Error during deploy with toncli from master

    I've tried to use master branch toncli for new tests According to documentation it has to be used with https://github.com/SpyCheese/ton/tree/toncli-local binaries

    toncli start wallet
    cd wallet/
    toncli build
    toncli deploy
    

    But it produces error

    INFO: 🚀 You want to interact with your contracts ['contract'] in testnet - that's great!
    INFO: ✋ Do not panic - i'm creating wallet in /root/.config/toncli, so you can easily manage your contracts
    INFO: 🐒 I'll create folder /root/.config/toncli/wallet with project wallet and all needed files
    INFO: 👑 Folder successfully created - happy blockchain hacking
    INFO: 🐼 You now can do cd wallet and toncli deploy -n testnet
    INFO: 🤗 Run tests on ['/root/.config/toncli/wallet/fift/data.fif']
    Saved new private key to file build/contract.pk
    INFO: Depth test pass 🏁
    INFO: Type test pass 🏁
    INFO: 🥳 Start contract manipulation
    [ 1][t 0][2022-08-13 07:01:54.680287875][Fift.cpp:67]   top: <text interpreter continuation>
    level 1: <continuation 0x55b003be1350>
    level 2: <text interpreter continuation>
    [ 1][t 0][2022-08-13 07:01:54.680300085][fift-main.cpp:204]     Error interpreting file `/toncli/src/toncli/modules/fift/contract_manipulation.fif`: contract.fif:15:   PROCINLINE:<{:-?
    Traceback (most recent call last):
      File "/usr/local/bin/toncli", line 33, in <module>
        sys.exit(load_entry_point('toncli', 'console_scripts', 'toncli')())
      File "/toncli/src/toncli/main.py", line 60, in main
        CommandsExecuter(command, string_kwargs, parser)
      File "/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 39, in __init__
        self.command_mapper[command](self)
      File "/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 70, in deploy_command
        return DeployCommand(self.string_kwargs, self.parser)
      File "/toncli/src/toncli/modules/utils/commands/command_classes/deploy_command.py", line 12, in __init__
        deployer = ContractDeployer(network=args.net, update_config=args.update,
      File "/toncli/src/toncli/modules/deploy_contract.py", line 43, in __init__
        self.deploy_contract = DeployWalletContract(network, workchain)
      File "/toncli/src/toncli/modules/deploy_wallet_contract.py", line 53, in __init__
        data = self.build()
      File "/toncli/src/toncli/modules/abstract/deployer.py", line 107, in build
        data.append(contract_manipulation(os.path.abspath(contract.to_save_location),
      File "/toncli/src/toncli/modules/utils/fift/commands.py", line 101, in contract_manipulation
        output = subprocess.check_output(command, cwd=getcwd() if not cwd else cwd)
      File "/usr/lib/python3.10/subprocess.py", line 420, in check_output
        return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
      File "/usr/lib/python3.10/subprocess.py", line 524, in run
        raise CalledProcessError(retcode, process.args,
    subprocess.CalledProcessError: Command '['/usr/local/bin/fift', '-I', '/root/.config/toncli/fift-libs', '-s', '/toncli/src/toncli/modules/fift/contract_manipulation.fif', '/root/.config/toncli/wallet/build/contract.fif', '/tmp/tmpl_82u7g4.boc', '0', '/root/.config/toncli/wallet/build/boc/contract.boc', '/root/.config/toncli/wallet/build/contract_address']' returned non-zero exit status 2.
    

    how to reproduce with docker

    docker run --rm -it ubuntu:22.04 bash
    
    apt-get update && apt-get install -y build-essential cmake clang-11 openssl libssl-dev zlib1g-dev openssl wget git python3 python3-pip
    git clone --recurse-submodules --jobs 8 --depth 1 --branch toncli-local https://github.com/SpyCheese/ton.git /ton
    
    mkdir /build && cd /build
    
    cmake -DCMAKE_BUILD_TYPE=MinSizeRel /ton
    cmake --build . --config MinSizeRel --target func fift lite-client -- -j $(nproc)
    
    cp /build/lite-client/lite-client /build/crypto/fift /build/crypto/func /usr/local/bin/
    cd /
    
    git clone --depth 1 https://github.com/disintar/toncli.git
    cd toncli
    pip install -e .
    
    #specify /usr/local/bin/func /usr/local/bin/fift /usr/local/bin/lite-client
    toncli
    
    toncli update_libs
    
    cd /tmp/
    toncli start wallet
    
    cd wallet/
    toncli deploy
    
    opened by BorMor 2
  • Toncli deploys into the same address every time

    Toncli deploys into the same address every time

    Bug Type

    Functional

    Reproduction steps

    1. toncli deploy
    2. toncli deploy again

    Actual result

    The contract gets deployed to the same address over and over again, but all the times except the first TON CLI does nothing (because the address is already initialized)

    Expected result

    The contract deploys to a new address every time

    Suggested Severity

    High

    Device

    OS: Arch Linux x86_64 
    Host: MS-7D18 2.0 
    Kernel: 6.0.12-arch1-1
    CPU: 11th Gen Intel i5-11600 (12) @ 4.800GHz 
    GPU: Intel RocketLake-S GT1 [UHD Graphics 750] 
    Memory: 15823MiB
    

    Additional Context

    No response

    opened by avevad 1
  • Fixed incorrect idict_get_ref? & udict_get_ref? declarations

    Fixed incorrect idict_get_ref? & udict_get_ref? declarations

    Applying ton master branch fix: https://github.com/ton-blockchain/ton/blame/master/crypto/smartcont/stdlib.fc#L522 https://github.com/ton-blockchain/ton/commit/b640f068466b1244b69abd7acdbafd57fb147b7a#diff-bd02ff6fa1299e145b87bfc607ebca117825ff561217cd96382b8b7cdf7afdf6R522

    opened by stspbu 1
  • Fix too slow buffer

    Fix too slow buffer

    This is good one.

    If your fift creates large output - you will get error, but actually you WILL NOT see it. Because real error will be:

    Traceback (most recent call last):
      File "/Users/tvorogme/opt/anaconda3/bin/toncli", line 8, in <module>
        sys.exit(main())
      File "/Users/tvorogme/projects/toncli/src/toncli/main.py", line 67, in main
        CommandsExecuter(command, string_kwargs, parser)
      File "/Users/tvorogme/projects/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 42, in __init__
        self.command_mapper[command](self)
      File "/Users/tvorogme/projects/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 70, in get_command
        return GetCommand(self.string_kwargs, self.parser)
      File "/Users/tvorogme/projects/toncli/src/toncli/modules/utils/commands/command_classes/get_command.py", line 20, in __init__
        deployer.get(real_args[2:], args, fake_addreses=[[My()], [[None, args.address]]])
      File "/Users/tvorogme/projects/toncli/src/toncli/modules/abstract/deployer.py", line 413, in get
        print("\n".join(i))
    BlockingIOError: [Errno 35] write could not complete without blocking
    

    Seems that output buffer too slow for Fift + Python ;) I've founded this error in GET methods runs, but it can be in more places than that. Be careful. Will try to fix everywhere

    opened by tvorogme 1
  • WARNING: 🤖 Can't find executable for fift, please specify it

    WARNING: 🤖 Can't find executable for fift, please specify it

    I'm trying to install toncli on windows 10, I do everything as in the instructions https://github.com/disintar/toncli/blob/master/INSTALLATION.md at the last stage, when I open the ton-win64-binaries folder in powershell, I enter the toncli command, an error occurs: PS C:\Users\Admin\Desktop\ton-win64-binaries> toncli INFO: 🥰 First time run - i'll create config folder 4you and save some stuff there INFO: 🤖 Check all executables are installed... INFO: Adding path to executable func success! ERROR: Command '['C:\\Users\\Admin\\Desktop\\ton-win64-binaries\\fift.exe', '-V']' returned non-zero exit status 3221225501. WARNING: 🤖 Can't find executable for fift, please specify it, e.g.: /usr/bin/fift Path: How to solve?

    opened by CupoTa 0
  • bitstring library removed BitString class in the 4.x.x version

    bitstring library removed BitString class in the 4.x.x version

    Bug Type

    Functional

    Reproduction steps

    1. Install toncli
    2. Try to run it

    Actual result

    You will get "import error"

    Expected result

    Not to get an error ☺️

    Suggested Severity

    Low

    Device

    Desktop (please complete the following information):

    • OS: Linux Mint 21 x86_64

    Additional Context

    I see you specified in the requirements.txt 3.x.x version. Not sure how my OS or Python bin chose to use 4.x.x version or it was there before, not much of Python guy 😅, but I had to by hand replace 4.x.x with 3.x.x in the ~/.local/lib/... dir

    I set severity as Low, cause I'm not sure if others have the same problem and it's not because of my Python installation 🤔

    opened by liketurbo 4
  • Question: how to 'initialize' deploy-wallet on mainnet?

    Question: how to 'initialize' deploy-wallet on mainnet?

    Bug Type

    Other

    Reproduction steps

    What is the right way to 'initialize' deploy-wallet created with toncli? I've sent a few ton to it but it still uninitialized so I'm getting this on attempt to make any tx:

    Please, send more TON for deployment to ....

    How much exactly TON needs to be send to deploy-wallet (now it has 5) to finish initialization?

    Actual result

    toncli send -n mainnet -a 5 --address .....

    fails with 'Please, send more TON for deployment' message

    Expected result

    toncli send -n mainnet -a 5 --address .....

    should successfully send TONs

    Suggested Severity

    Medium

    Device

    Desktop (please complete the following information):

    • OS: Windows 11 [e.g. iOS]
    • TonCli - latest HEAD

    Additional Context

    No response

    opened by ElderOrb 2
  • Toncli tests success on out-of-gas

    Toncli tests success on out-of-gas

    Bug Type

    Functional

    Reproduction steps

    Code example https://gist.github.com/Trinketer22/b511a8f7c3820a3b01e15b4b634224d6

    thanks to @Trinketer22

    Actual result

    INFO: Test [__test_gas_limit] status: [SUCCESS] Test result: [[ 4949 ]] Total gas used (including testing code): [4949]

    Expected result

    Test status fail

    Suggested Severity

    Critical

    Device

    (base) tvorogme in ~/projects/nft_ultimate_sale on master ● ● ● λ toncli --version INFO: v0.0.43

    Additional Context

    No response

    opened by tvorogme 1
  • Unable to use toncli in directories containing Unicode characters in names

    Unable to use toncli in directories containing Unicode characters in names

    Bug Type

    Functional

    Reproduction steps

    1. Put some wallet contract directory inside directory with Unicode (for example, Russian) characters in name
    2. Try to use toncli run_tests

    Actual result

    INFO: Start tests
    unknown-location: error: Wrong encoding
    
    Traceback (most recent call last):
      File "C:\Program Files\Python39\lib\runpy.py", line 197, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "C:\Program Files\Python39\lib\runpy.py", line 87, in _run_code
        exec(code, run_globals)
      File "C:\Program Files\Python39\Scripts\toncli.exe\__main__.py", line 7, in <module>
      File "C:\Program Files\Python39\lib\site-packages\toncli\main.py", line 65, in main
        CommandsExecuter(command, string_kwargs, parser)
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 39, in __init__
        self.command_mapper[command](self)
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 49, in run_tests_command
        return RunTestsCommand(self.string_kwargs, self.parser)
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\commands\command_classes\run_tests_command.py", line 12, in __init__
        test_runner.run(args.contracts.split() if args.contracts else None,
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\test\tests.py", line 44, in run
        build_test(getcwd(), contracts=real_contracts, cwd=getcwd(), compile_tests_with_contract=not run_tests_old_way)
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\test\commands.py", line 56, in build_test
        build_test_files([*func_and_test_files, *contract.func_files_locations, *contract.func_tests_files_locations],
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\test\commands.py", line 87, in build_test_files
        get_output = check_output(build_command,
      File "C:\Program Files\Python39\lib\subprocess.py", line 420, in check_output
        return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
      File "C:\Program Files\Python39\lib\subprocess.py", line 524, in run
        raise CalledProcessError(retcode, process.args,
    subprocess.CalledProcessError: Command '['...\\ton-win64-binaries\\func.exe', '-o', '...тест_русский\\wallet\\build\\contract_tests.fif', '-SPA', '...\\toncli\\func-libs\\error_codes.func', '...\\toncli\\func-libs\\math.func', '...\\toncli\\func-libs\\stdlib.func', '...\\toncli\\test-libs\\1.address_helpers.func', '...\\toncli\\test-libs\\bad_messages_generator.func', '...\\toncli\\test-libs\\c5_parse_helpers.func', '...\\toncli\\test-libs\\message_helpers.func', '...\\toncli\\test-libs\\storage-test-helpers.func', '...\\toncli\\test-libs\\tests-helpers.func', '...\\toncli\\test-libs\\token-helpers.func', '...тест_русский\\wallet\\func\\Untitled-1.fc', '...тест_русский\\wallet\\tests\\tests.fc']' returned non-zero exit status 2.
    

    Expected result

    Compilation successful

    Suggested Severity

    Medium

    Device

    Desktop:

    • OS: Windows 10
    • toncli -v: INFO: v0.0.43
    • Hash of ton-win64-binaries without libcrypto (7-Zip, SHA256):
      • 2B90BB7F64269494EFC17069C9115399E3AF6A8BF77456FE137FA752DDD31806 - data hash
      • 4432D55FDBFE2B67CE051745779FB9BE050C986A33C007934533A989371BAA11 - data and names hash

    Additional Context

    No response

    opened by ProgramCrafter 0
  • How to use new tests? What is the current situation over TON binaries?

    How to use new tests? What is the current situation over TON binaries?

    You can be confused by installation process of toncli. We do our best to soften the corners.

    Current situation is: for latest master version (it's not in PyPi right now) you need to install binary from toncli-local branch of SpyCheese repo. Pre-builds can be founded here

    Is it safe?

    Yes, @SpyCheese is active TON contributor. The toncli-local branch contains new TVM OP codes, and it's up-to-date with master branch.

    New TVM OP present:

    GASLIMITSTEMP PRIVTOPUB SIGN RESETLOADEDCELLS

    Why this is needed?

    Those TVM OP needed for new toncli tests. Unlike the old version where you need to run TVM instant on each test - now you run only on TVM instant and run all tests inside it. This is a really cool improvement and the process now is smoother. The realization and idea is @BorysMinaiev (thanks for that).

    Why we can't merge it to ton-blockchain/ton master branch?

    According to @EmelyanenkoK - those TVM OP are used only for debug and tests, so it's better to have "developer" version of TVM and "production" version of TVM. You should keep in mind that these four TVM OP cannot be used in production.

    How to simplify proccess?

    Special thanks to @Trinketer22 we have a docker - you can create bash script which mount project to docker and there already binaries.

    Also Disintar-related dev @TonTheMoon (supported by TF) is creating auto-build version of TON source-code. I guess we will create one-line script of install toncli on any major system with auto-downloading binaries from package managers.

    documentation 
    opened by tvorogme 1
Releases(v0.0.4)
  • v0.0.4(Sep 18, 2022)

    v0.0.4

    PyPi: https://pypi.org/project/toncli/0.0.43/

    217 commits - WOW, a lot of work!

    Most work was supported by Ton Foundation and done by contributors, thanks.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.32(Mar 30, 2022)

    v0.0.32

    • add get_prev_c4 / get_prev_c5 in run_tests
    • fix -c in run_tests
    • fix func in non project root
    • Other minor fixes

    To update:

    pip install -U toncli
    toncli update_libs
    
    Source code(tar.gz)
    Source code(zip)
  • v0.0.22(Mar 27, 2022)

    • [x] Add sendboc command, so if .boc file pass - will send it via lite-cliente, if .fif file pass - will invoke tncli fift sendboc so fift script will be run, and then boc file on output will be sended
    • [x] Add --data-params to build command, to auto-generate data cells
    • [x] Update stdlib.fc to support nft
    • [x] Critical fix: self.wait_for_deploy(contracts=real_contracts) instead of self.wait_for_deploy(contracts=contracts)
    • [x] Add .gitignore to protect contract keys leaks
    • [x] Add cell slice parser in lite-client
    • [x] Add parse address to TonUtils.fif
    • [x] Fix custom path to fift / func / lite-client on startup
    • [x] Add command wallet to check wallets addresses
    • [x] Force fift / func libs update
    • [x] More stability in lite-client interaction
    • [x] Send exteranal_message to contract without need to provide wrapper of external_message, just pass body bytes ( with support of multiple contracts)
    • [x] Send internal_message from deploy wallet in one command
    • [x] NFT Example deploy
    • [x] Add retry parameter to lite-client, try several times to do query
    • [x] Add windows support
    • [x] Func tests
    • [x] Custom stdlib-tests.fc and asm-tests.fif for tests
    • [x] Documentation update
    Source code(tar.gz)
    Source code(zip)
Owner
Disintar IO
Disintar IO
An open source terminal project made in python

Calamity-Terminal An open source terminal project made in python. Calamity Terminal is a free and open source lightweight terminal. Its made 100% off

1 Mar 08, 2022
Palm CLI - the tool-belt for data teams

Palm CLI: The extensible CLI at your fingertips Palm is a universal CLI developed to improve the life and work of data professionals. Palm CLI documen

Palmetto 41 Dec 12, 2022
CLI client for RFC 4226's HOTP and RFC 6238's TOTP.

One Time Password (OTP, TOTP/HOTP) OTP serves as additional protection in case of password leaks. onetimepass allows you to manage OTP codes and gener

Apptension 4 Jan 05, 2022
Project scoped command execution to just do your work

Judoka is a command line utility that lets you define project scoped commands and call them through their alias. It lets you just do (= judo) your work.

Eelke van den Bos 2 Dec 17, 2021
Chameleon is yet another PowerShell obfuscation tool designed to bypass AMSI and commercial antivirus solutions.

Chameleon is yet another PowerShell obfuscation tool designed to bypass AMSI and commercial antivirus solutions. The tool has been developed as a Python port of the Chimera project, by tokioneon_.

332 Dec 26, 2022
spade is the next-generation networking command line tool.

spade is the next-generation networking command line tool. Say goodbye to the likes of dig, ping and traceroute with more accessible, more informative and prettier output.

Vivaan Verma 5 Jan 28, 2022
Turdshovel is an interactive CLI tool that allows users to dump objects from .NET memory dumps

Turdshovel Description Turdshovel is an interactive CLI tool that allows users to dump objects from .NET memory dumps without having to fully understa

Leron Gray 41 Jul 27, 2022
Chopper: An Automated Security Headers Analyzer

____ _ _ / ___| |__ ___ _ __ _ __ ___ _ __| | | | | '_ \ / _ \| '_ \| '_ \ / _ \ '__| | | |___| | | | (_) |

Kamran Saifullah (Frog Man) 2 Nov 27, 2022
lazy_table - a python-tabulate wrapper for producing tables from generators

A python-tabulate wrapper for producing tables from generators. Motivation lazy_table is useful when (i) each row of your table is generated by a poss

Parsiad Azimzadeh 52 Nov 12, 2022
Bear-Shell is a shell based in the terminal or command prompt.

Bear-Shell is a shell based in the terminal or command prompt. You can navigate files, run python files, create files via the BearUtils text editor, and a lot more coming up!

MichaelBear 6 Dec 25, 2021
pyNPS - A cli Linux and Windows Nopaystation client made with python 3 and wget

Currently, all the work is being done inside the refactoring branch. pyNPS - A cli Linux and Windows Nopaystation client made with python 3 and wget P

Everton Correia 45 Dec 11, 2022
A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.

mycli A command line client for MySQL that can do auto-completion and syntax highlighting. HomePage: http://mycli.net Documentation: http://mycli.net/

dbcli 10.7k Jan 07, 2023
Python3 parser for Apple's crash reports

pyCrashReport in intended for analyzing crash reports from Apple devices into a clearer view, without all the thread listing and loaded images, just the actual data you really need to debug the probl

7 Aug 19, 2022
Color preview command-line tool written in python

Color preview command-line tool written in python

Arnau 1 Dec 27, 2021
alternative cli util for update-alternatives

altb altb is a cli utility influenced by update-alternatives of ubuntu. Linked paths are added to $HOME/.local/bin according to XDG Base Directory Spe

Elran Shefer 8 Dec 07, 2022
CLI utility to search and download torrents from major torrent sites

CLI Torrent Downloader About CLI Torrent Downloader provides convenient and quick way to search torrent magnet links (and to run associated torrent cl

x0r0x 86 Dec 19, 2022
Convert markdown to HTML using the GitHub API and some additional tweaks with Python.

Convert markdown to HTML using the GitHub API and some additional tweaks with Python. Comes with full formula support and image compression.

phseiff 70 Dec 23, 2022
Joji convert a text to corresponding emoji if emoji is available

Joji Joji convert a text to corresponding emoji if emoji is available How it Works ? 1. There is a json file with emoji names as keys and correspondin

Gopikrishnan Sasikumar 28 Nov 26, 2022
Text based command line webcam photobooth app

Skunkbooth Why See it in action Usage Installation Run Media location Contributing Install Poetry Clone the repo Activate poetry shell Install dev dep

David Yang 45 Dec 26, 2022
Redial is a simple shell application that manages your SSH sessions on Unix terminal.

redial redial is a simple shell application that manages your SSH sessions on Unix terminal. What's New 0.7 (19.12.2019) Basic support for adding ssh

Bahadır Yağan 186 Oct 28, 2022