sequence
No OneTemporary

File Metadata

Created
Thu, Jul 9, 4:53 AM

sequence

include raw "core/dependencies.lp"
include raw "core/control-context.lp"
include raw "core/unit-tests.lp"
start = function:: int; entry {
context:: goal(artefact(gcc)).
provideGoals()
}
provideGoals = function():: int {
loop context (goal) {
visit_artefact()
}
}
visitArtefact = function(){
switch (EXISTS()){
case INSTALLED {
ad hoc NOACTION
}
case NON_INSTALLED {
run [
PROVIDE_DEPENDENCIES(),
PROVIDE())
]
}
}
}
provideDependencies() = function() {
rule context {
childs(Child) <- artefact(Item); artefact_depends(Item, Child).
}
loop context (childs) {
VISIT_ARTEFACT().
}
}
case context:: artefact(subversion) {
EXISTS = function() {
exec("svn --version"):: ExpectNoErrors; log("Check svn").
}
PROVIDE = function(){
exec("sudo apt-get install subversion"):: log("[Subversion] Installation").
}
}
// DRAFT
/*
flagIsProvided = if(dictProvided(<item>)) {true} else
dictProvided = dictProvided + <item>
expectErrorCode = pre function(x::int){
if (x==0)::bool {ad hoc "Success"}
else {ad hoc "Error"}
}
*/

Event Timeline