source: EcnlProtoTool/trunk/asp3_dcre/utils/applyrename.rb

Last change on this file was 439, checked in by coas-nagasima, 4 years ago

mrubyを2.1.1に更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby;charset=UTF-8
File size: 4.2 KB
Line 
1#!/usr/bin/env ruby
2# -*- coding: utf-8 -*-
3#
4# TOPPERS Software
5# Toyohashi Open Platform for Embedded Real-Time Systems
6#
7# Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
8# Toyohashi Univ. of Technology, JAPAN
9# Copyright (C) 2004-2017 by Embedded and Real-Time Systems Laboratory
10# Graduate School of Information Science, Nagoya Univ., JAPAN
11#
12# 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
13# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
14# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
15# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17# スコード中に含まれていること.
18# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21# の無保証規定を掲載すること.
22# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24# と.
25# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26# 作権表示,この利用条件および下記の無保証規定を掲載すること.
27# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28# 報告すること.
29# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
32# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
33# 免責すること.
34#
35# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
36# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
37# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
38# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
39# の責任を負わない.
40#
41# $Id$
42#
43
44Encoding.default_external = 'utf-8'
45require "fileutils"
46
47#
48# ファイルにリネームを適用する
49#
50def applyRename(inFileName, syms)
51 symsRegexp = syms.join("|")
52 outFileName = inFileName + ".new"
53
54 begin
55 inFile = File.open(inFileName)
56 outFile = File.open(outFileName, "w")
57 rescue Errno::ENOENT, Errno::EACCES => ex
58 abort(ex.message)
59 end
60
61 inFile.each do |line|
62 line.gsub!(/\b(_?)(#{symsRegexp})\b/, "\\1_kernel_\\2")
63 outFile.print line
64 end
65
66 inFile.close
67 outFile.close
68
69 if FileUtils.cmp(inFileName, outFileName)
70 # ファイルの内容が変化しなかった場合
71 FileUtils.remove(outFileName)
72 else
73 # ファイルの内容が変化した場合
74 FileUtils.move(inFileName, inFileName + ".bak")
75 FileUtils.move(outFileName, inFileName)
76 puts("Modified: #{inFileName}")
77 end
78end
79
80#
81# エラーチェック
82#
83if ARGV.length < 1
84 abort("Usage: ruby appyrename.rb <prefix> <filelists>")
85end
86
87#
88# 初期化
89#
90syms = []
91name = ARGV.shift
92
93#
94# シンボルリストを読み込む
95#
96defFileName = name + "_rename.def"
97
98begin
99 defFile = File.open(defFileName)
100rescue Errno::ENOENT, Errno::EACCES => ex
101 abort(ex.message)
102end
103
104defFile.each do |line|
105 line.chomp!
106 if /^#\s*(.*)$/ =~ line
107 # do nothing
108 elsif /^INCLUDE\s+(.*)$/ =~ line
109 # do nothing
110 elsif line != ""
111 syms.push(line)
112 end
113end
114
115#
116# ファイルにリネームを適用する
117#
118ARGV.each do |inFileName|
119 if inFileName != defFileName && File.readable?(inFileName)
120 applyRename(inFileName, syms)
121 end
122end
Note: See TracBrowser for help on using the repository browser.