Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,54 @@ customers with a standard expectation.
This library provides a wrapper CLI interface for convenience. This interface is not supported at the moment. So we
don't provide any guarantees of back compatibility.

### Project Meta
#### Directory Structure
This project's directories are laid as follows:

```
aws_lambda_builders
├── __init__.py
├── __main__.py <- entrypoint for the CLI
├── action.py <- This now just has the BaseAction class and any common language-agnostic Actions like CopySourceAction
├── runner.py <- This is more or less the same as above.
├── workflows <- Now instead of having all the builders/actions in one place, they are sorted by their language. You now need to use your technique to iterate these submodules and import the builders so that they get included in your registry.
│ ├── __init__.py
│ ├── dotnet_cli
│ │ ├── __init__.py
│ │ ├── actions.py
│ │ └── builders.py
│ ├── javascript_npm
│ │ ├── __init__.py
│ │ ├── npm_packager.js <- custom stuff would live alongside the python in these modules or in more subfolders.
│ │ ├── actions.py
│ │ └── builders.py
│ └── python_pip <-- files in this directory do not have any convention. You can name them however you want
│ ├── __init__.py
│ ├── packager.py <- low level packager code that is called by the PythonPipResolveAction to do its job.
│ ├── actions.py <- This now contains python specific actions like PythonPipResolveAction
│ └── builders.py <- The python specific builders would be defined here
├── exceptions.py
└── registry.py
```

Benefit here is that our high level build/action system is pulled out, and each language-specific piece acts almost like a plugin, its its own self contained directory. Someone could develop their own "package" with the structure

```
ruby
├── __init__.py
├── packager.rb
├── utils.rb
├── actions.py
└── builders.py
```

And essentially drop into the builders package (or maybe we can have a notion of a BUILDERS_PATH that is searched for these things and the default entry is this vended builders dir.) to get it to work. This seems the friendliest to me.

#### Terminologies

- **builder**: The entire project is called builder, because it can build Lambda functions
- **workflows**: Building for each language+framework combination is defined using a workflow.
- **actions**: A workflow is implemented as a chain of actions.



File renamed without changes.
Empty file.
Empty file.
Empty file.
149 changes: 0 additions & 149 deletions lambda_builders/actions/python_pip/DESIGN.md

This file was deleted.

6 changes: 0 additions & 6 deletions lambda_builders/cli/main.py

This file was deleted.

Empty file added tests/__init__.py
Empty file.
Empty file added tests/functional/.gitkeep
Empty file.
Empty file added tests/functional/__init__.py
Empty file.
Empty file added tests/integration/__init__.py
Empty file.
Empty file added tests/unit/__init__.py
Empty file.
Empty file added tests/unit/test_actions.py
Empty file.
Empty file added tests/unit/test_registry.py
Empty file.
Empty file added tests/unit/test_runner.py
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.