github.com/benchkram/bob@v0.0.0-20240314204020-b7a57f2f9be9/architecture.md (about)

     1  # bob architecture
     2  Fine grained infos on bob's features
     3  
     4  
     5  ## Buildinfo & Artifact Store
     6  Bob uses buildinfos and artifacts store to determine if a rebuild is required or if a target could be loaded from the artifact store.
     7  
     8  * check if input hash exists in buildinfo store
     9  * check validity of tragets
    10  * check if tragets can be loaded from artifact store
    11  * rebuild
    12  * write buildinfo
    13  * write artifacts
    14  
    15  ```
    16  @startuml
    17  ditaa(scale=0.9)
    18  
    19                       /--------------------------------\     
    20                       |cFFF                            |     
    21                       | `bob build mytask`             |       
    22                       \----+----------------------+----/     
    23                            |                      |          
    24                            |                      |          
    25                            |                      |          
    26     /----+-----------------+---------+       /----+---------------------------+
    27     |cFFF                            |       |cFFF                            |
    28     | buildinfo store                |       | artifact store                 | 
    29     \--------------------------------/       \--------------------------------/     
    30                                            
    31  @enduml
    32  ```
    33  
    34  #### Buildinfo
    35  A buildinfo item holds general information about the task triggered that build. It also contains a map of input:target combinations for each target in the build chain (child tragets included).
    36  This allows to validate the integraty and existent of all targets.
    37  
    38  It can be accessed by the input hash of a task.
    39  
    40  #### Artifact
    41  A artifact stores the targets and the path information of a task. 
    42  
    43  Artifacts can be accesed by the input hash of a task.