-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ec1417b
commit 08e0d5d
Showing
35 changed files
with
404 additions
and
163 deletions.
There are no files selected for viewing
2 changes: 1 addition & 1 deletion
2
...tion_beaker_react/projects/production_beaker_react-contracts/.algokit/.copier-answers.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
61 changes: 61 additions & 0 deletions
61
...s/production_beaker_react-contracts/.tours/getting-started-with-your-algokit-project.tour
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
{ | ||
"$schema": "https://aka.ms/codetour-schema", | ||
"title": "Getting Started with Your AlgoKit Project", | ||
"steps": [ | ||
{ | ||
"file": "README.md", | ||
"description": "Welcome to your brand new AlgoKit template-based project. In this tour, we will guide you through the main features and capabilities included in the template.", | ||
"line": 3 | ||
}, | ||
{ | ||
"file": "README.md", | ||
"description": "Start by ensuring you have followed the setup of pre-requisites.", | ||
"line": 9 | ||
}, | ||
{ | ||
"file": "smart_contracts/__main__.py", | ||
"description": "This is the main entry point for building your smart contracts. The default template includes a starter 'Hello World' contract that is deployed via the `algokit-utils` package (either `ts` or `py`, depending on your choice). To create a new smart contract, you can use the [`algokit generate`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/generate.md) command and invoke a pre-bundled generator template by running `algokit generate smart-contract`. This action will create a new folder in the `smart_contracts` directory, named after your project. Each folder contains a `contract.py` file, which is the entry point for your contract implementation, and `deploy_config.py` | `deployConfig.ts` files (depending on the language chosen for the template), that perform the deployment of the contract.", | ||
"line": 26 | ||
}, | ||
{ | ||
"file": "smart_contracts/hello_world/deploy_config.py", | ||
"description": "The default deployment scripts invoke a sample method on the starter contract that demonstrates how to interact with your deployed Algorand on-chain applications using the [`AlgoKit Typed Clients`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/generate.md#1-typed-clients) feature.", | ||
"line": 32 | ||
}, | ||
{ | ||
"file": "tests/hello_world_test.py", | ||
"description": "If you opted to include unit tests, the default tests provided demonstrate an example of mocking, setting up fixtures, and testing smart contract calls on an AlgoKit typed client.", | ||
"line": 36 | ||
}, | ||
{ | ||
"file": ".env.localnet.template", | ||
"description": "Environment files are a crucial mechanism that allows you to set up the [`algokit deploy`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/deploy.md) feature to simplify deploying your contracts in CI/CD environments (please note we still recommend careful evaluation when it comes to deployment to MainNet). Clone the file and remove the `.template` suffix to apply the changes to deployment scripts and launch configurations. The network prefix `localnet|testnet|mainnet` is primarily optimized for `algokit deploy`. The order of loading the variables is `.env.{network}` < `.env`.", | ||
"line": 2 | ||
}, | ||
{ | ||
"file": ".algokit.toml", | ||
"description": "This is the configuration file used by AlgoKit to determine version requirements, `algokit deploy` settings, and references to custom generators.", | ||
"line": 5 | ||
}, | ||
{ | ||
"file": ".vscode/launch.json", | ||
"description": "Refer to the pre-bundled Visual Studio launch configurations, offering various options on how to execute the build and deployment of your smart contracts.", | ||
"line": 5 | ||
}, | ||
{ | ||
"file": ".vscode/extensions.json", | ||
"description": "We highly recommend installing the recommended extensions to get the most out of this template starter project in your VSCode IDE.", | ||
"line": 3 | ||
}, | ||
{ | ||
"file": "smart_contracts/__main__.py", | ||
"description": "Uncomment the following lines to enable complementary utilities that will generate artifacts required for the [AlgoKit AVM Debugger](https://github.com/algorandfoundation/algokit-avm-vscode-debugger) VSCode plugin available on the [VSCode Extension Marketplace](https://marketplace.visualstudio.com/items?itemName=algorandfoundation.algokit-avm-vscode-debugger). A new folder will be automatically created in the `.algokit` directory with source maps of all TEAL contracts in this workspace, as well as traces that will appear in a folder at the root of the workspace. You can then use the traces as entry points to trigger the debug extension. Make sure to have the `.algokit.toml` file available at the root of the workspace.", | ||
"line": 13 | ||
}, | ||
{ | ||
"file": "smart_contracts/_helpers/__init__.py", | ||
"description": "This folder contains helper scripts for contract management. These automate tasks like compiling, generating clients, and deploying. Usually, you won't need to edit these files, but advanced users can expand them for custom needs.", | ||
"line": 1 | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion
2
...tion_python_react/projects/production_python_react-contracts/.algokit/.copier-answers.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
56 changes: 56 additions & 0 deletions
56
...s/production_python_react-contracts/.tours/getting-started-with-your-algokit-project.tour
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
{ | ||
"$schema": "https://aka.ms/codetour-schema", | ||
"title": "Getting Started with Your AlgoKit Project", | ||
"steps": [ | ||
{ | ||
"file": "README.md", | ||
"description": "Welcome to your brand new AlgoKit template-based project. In this tour, we will guide you through the main features and capabilities included in the template.", | ||
"line": 3 | ||
}, | ||
{ | ||
"file": "README.md", | ||
"description": "Start by ensuring you have followed the setup of pre-requisites.", | ||
"line": 9 | ||
}, | ||
{ | ||
"file": ".algokit.toml", | ||
"description": "This is the main configuration file used by algokit-cli to manage the project. The default template includes a starter 'Hello World' contract that is deployed via the `algokit-utils` package (either `ts` or `py`, depending on your choice). To create a new smart contract, you can use the [`algokit generate`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/generate.md) command and invoke a pre-bundled generator template by running `algokit generate smart-contract` (see how it is defined in the `.algokit.toml`, you can create your own generators if needed). This action will create a new folder in the `smart_contracts` directory, named after your project. Each folder contains a `contract.py` file, which is the entry point for your contract implementation, and `deploy_config.py` | `deployConfig.ts` files (depending on the language chosen for the template), that perform the deployment of the contract. Additionally you can define custom commands to run (similar to `npm` scripts), see definitions under `[project]` section in `.algokit.toml`.", | ||
"line": 1 | ||
}, | ||
{ | ||
"file": "smart_contracts/hello_world/deploy_config.py", | ||
"description": "The default deployment scripts invoke a sample method on the starter contract that demonstrates how to interact with your deployed Algorand on-chain applications using the [`AlgoKit Typed Clients`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/generate.md#1-typed-clients) feature. The invocation if deploy is aliased in `.algokit.toml` file, allowing simple deployments via `algokit project deploy` command.", | ||
"line": 32 | ||
}, | ||
{ | ||
"file": "tests/hello_world_test.py", | ||
"description": "If you opted to include unit tests, the default tests provided demonstrate an example of mocking, setting up fixtures, and testing smart contract calls on an AlgoKit typed client.", | ||
"line": 36 | ||
}, | ||
{ | ||
"file": ".env.localnet.template", | ||
"description": "Environment files are a crucial mechanism that allows you to set up the [`algokit deploy`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/deploy.md) feature to simplify deploying your contracts in CI/CD environments (please note we still recommend careful evaluation when it comes to deployment to MainNet). Clone the file and remove the `.template` suffix to apply the changes to deployment scripts and launch configurations. The network prefix `localnet|testnet|mainnet` is primarily optimized for `algokit deploy`. The order of loading the variables is `.env.{network}` < `.env`.", | ||
"line": 2 | ||
}, | ||
{ | ||
"file": ".vscode/launch.json", | ||
"description": "Refer to the pre-bundled Visual Studio launch configurations, offering various options on how to execute the build and deployment of your smart contracts. Alternatively execute `algokit project run` to see list of available custom commands.", | ||
"line": 5 | ||
}, | ||
{ | ||
"file": ".vscode/extensions.json", | ||
"description": "We highly recommend installing the recommended extensions to get the most out of this template starter project in your VSCode IDE.", | ||
"line": 3 | ||
}, | ||
{ | ||
"file": "smart_contracts/__main__.py", | ||
"description": "Uncomment the following lines to enable complementary utilities that will generate artifacts required for the [AlgoKit AVM Debugger](https://github.com/algorandfoundation/algokit-avm-vscode-debugger) VSCode plugin available on the [VSCode Extension Marketplace](https://marketplace.visualstudio.com/items?itemName=algorandfoundation.algokit-avm-vscode-debugger). A new folder will be automatically created in the `.algokit` directory with source maps of all TEAL contracts in this workspace, as well as traces that will appear in a folder at the root of the workspace. You can then use the traces as entry points to trigger the debug extension. Make sure to have the `.algokit.toml` file available at the root of the workspace.", | ||
"line": 15 | ||
} | ||
{ | ||
"file": "smart_contracts/_helpers/__init__.py", | ||
"description": "This folder contains helper scripts for contract management. These automate tasks like compiling, generating clients, and deploying. Usually, you won't need to edit these files, but advanced users can expand them for custom needs.", | ||
"line": 1 | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
74 changes: 74 additions & 0 deletions
74
...python_react/projects/production_python_react-contracts/smart_contracts/_helpers/build.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
import logging | ||
import subprocess | ||
from pathlib import Path | ||
from shutil import rmtree | ||
|
||
logger = logging.getLogger(__name__) | ||
deployment_extension = "py" | ||
|
||
|
||
def _get_output_path(output_dir: Path, deployment_extension: str) -> Path: | ||
return output_dir / Path( | ||
"{contract_name}" | ||
+ ("_client" if deployment_extension == "py" else "Client") | ||
+ f".{deployment_extension}" | ||
) | ||
|
||
|
||
def build(output_dir: Path, contract_path: Path) -> Path: | ||
output_dir = output_dir.resolve() | ||
if output_dir.exists(): | ||
rmtree(output_dir) | ||
output_dir.mkdir(exist_ok=True, parents=True) | ||
logger.info(f"Exporting {contract_path} to {output_dir}") | ||
|
||
build_result = subprocess.run( | ||
[ | ||
"algokit", | ||
"--no-color", | ||
"compile", | ||
"python", | ||
contract_path.absolute(), | ||
f"--out-dir={output_dir}", | ||
"--output-arc32", | ||
], | ||
stdout=subprocess.PIPE, | ||
stderr=subprocess.STDOUT, | ||
text=True, | ||
) | ||
if build_result.returncode: | ||
raise Exception(f"Could not build contract:\n{build_result.stdout}") | ||
|
||
app_spec_file_names = [file.name for file in output_dir.glob("*.arc32.json")] | ||
|
||
for app_spec_file_name in app_spec_file_names: | ||
if app_spec_file_name is None: | ||
raise Exception( | ||
"Could not generate typed client, .arc32.json file not found" | ||
) | ||
print(app_spec_file_name) | ||
generate_result = subprocess.run( | ||
[ | ||
"algokit", | ||
"generate", | ||
"client", | ||
output_dir, | ||
"--output", | ||
_get_output_path(output_dir, deployment_extension), | ||
], | ||
stdout=subprocess.PIPE, | ||
stderr=subprocess.STDOUT, | ||
text=True, | ||
) | ||
if generate_result.returncode: | ||
if "No such command" in generate_result.stdout: | ||
raise Exception( | ||
"Could not generate typed client, requires AlgoKit 2.0.0 or " | ||
"later. Please update AlgoKit" | ||
) | ||
else: | ||
raise Exception( | ||
f"Could not generate typed client:\n{generate_result.stdout}" | ||
) | ||
|
||
return output_dir / app_spec_file_name |
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
63 changes: 0 additions & 63 deletions
63
..._python_react/projects/production_python_react-contracts/smart_contracts/helpers/build.py
This file was deleted.
Oops, something went wrong.
8 changes: 0 additions & 8 deletions
8
...n_python_react/projects/production_python_react-contracts/smart_contracts/helpers/util.py
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...starter_beaker_react/projects/starter_beaker_react-contracts/.algokit/.copier-answers.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.