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