AI
Animation
CGI
Compression
Console
Database
Debug
Dialects
Dialogs
Editor
Email
Encryption
Extension
External Library
File
File Handling
Files
Financial
FTP
Game
Games
Graphics
GUI
HTML
HTTP
Internet
LDC
Markup
Math
Module
Network
Networking
None
Other - Net
Parse
Patch
Printing
Protocol
Rebol
Scheme
Scientific
SDK
Security
Shell
Sound
SQL
TCP
Testing
Text
Text Processing
UI
User Interface
Util
Utility
VID
Visualization
Web
Win API
X-File
XML
REBOL [
	Title: "SVN Version"
	Date: 4-Oct-2010
	Version: 1.0.0
	File: %svn-version.r
	Author: "Nenad Rakocevic"
	Usage: {
		>> svn-version? %/c/dev/cheyenne-server/
		== 92
	}
    Purpose: {
    	Retrieve the global revision number from a local SVN repository.
    	This mimics the feature offered by the svnversion command-line tool
    	See: http://svnbook.red-bean.com/en/1.1/re57.html
    	
    	This can be used in PREBOL (or other scripts preprocessors) to insert the
    	SVN global revision number as a build version.
    }
    Email: nr@softinnov.com
    Library: [
		level: 'intermediate
		platform: 'all
		type: [tool tutorial]
		domain: [file-handling parse]
		tested-under: "Core 2.7.6 Windows 7"
		support: none
		license: none
		see-also: none
    ]
]

context [
	revision: svn-dir: none
	digit: charset "0123456789"
	
	dir?: func [file [file!]][slash = last file]
	
	process: func [file /local value][
		parse/all read file [
			any [
				"!svn/ver/" copy value some digit (				
					if revision < value: to integer! value [revision: value]
				) | skip
			]
		]
	]
	
	dive: func [path /local file][
		if exists? file: path/:svn-dir/all-wcprops [process file]
		foreach file read path/. [
			if all [
				dir? file
				file <> svn-dir/all-wcprops
			][
				dive path/:file
			]
		]
	]

	set 'svn-version? func [
		"Return the global SVN revision number from a local SVN repository"
		path [file!]	"SVN repository folder"
		/alt-dir		"Search in _svn/ instead of .svn/ folders"
	][
		revision: 0
		svn-dir: pick [%_svn/ %.svn/] to-logic alt-dir
		if not dir? path [append path slash]
		dive path
		revision
	]
]

            
            
        
Copyright © 2018 Rebol Software Foundation