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()) {true} else dictProvided = dictProvided + expectErrorCode = pre function(x::int){ if (x==0)::bool {ad hoc "Success"} else {ad hoc "Error"} } */