www.digitalmars.com         C & C++   DMDScript  

D - Lib Repository

reply "DeadCow" <deadcow-remove-this free.fr> writes:
Hi,

Here are some ideas for a simple D's lib repository.

Lib implementors part:

first, write a lib descriptor ( xml file ? ) that contains informations such
as :

- descriptor version
- coder name
- coder email
- coder home page
- project name
- project category ( text/processing , graphics/3d/OpenGL, ... )
- project homepage
- project logo url ?
- a list of libs where lib is :
    - lib name
    - lib description
    - lib major version
    - lib minor version
    - lib state ( release, alpha, beta, ... )
    - lib version comment ( repository will build a changelog with it )
    - lib plateform ( win32, unix-like, plateform-independent, ... )
    - lib md5 checksum ?
    - lib license type
    - lib dependence
    - lib install/uninstall script name and type in package ( sh script ? )
    - bug report information ( webform url ? email address ? )
    - a list of download mirrors, where mirror is :
        - mirror url
        - simple geographic information ( state id / country id / continent
id )
        - bandwidth hint.

Then, put this descriptor online, and submit its url to repository.


Repository part :

repository is just a database-centred application with some interface.

- input interface : parse descriptors and save informations in db
- output interface : answer queries from client by performing search in db.
Main functions are :
- providing some info on newly registered/released libs.
- search tools
- walk through project category tree
- access projects and libs informations

a php-mysql application with some mb of diskspace will fit very well these
needs.

Thin-client part :

can be either a web-interface, or a software client.
Main functions are :
- display news
- search libs
- display project/lib datasheet
- download & install libs*
- check if installed libs are up to date*
- uninstall previously downloaded lib.*

*: software clients only

installation means uncompress in a temporary directory and run the script
specified in lib informations ( install.sh ? ).


Here is an example of descriptor for the D project :

<lib-descriptor>
  <descriptor-version>1.0</descriptor-version>
  <coder>
   <name>Digital Mars</name>
   <email>d digitalmars.com</email>
   <homepage>http://www.digitalmars.com</homepage>
   <logo>http://www.digitalmars.com/logo.png</logo>
  </coder>
  <project>
    <name>D</name>
    <category>basis</category>
    <homepage>http://www.digitalmars.com/d/</hompage>
    <logo>http://www.digitalmars.com/d/logo.png</logo>
    <library>
      <name>D Language Specifications</name>
      <description>DigitalMars's D Language specifications ...
</description>
      <version major=1 minor=0 state=release >
        <comment>Some syntaxic changes where added to handle some tricky
casts</comment>
      </version>
      <plateform>independent</plateform>
      <license>GPL</license>
      <dependence>none</dependence>
      <script>
        <intall type=sh name="install.sh" />
        <uninstall type=sh name="install.sh -uninstall" />
      </script>
      <bug-report type=email sendto="dbugreport digitalmars.com" />
      <mirror>
        <url>http://www.digitalmars.com/d/specs.zip</url>
        <location state=CA country=US continent=NA />
        <bandwidth>low</bandwidth>
      </mirror>
      <mirror>
        <url>ftp://www.digitalmars.com/specs.zip</url>
        <location state=CA country=US continent=NA />
        <bandwidth>high</bandwidth>
      </mirror>
    </library>
    <library>
      <name>Dmd</name>
      ...
     </library>
   </project>
</descriptor>

please send your comments

ps: excuse my english...

-- Nicolas Repiquet
Jul 19 2003
parent "anderson" <anderson badmama.com.au> writes:
"DeadCow" <deadcow-remove-this free.fr> wrote in message
news:bfbmdu$2plc$1 digitaldaemon.com...
 Hi,

 Here are some ideas for a simple D's lib repository.

I like the idea, of this. babble- Parhaps an editor, could even look at a peace of source code and automaticly search for updates for the libs used. (I guess that the main idea) With the repository search engine built into the editor, a user could find the appropriate library, have the it installed and have the import's added to the selected code within a matter within a few clicks. The problem then is knowing how to use that library. Parhaps, a sample code, and a manual tag could be added to aid here. That way users don't need to go searching someones homepage for the basic information. Users could also, select someones import in the source, press F1 and it would take them to the manual or homepage.
Jul 19 2003