Skip to content

Instantly share code, notes, and snippets.

@zgramana
Created February 13, 2014 02:10
Show Gist options
  • Save zgramana/8968489 to your computer and use it in GitHub Desktop.
Save zgramana/8968489 to your computer and use it in GitHub Desktop.
Shell script that replaces an optional old header with a new header, which includes the name of the file containing the header.
#!/bin/bash
# Replace the old headers with the new ones.
# Find all csharp files, recursively.
# If it has an old header, remove it.
# Then insert the new header which includes
# the current file's name.
for file in $(find . -type f -name '*.cs'); do
fileName=${file##*/} # Split on the path char, and take the last segment.
headerStart='1i \
//\
// '
headerBody='\
//\
// Author:\
// Zachary Gramana <[email protected]>\
//\
// Copyright (c) 2013, 2014 Xamarin Inc (http://www.xamarin.com)\
//\
// Permission is hereby granted, free of charge, to any person obtaining\
// a copy of this software and associated documentation files (the\
// "Software"), to deal in the Software without restriction, including\
// without limitation the rights to use, copy, modify, merge, publish,\
// distribute, sublicense, and/or sell copies of the Software, and to\
// permit persons to whom the Software is furnished to do so, subject to\
// the following conditions:\
// \
// The above copyright notice and this permission notice shall be\
// included in all copies or substantial portions of the Software.\
// \
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\
//\
/**\
* Original iOS version by Jens Alfke\
* Ported to Android by Marty Schoch, Traun Leyden\
*\
* Copyright (c) 2012, 2013, 2014 Couchbase, Inc. All rights reserved.\
*\
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file\
* except in compliance with the License. You may obtain a copy of the License at\
*\
* http://www.apache.org/licenses/LICENSE-2.0\
*\
* Unless required by applicable law or agreed to in writing, software distributed under the\
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\
* either express or implied. See the License for the specific language governing permissions\
* and limitations under the License.\
*/\
'
# Concat the sed preamble, the file name, and rest of the new header.
header=$headerStart"$fileName"$headerBody
# Detect the old header, then remove it.
if grep 'C\#\ Port\ by\ Zack\ Gramana' "$file"; then
# Remove the old header
echo "Removed old header: $file"
sed -i .bak -e '1,20d' "$file"
fi
# Insert the new header inplace, with the old version backed up.
find "$file" -exec sed -i .bak "$header" {} \;
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment