Code Generation
Functionalities that use code generation
There are situations in which it would be very useful to use the database as the base of truth of the project, that is why we have developed a tool to generate code from the resources in the database.
For the examples we will be using the execution of the following code:
# 's' being the shimoku client
s.set_workspace()
s.set_board('Code Generation Board')
s.set_menu_path('Code Generation Menu Path')
s.plt.set_shared_data({
'stacked data': [
{'Weekday': 'Mon', 'Email': 120, 'Union Ads': 132, 'Video Ads': 101, 'Search Engine': 134},
{'Weekday': 'Tue', 'Email': 220, 'Union Ads': 182, 'Video Ads': 191, 'Search Engine': 234},
{'Weekday': 'Wed', 'Email': 150, 'Union Ads': 232, 'Video Ads': 201, 'Search Engine': 154},
{'Weekday': 'Thu', 'Email': 820, 'Union Ads': 932, 'Video Ads': 901, 'Search Engine': 934},
{'Weekday': 'Fri', 'Email': 120, 'Union Ads': 132, 'Video Ads': 101, 'Search Engine': 134},
{'Weekday': 'Sat', 'Email': 220, 'Union Ads': 182, 'Video Ads': 191, 'Search Engine': 234},
{'Weekday': 'Sun', 'Email': 150, 'Union Ads': 232, 'Video Ads': 201, 'Search Engine': 154},
],
})
s.plt.set_bentobox(12, 3)
s.plt.html(
html=s.html_components.create_h1_title('Code Generation Test', ''),
cols_size=24, rows_size=10,
order=0,
)
s.plt.stacked_bar(
data='stacked data', order=1,
cols_size=24, rows_size=25,
x='Weekday', variant='clean shadow', show_values='all'
)
s.plt.pop_out_of_bentobox()
s.set_menu_path('Code Generation Menu Path', 'Sub Menu Path')
s.plt.set_modal('Code Generation Modal')
s.plt.html(
html='Code Generation Test in Modal',
order=0,
)
s.plt.pop_out_of_modal()
s.plt.modal_button('Open Modal', 0, 'Code Generation Modal')
s.run()

Basic Code Generation
The command to use:
> shimoku persist generate-code
Generate code for a set workspace
optional arguments:
--output-path Output path for the generated code.
--menu-paths List of menu paths to generate code from, leave empty to generate code for all menu paths.
--hide-progress-bar Show progress bar while generating code.
--use-black-formatter Use black formatter to format the generated code.
The code will follow the following file pattern: workspace/menu_path/sub_path
Using the example workspace in the playground and executing:
> shimoku persist generate-code --use-black-formatter
The generated files are:

For each workspace that you generate an execute file will be generated, like execute_workspace_local.py
. The result of executing the file will be the same as the initial workspace.
Commit
The command to use:
> shimoku persist commit
The command will ask for the target business credentials and will generate the code form the current workspace and execute the result in the target workspace. It is intended to use when on the playground to easily save the contents to the cloud without relying on the source code.
The result of using it with the example workspace is:

Pull
The function to use:
> shimoku persist pull
The inverse of the commit method, retrieves the contents from an origin workspace and executes it in the current workspace.
Last updated
Was this helpful?