cpack_repository/commit
Update xref info for system files if the file has changed
author | Jan Wielemaker |
---|---|
Fri Dec 3 13:37:35 2010 +0100 | |
committer | Jan Wielemaker |
Fri Dec 3 13:37:35 2010 +0100 | |
commit | 4c6afc8f2f69d87b39af9cf285cff59b476a0cd0 |
tree | 78c52870b478a7414010cf17548930eddc8df0b1 |
parent | bad133062d4043b77a99ae4884477581c142a38d |
Diff style: patch stat
diff --git a/lib/cpack/xref.pl b/lib/cpack/xref.pl index 6f0e327..5d2ecf4 100644 --- a/lib/cpack/xref.pl +++ b/lib/cpack/xref.pl @@ -190,31 +190,49 @@ system_file_uri(Path, Root, Class, Graph, URI) :- directory_file_path(Root, RelPath, Path), cpack_uri(prolog, RelPath, URI), ( rdfs_individual_of(URI, cpack:'File') - -> true + -> update_exports(Path, URI, Graph) ; file_base(RelPath, Base), file_base_name(RelPath, FileName), rdf_assert(URI, rdf:type, Class, Graph), rdf_assert(URI, cpack:path, literal(RelPath), Graph), rdf_assert(URI, cpack:name, literal(FileName), Graph), rdf_assert(URI, cpack:base, literal(Base), Graph), - ( xref_public_list(Path, _, Module, Exports, Public, _Meta, -) - -> rdf_assert(URI, cpack:module, literal(Module), Graph), - forall(member(PI, Exports), - ( cannonical_pi(PI, CannPI), - format(atom(Id), '~q', [CannPI]), - rdf_assert(URI, cpack:exportsPredicate, - literal(Id), Graph) - )), - forall(member(PI, Public), - ( cannonical_pi(Module:PI, CannPI), - format(atom(Id), '~q', [CannPI]), - rdf_assert(URI, cpack:publicPredicate, - literal(Id), Graph) - )) - ; true - ) + update_exports(Path, URI, Graph) ). +update_exports(Path, URI, Graph) :- + time_file(Path, Time), + format_time(atom(XSD), '%FT%T%:z', Time), + rdf_equal(xsd:dateTime, Type), + RDFStamp = literal(type(Type, XSD)), + ( rdf_has(URI, cpack:lastModifiedTime, RDFStamp) + -> true + ; rdf_retractall(URI, cpack:lastModifiedTime, _, Graph), + rdf_retractall(URI, cpack:exportsPredicate, _, Graph), + rdf_retractall(URI, cpack:publicPredicate, _, Graph), + rdf_retractall(URI, cpack:module, _, Graph), + rdf_assert(URI, cpack:lastModifiedTime, RDFStamp, Graph), + assert_exports(Path, URI, Graph) + ). + +assert_exports(Path, URI, Graph) :- + xref_public_list(Path, _, Module, Exports, Public, _Meta, -), !, + rdf_assert(URI, cpack:module, literal(Module), Graph), + forall(member(PI, Exports), + ( cannonical_pi(PI, CannPI), + format(atom(Id), '~q', [CannPI]), + rdf_assert(URI, cpack:exportsPredicate, + literal(Id), Graph) + )), + forall(member(PI, Public), + ( cannonical_pi(Module:PI, CannPI), + format(atom(Id), '~q', [CannPI]), + rdf_assert(URI, cpack:publicPredicate, + literal(Id), Graph) + )). +assert_exports(_,_,_). + + cannonical_pi(M:PI, M:CannPi) :- !, cannonical_pi(PI, CannPi). cannonical_pi(Name//DCGArity, Name/Arity) :- !,