oleganza / iopackage

Io code package manager based on Git repositories

This URL has Read+Write access

name age message
file .gitignore Sat Feb 14 05:23:18 -0800 2009 initial commit [oleganza]
file GitSource.io Fri Feb 27 03:15:49 -0800 2009 more refactoring and fixes to verify.io [oleganza]
file GuessSource.io Thu Feb 26 14:31:13 -0800 2009 refactored [oleganza]
file README Fri Feb 27 03:15:49 -0800 2009 more refactoring and fixes to verify.io [oleganza]
file Sources.io Fri Feb 27 03:15:49 -0800 2009 more refactoring and fixes to verify.io [oleganza]
file iopackage.io Fri Feb 27 03:15:49 -0800 2009 more refactoring and fixes to verify.io [oleganza]
file testLoadLibrary.io Thu Feb 26 13:45:32 -0800 2009 simple verification library and package load ex... [oleganza]
file verify.io Fri Feb 27 03:15:49 -0800 2009 more refactoring and fixes to verify.io [oleganza]
README
iopackage - Io code package manager based on Git repositories.

Examples:

  Amanda := Package select("git://github.com/oleganza/amanda.git", "8ebe4510990cdc010e9") load  # guess "amanda.io" or 
  "main.io"
  Amanda := Package select("git://github.com/oleganza/amanda.git", "8ebe4510990cdc010e9") load("somefile.io")
  
Design notes.

1. Each program is a package.
2. Each package requires other packages specifying strict version.
3. Each package is loaded into local context. Therefore, multiple 
   different versions of the same package could be loaded in the same state.  

Real world example:

1. App requires A5, B5, C5.
2. A5 requires B3, C5 requires A3.
3. A5, B5 and C5 are the first-level libraries (App is a zero-level library).
   Each of them could be hacked/forked: App may specify development versions like A5.1 or B5.2.
4. Package system should allow use of different medias and repositories:
   tarballs, git, mercurial, bazaar, subversion, name-your-repository. 
   Thus, multiple versions could be defined.
   Example:
     
     Package Git := Package Source clone do(
       # returns a path on local filesystem to the package root folder
       prepare := method(version, urls,
         
       )
     )
     
     p := Package clone
     p addSource(Package Git clone setVersion("fb127e87fa78bc3761") appendURL("...soft.git"))
     p addSource(Package Hg clone setVersion("fb127e87fa78bc3761") appendURL("...soft.hg"))
     p addSource(Package Tarball clone setVersion("fb127e87fa78bc3761") appendURL("...soft.tar.gz"))
     p setup
     MySoft := p load("init.io")
     
     # Shorter (sets version for all URLs):
     MySoft := Package withURLs("git://", "file://...", "") setVersion("1.0") load("package-init.io")
     
5.