Skip to content

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

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages