This repository has been archived by the owner on Nov 27, 2023. It is now read-only.
/
release-tool.php
executable file
·107 lines (94 loc) · 3.6 KB
/
release-tool.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/env php
<?php
/**
* LICENSE: 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.
*
* PHP version 5
*
* @category Microsoft
*
* @author Azure PHP SDK <azurephpsdk@microsoft.com>
* @copyright Microsoft Corporation
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
*
* @link https://github.com/windowsazure/azure-sdk-for-php
*/
/**
* Update the version number of PHP files, and generate class list.
*
* 1. change the NEW_VER const to the correct new version string
* 2. run php .\bin\release-tool.php in the root directory
*/
const VER_TOKEN = ' * @version';
const NEW_VER = ' Release: 0.4.4_2016-08';
$startDir = __DIR__.'/../'; //this will update SDK sources, test sources and examples.
$updateVersion = true;
$listClass = false;
$files_changed = 0;
$output = '';
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($startDir)) as $filename => $cur) {
if (is_dir($filename) || strpos($filename, 'release-tool.php') !== false) {
continue;
}
if ($updateVersion) {
$tempfile = $filename.'.tmp';
$rhandle = fopen($filename, 'r');
$whandle = fopen($tempfile, 'w');
$replaced = false;
while (($buffer = fgets($rhandle, 4096)) !== false) {
if (strpos($buffer, VER_TOKEN) !== false) {
$buffer = VER_TOKEN.NEW_VER."\n";
$replaced = true;
}
fputs($whandle, $buffer);
}
fclose($rhandle);
fclose($whandle);
if ($replaced) {
rename($tempfile, $filename);
++$files_changed;
} else {
unlink($tempfile);
}
}
if ($listClass) {
$path_parts = pathinfo($filename);
if (array_key_exists('extension', $path_parts) && $path_parts['extension'] == 'php') {
//remove leading . or ..
if (strpos($filename, '.') !== false && strpos($filename, '.') == 0) {
$filename = substr($filename, 1);
}
if (strpos($filename, '..') !== false && strpos($filename, '..') == 0) {
$filename = substr($filename, 2);
}
$filename = str_replace('/', '\\', $filename);
// remove leading \
if (strpos($filename, '\\') !== false && strpos($filename, '\\') == 0) {
$filename = substr($filename, 1);
}
$path_parts = pathinfo($filename);
$classname = $path_parts['dirname'].'\\'.$path_parts['filename'];
$classname = strtolower(str_replace('\\', '\\\\', $classname));
// remove the top directory from file name
if (strpos($filename, '\\') !== false) {
$filename = substr($filename, strpos($filename, '\\'));
}
$filename = str_replace('\\', '/', $filename);
//'src\\table\\tablerestproxy' => '/Table/TableRestProxy.php'
$output = $output." '$classname' => '$filename',\n";
}
}
}
if ($listClass) {
file_put_contents('output.txt', $output);
}
echo sprintf("\nNumber of files updated: %d.\n", $files_changed);