commsfwutils/commsbufs/mbufgobblerlayer/how to clone this component.txt
changeset 78 dd4909eb54cd
equal deleted inserted replaced
77:c9776eadbffd 78:dd4909eb54cd
       
     1 
       
     2 #####################################
       
     3 #                                   #
       
     4 # Update Content And Filenames tool #
       
     5 #                                   #
       
     6 #####################################
       
     7 
       
     8 The Update Content And Filenames tool allows you to clone this component to a new implementation.
       
     9 It does the boring housekeeping to rename the source, change target DLL name,
       
    10 update the UIDs etc. etc.
       
    11 It does this by performing recursive search and replace on file names and content.
       
    12 
       
    13 
       
    14 How to clone this component to a new implementation:
       
    15 
       
    16 -	Ensure this component builds as is:
       
    17         cd group
       
    18         sbs -c winscw_udeb
       
    19         sbs -c winscw_udeb.test
       
    20 	If you're feeling conscientious you could test it too :-)
       
    21 
       
    22 -	Nominate an appropriate name for the new component.
       
    23 		e.g. Test123
       
    24 	If there's any chance the new component will end up
       
    25 	in a deliverable, please choose the name more carefully
       
    26 	than I just did
       
    27 
       
    28 -	Copy this folder (the one containing this README file),
       
    29 	naming the new folder as something appropriate,
       
    30 	relating to the component name you have chosen
       
    31 	(and keep it lower case to keep linux builds happy)
       
    32 		e.g. "Copy Of mbufgobblerlayer" => "test123layer"
       
    33 
       
    34 -	Ensure the new folder and all its contents are writable.
       
    35 	(if you got mbufgobblerlayer from a version control system it might be read-only)
       
    36 	
       
    37 Then, in the *new* folder:
       
    38 
       
    39 -	Modify the file UpdateContentsAndFilenames.ini accordingly,
       
    40 	to reflect the values required by your new component.
       
    41 	Obviously you'll need to obtain new UIds rather than just making them up :-)
       
    42 	 (Ask your architect where new UIds should come from these days)
       
    43 	The "Search" fields specify the current values which will be replaced.
       
    44 	The "Replace" fields must be changed from CHANGEME to the desired values.
       
    45 		e.g. [Name].Replace=CHANGEME => [Name].Replace=Test123
       
    46 		e.g. [DllUid].Replace=CHANGEME => [DllUid].Replace=01234567
       
    47 		etc..
       
    48 
       
    49 -	Ensure Python 2.6.2 or greater is installed. This should come down automatically
       
    50   with SymSEE or whatever you used to put together your development environment.
       
    51 	
       
    52 -	Open a command window in the *new* folder, and run:
       
    53 		updatecontentandfilenames.py
       
    54 
       
    55 -	Before you make further modifications, ensure the script updated
       
    56 	everything correctly:
       
    57         cd group
       
    58         sbs -c winscw_udeb
       
    59         sbs -c winscw_udeb.test
       
    60 	(and run any regression tests over the new copy of the component)
       
    61 
       
    62 
       
    63 
       
    64 Notes and caveats:
       
    65 
       
    66 1.
       
    67 Remember you're taking a copy, so if you're cloning something feature-rich,
       
    68 please think carefully about whether either..
       
    69 	- you really do want 2 copies of the same feature code knocking about, which is
       
    70 	  totally ok if you're just trying something out and/or you want to isolate the new
       
    71 	  component from changes in the cloned component
       
    72 .. or ..
       
    73 	- you should be considering cloning a more basic implementation,
       
    74 	  then applying techniques such as inheritance to reuse the existing features
       
    75 
       
    76 
       
    77 So it's more suited for cloning basic ("feature-impoverished?") implementations as a
       
    78 starting point for developing more functional implementations.
       
    79 
       
    80 e.g. mbufgobbler Layer	-> some new layer
       
    81 
       
    82 
       
    83 2.
       
    84 Correct functioning of the script of course assumes some reasonably pragmatic
       
    85 correlation between class names, folder names, dll names etc.
       
    86 
       
    87 It's easy for you to add extra search and replace pairs as needed to address
       
    88 more complicated renaming tasks. Just add more sections to the
       
    89 UpdateContentsAndFilenames.ini file. The [Header Names] are not used for anything, they're
       
    90 just for your reference and should probably be unique across the file.
       
    91 The really important bit is the Search/Replace pairs.
       
    92 
       
    93 
       
    94 3.
       
    95 Each search/replace pair is applied in turn. So don't expect to be able to do anything
       
    96 sneaky like swapping strings in a single run.
       
    97 
       
    98 
       
    99 4.
       
   100 Reusing this script elsewhere should be easy,
       
   101 because there is no special significance to the .ini file section names-
       
   102 they are just there to assist the user in populating the fields.
       
   103 i.e. .ini file sections purely exist to group together each Search/Replace pair.
       
   104 
       
   105 Just copy the updatecontentandfilenames.* files into the root folder of a new
       
   106 copy of the component that you want to clone, edit the ini file, and run the python script.
       
   107 
       
   108 
       
   109 5.
       
   110 Have fun..
       
   111 
       
   112