mirror of
https://github.com/intrepidcs/libicsneo.git
synced 2026-08-05 17:38:35 +02:00
Optional: Move optional-lite to the include/third-party directory
This fixes the use case of adding the include folder manually to an outside project.
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright 2017-2018 by Martin Moene
|
||||
#
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
#
|
||||
# script/update-version.py
|
||||
#
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
# Configuration:
|
||||
|
||||
table = (
|
||||
# path, substitute find, substitute format
|
||||
( 'CMakeLists.txt'
|
||||
, r'\W{2,4}VERSION\W+([0-9]+\.[0-9]+\.[0-9]+)\W*$'
|
||||
, ' VERSION {major}.{minor}.{patch}' )
|
||||
|
||||
, ( 'CMakeLists.txt'
|
||||
, r'set\W+optional_lite_version\W+"([0-9]+\.[0-9]+\.[0-9]+)"\W+$'
|
||||
, 'set( optional_lite_version "{major}.{minor}.{patch}" )\n' )
|
||||
|
||||
# , ( 'example/cmake-pkg/CMakeLists.txt'
|
||||
# , r'set\W+optional_lite_version\W+"([0-9]+\.[0-9]+(\.[0-9]+)?)"\W+$'
|
||||
# , 'set( optional_lite_version "{major}.{minor}" )\n' )
|
||||
#
|
||||
# , ( 'script/install-xxx-pkg.py'
|
||||
# , r'\optional_lite_version\s+=\s+"([0-9]+\.[0-9]+\.[0-9]+)"\s*$'
|
||||
# , 'optional_lite_version = "{major}.{minor}.{patch}"\n' )
|
||||
|
||||
, ( 'conanfile.py'
|
||||
, r'version\s+=\s+"([0-9]+\.[0-9]+\.[0-9]+)"\s*$'
|
||||
, 'version = "{major}.{minor}.{patch}"' )
|
||||
|
||||
, ( 'include/nonstd/optional.hpp'
|
||||
, r'\#define\s+optional_lite_MAJOR\s+[0-9]+\s*$'
|
||||
, '#define optional_lite_MAJOR {major}' )
|
||||
|
||||
, ( 'include/nonstd/optional.hpp'
|
||||
, r'\#define\s+optional_lite_MINOR\s+[0-9]+\s*$'
|
||||
, '#define optional_lite_MINOR {minor}' )
|
||||
|
||||
, ( 'include/nonstd/optional.hpp'
|
||||
, r'\#define\s+optional_lite_PATCH\s+[0-9]+\s*$'
|
||||
, '#define optional_lite_PATCH {patch}\n' )
|
||||
)
|
||||
|
||||
# End configuration.
|
||||
|
||||
def readFile( in_path ):
|
||||
"""Return content of file at given path"""
|
||||
with open( in_path, 'r' ) as in_file:
|
||||
contents = in_file.read()
|
||||
return contents
|
||||
|
||||
def writeFile( out_path, contents ):
|
||||
"""Write contents to file at given path"""
|
||||
with open( out_path, 'w' ) as out_file:
|
||||
out_file.write( contents )
|
||||
|
||||
def replaceFile( output_path, input_path ):
|
||||
# prevent race-condition (Python 3.3):
|
||||
if sys.version_info >= (3, 3):
|
||||
os.replace( output_path, input_path )
|
||||
else:
|
||||
os.remove( input_path )
|
||||
os.rename( output_path, input_path )
|
||||
|
||||
def editFileToVersion( version, info, verbose ):
|
||||
"""Update version given file path, version regexp and new version format in info"""
|
||||
major, minor, patch = version.split('.')
|
||||
in_path, ver_re, ver_fmt = info
|
||||
out_path = in_path + '.tmp'
|
||||
new_text = ver_fmt.format( major=major, minor=minor, patch=patch )
|
||||
|
||||
if verbose:
|
||||
print( "- {path} => '{text}':".format( path=in_path, text=new_text.strip('\n') ) )
|
||||
|
||||
writeFile(
|
||||
out_path,
|
||||
re.sub(
|
||||
ver_re, new_text, readFile( in_path )
|
||||
, count=0, flags=re.MULTILINE
|
||||
)
|
||||
)
|
||||
replaceFile( out_path, in_path )
|
||||
|
||||
def editFilesToVersion( version, table, verbose ):
|
||||
if verbose:
|
||||
print( "Editing files to version {v}:".format(v=version) )
|
||||
for item in table:
|
||||
editFileToVersion( version, item, verbose )
|
||||
|
||||
def editFilesToVersionFromCommandLine():
|
||||
"""Update version number given on command line in paths from configuration table."""
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Update version number in files.',
|
||||
epilog="""""",
|
||||
formatter_class=argparse.RawTextHelpFormatter)
|
||||
|
||||
parser.add_argument(
|
||||
'version',
|
||||
metavar='version',
|
||||
type=str,
|
||||
nargs=1,
|
||||
help='new version number, like 1.2.3')
|
||||
|
||||
parser.add_argument(
|
||||
'-v', '--verbose',
|
||||
action='store_true',
|
||||
help='report the name of the file being processed')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
editFilesToVersion( args.version[0], table, args.verbose )
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
editFilesToVersionFromCommandLine()
|
||||
|
||||
# end of file
|
||||
Reference in New Issue
Block a user