Skip to content

RDTK/rosetta-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rosetta-project README

STARTED Introduction

The rosetta-project system is a framework for modeling and analyzing software projects with a focus on inter-project dependencies.

Support for concrete project natures is implemented in separate systems such as rosetta-project-asdf.

STARTED Tutorial

STARTED Versions

A version is a sequence of components such that a prefix consists of non-negative integers and an optional suffix consists of arbitrary strings:

StringObjectComponents
“1.0”#<VERSION 1.0 {1002763DB3}>(1 0)
“1.0-alpha”#<VERSION 1.0-alpha {1002765EE3}>(1 0 “alpha”)

The main operations on version objects are various comparisons:

OperatorLeftRightResult
ROSETTA-PROJECT.MODEL.VERSION:VERSION<1.01.0NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION<1.01.1T
ROSETTA-PROJECT.MODEL.VERSION:VERSION<1.11.0NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION<1.11.1NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION<=1.01.0T
ROSETTA-PROJECT.MODEL.VERSION:VERSION<=1.01.1T
ROSETTA-PROJECT.MODEL.VERSION:VERSION<=1.11.0NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION<=1.11.1T
ROSETTA-PROJECT.MODEL.VERSION:VERSION=1.01.0T
ROSETTA-PROJECT.MODEL.VERSION:VERSION=1.01.1NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION=1.11.0NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION=1.11.1T
ROSETTA-PROJECT.MODEL.VERSION:VERSION/=1.01.0NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION/=1.01.1T
ROSETTA-PROJECT.MODEL.VERSION:VERSION/=1.11.0T
ROSETTA-PROJECT.MODEL.VERSION:VERSION/=1.11.1NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION>=1.01.0T
ROSETTA-PROJECT.MODEL.VERSION:VERSION>=1.01.1NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION>=1.11.0T
ROSETTA-PROJECT.MODEL.VERSION:VERSION>=1.11.1T
ROSETTA-PROJECT.MODEL.VERSION:VERSION>=1.01.0T
ROSETTA-PROJECT.MODEL.VERSION:VERSION>=1.01.1NIL
ROSETTA-PROJECT.MODEL.VERSION:VERSION>=1.11.0T
ROSETTA-PROJECT.MODEL.VERSION:VERSION>=1.11.1T

The module also supports a limited form of logical expressions:

(defparameter *my-predicate*
  (architecture.builder-protocol:with-builder ((make-instance 'rosetta.frontend::model-builder
                                                              :repository (make-instance 'rosetta.model.data::base-repository)))
    (architecture.builder-protocol:node* (:version-connective :connective 'and)
      (* :operand (list (architecture.builder-protocol:node* (:version-predicate :operator '>)
                          (1 :version (architecture.builder-protocol:node* (:version :name "1.3"))))
                        (architecture.builder-protocol:node* (:version-predicate :operator '<=)
                          (1 :version (architecture.builder-protocol:node* (:version :name "1.5")))))))))
*my-predicate*
#<VERSION-AND (VERSION> 1.3) (VERSION<= 1.5) {205D79CB}>

These expressions can be evaluated against version objects:

(map 'list (lambda (version)
             (list
              version
              (rosetta-project.model.version:version-matches
               *my-predicate* (rosetta-project.model.version:make-version version))))
     '("1.2.0" "1.2" "1.3" "1.4.0" "1.4" "1.4-alpha" "1.5" "1.6" "1.6-beta"))
VersionSatisfies predicate?
1.2.0NIL
1.2NIL
1.3NIL
1.4.0T
1.4T
1.4-alphaT
1.5T
1.6NIL
1.6-betaNIL

STARTED Analyzing Projects

(rs.f:process :later #P"later" 'list)
later

Analyses for the following project kinds are included:

NameDescription
:PERSONA name of a person, potentially with an email address.
:PERSON-LISTA list of names, potentially with email addresses.

TODO Reference

TODO Related Work

Settings

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published