Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
97a1552c
Commit
97a1552c
authored
Oct 12, 2007
by
wernerm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated the cli compiler to account for the other cli components that were introduced recently.
parent
057266c0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
141 additions
and
77 deletions
+141
-77
cli_compiler.php
lib/cli_compiler.php
+141
-77
No files found.
lib/cli_compiler.php
View file @
97a1552c
#!/usr/bin/php
#!/usr/bin/env php
<?php
chdir(dirname(__FILE__));
?>
Welcome to the interactive Doctrine Compiler 0.0.1 (Beta).
WARNING: You're on your own - this script modifies your
...
...
@@ -26,21 +28,6 @@ While the program is running:
exit
;
}
if
(
$argc
>
1
)
{
$doctrinePath
=
$argv
[
1
];
}
$drivers
=
array
(
'Db2'
,
'Firebird'
,
'Informix'
,
'Mssql'
,
'Mysql'
,
'Oracle'
,
'Pgsql'
,
'Sqlite'
);
function
addIncludePath
(
$path
)
{
set_include_path
(
$path
.
PATH_SEPARATOR
.
get_include_path
()
...
...
@@ -110,20 +97,30 @@ function ask(
}
}
// Enable error reporting
if
((
$answer
=
ask
(
"Would you like to turn on error reporting?"
,
'n'
))
==
'y'
)
{
error_reporting
(
E_ALL
);
$showErrors
=
true
;
}
else
{
error_reporting
(
0
);
$showErrors
=
false
;
}
autoQuit
(
$answer
);
// Process library path command line argument
if
(
$argc
>
1
)
{
$doctrinePath
=
$argv
[
1
];
}
else
{
$doctrinePath
=
dirname
(
__FILE__
);
}
// Get Doctrine's library path
$usablePath
=
false
;
while
(
!
$usablePath
)
{
if
(
!
isset
(
$doctrinePath
))
{
$doctrinePath
=
dirname
(
__FILE__
);
}
$path
=
ask
(
"Please enter the path to Doctrine's lib directory:"
,
$doctrinePath
,
array
(
$doctrinePath
),
false
);
autoQuit
(
$path
);
try
{
...
...
@@ -139,10 +136,58 @@ while (!$usablePath) {
}
}
// Process target filename command line argument
if
(
$argc
>
2
)
{
$targetFile
=
$argv
[
2
];
}
else
{
$targetFile
=
$path
.
DIRECTORY_SEPARATOR
.
'Doctrine.compiled.php'
;
}
clearstatcache
();
$usableFilename
=
false
;
while
(
!
$usableFilename
)
{
$target
=
ask
(
"Please enter the target filename for the 'compiled' Doctrine file that will be created:"
,
$targetFile
,
array
(
$targetFile
),
false
);
autoQuit
(
$target
);
if
(
file_exists
(
$target
))
{
if
(
is_writable
(
$target
)
&&
(
!
is_dir
(
$target
)))
{
$usableFilename
=
true
;
}
else
{
$msg
=
"The target filename '
$target
' cannot be used (it is not writable, or it is a directory)."
;
}
}
else
{
if
(
is_writable
(
dirname
(
$target
)))
{
$usableFilename
=
true
;
}
else
{
$msg
=
"The directory in which the target file will be created is not writable."
;
}
}
if
(
!
$usableFilename
)
{
showMessage
(
$msg
);
if
((
$answer
=
ask
(
"Would you like to specify a different target filename?"
))
!=
'y'
)
{
quit
();
}
}
}
// Define the default drivers - unfortunately, this is hard-coded for now
$drivers
=
array
(
'Db2'
,
'Firebird'
,
'Informix'
,
'Mssql'
,
'Mysql'
,
'Oracle'
,
'Pgsql'
,
'Sqlite'
);
$includeDrivers
=
array
();
$excludeDrivers
=
array
();
// Determine driver support
foreach
(
$drivers
as
$driver
)
{
if
((
$answer
=
ask
(
"Would you like to enable support for
$driver
?"
))
==
'y'
)
{
$includeDrivers
[]
=
$driver
;
...
...
@@ -153,19 +198,22 @@ foreach ($drivers as $driver) {
}
// Verify driver support
if
(
!
count
(
$includeDrivers
))
{
showMessage
(
"You have not selected any drivers.
Norm
ally this is not a good idea, unless you know what you're doing."
);
showMessage
(
"You have not selected any drivers.
Usu
ally this is not a good idea, unless you know what you're doing."
);
if
((
$answer
=
ask
(
"Are you sure you want to compile without any drivers?"
))
!=
'y'
)
{
quit
();
}
autoQuit
(
$answer
);
}
// 'Compile' Doctrine...
showMessage
(
"Trying to set the PHP memory limit to 18MB..."
);
ini_set
(
'memory_limit'
,
'18M'
);
if
(
ini_get
(
'memory_limit'
)
!=
'18M'
)
{
showMessage
(
"WARNING: The program could not set the PHP memory limit to 18MB. The compilation might fail."
);
// Try to prevent errors related to memory allocation
$requiredMemory
=
'20M'
;
showMessage
(
"Trying to set the PHP memory limit to
$requiredMemory
..."
);
ini_set
(
'memory_limit'
,
$requiredMemory
);
if
(
ini_get
(
'memory_limit'
)
!=
$requiredMemory
)
{
showMessage
(
"WARNING: The program could not set the PHP memory limit to
$requiredMemory
. The compilation might fail."
);
if
((
$answer
=
ask
(
"Do you still want to continue?"
))
!=
'y'
)
{
quit
;
}
...
...
@@ -173,80 +221,96 @@ if (ini_get('memory_limit') != '18M') {
showMessage
(
"PHP memory limit adjusted successfully."
);
}
// Build / 'Compile' Doctrine...
$target
=
'./Doctrine.compiled.php'
;
$it
=
new
RecursiveIteratorIterator
(
new
RecursiveDirectoryIterator
(
$path
),
RecursiveIteratorIterator
::
LEAVES_ONLY
);
try
{
foreach
(
$it
as
$file
)
{
$e
=
explode
(
'.'
,
$file
->
getFileName
());
$it
=
new
RecursiveIteratorIterator
(
new
RecursiveDirectoryIterator
(
$path
),
RecursiveIteratorIterator
::
LEAVES_ONLY
);
// we don't want to require versioning files
if
(
end
(
$e
)
===
'php'
&&
strpos
(
$file
->
getFileName
(),
'.inc'
)
===
false
)
{
require_once
$file
->
getPathName
();
foreach
(
$it
as
$file
)
{
$e
=
explode
(
'.'
,
$file
->
getFileName
());
// We don't want to require versioning files, or cli files
if
(
end
(
$e
)
===
'php'
&&
strpos
(
$file
->
getFileName
(),
'.inc'
)
===
false
&&
strpos
(
$file
->
getFileName
(),
'cli'
)
!==
0
)
{
require_once
$file
->
getPathName
();
}
}
}
$classes
=
array_merge
(
get_declared_classes
(),
get_declared_interfaces
());
$classes
=
array_merge
(
get_declared_classes
(),
get_declared_interfaces
());
$ret
=
array
();
$ret
=
array
();
foreach
(
$classes
as
$class
)
{
$e
=
explode
(
'_'
,
$class
);
foreach
(
$classes
as
$class
)
{
$e
=
explode
(
'_'
,
$class
);
if
(
$e
[
0
]
!==
'Doctrine'
)
{
continue
;
}
if
(
$e
[
0
]
!==
'Doctrine'
)
{
continue
;
}
// Skip excluded drivers
// Skip excluded drivers
$skipClass
=
false
;
foreach
(
$excludeDrivers
as
$excludeDriver
)
{
if
(
in_array
(
$excludeDriver
,
$e
))
{
$skipClass
=
true
;
break
;
$skipClass
=
false
;
foreach
(
$excludeDrivers
as
$excludeDriver
)
{
if
(
in_array
(
$excludeDriver
,
$e
))
{
$skipClass
=
true
;
break
;
}
}
if
(
$skipClass
)
{
echo
"
\n
Excluding ->
$class
"
;
continue
;
}
}
if
(
$skipClass
)
{
echo
"
\n
Excluding ->
$class
"
;
continue
;
}
$refl
=
new
ReflectionClass
(
$class
);
$file
=
$refl
->
getFileName
();
$refl
=
new
ReflectionClass
(
$class
);
$file
=
$refl
->
getFileName
();
echo
"
\n
Including ->
$file
"
;
echo
"
\n
Including ->
$file
"
;
$lines
=
file
(
$file
);
$lines
=
file
(
$file
);
$start
=
$refl
->
getStartLine
()
-
1
;
$end
=
$refl
->
getEndLine
();
$start
=
$refl
->
getStartLine
()
-
1
;
$end
=
$refl
->
getEndLine
();
$ret
=
array_merge
(
$ret
,
array_slice
(
$lines
,
$start
,
(
$end
-
$start
)));
}
$ret
=
array_merge
(
$ret
,
array_slice
(
$lines
,
$start
,
(
$end
-
$start
)));
}
if
(
$target
==
null
)
{
$target
=
$path
.
DIRECTORY_SEPARATOR
.
'Doctrine.compiled.php'
;
}
// first write the 'compiled' data to a text file, so
// that we can use php_strip_whitespace (which only works on files)
// first write the 'compiled' data to a text file, so
// that we can use php_strip_whitespace (which only works on files)
$fp
=
@
fopen
(
$target
,
'w'
);
$fp
=
@
fopen
(
$target
,
'w'
);
if
(
$fp
===
false
)
{
throw
new
Exception
(
"Couldn't write compiled data. Failed to open
$target
"
);
}
fwrite
(
$fp
,
"<?php "
.
implode
(
''
,
$ret
));
fclose
(
$fp
);
if
(
$fp
===
false
)
{
throw
new
Exception
(
"Couldn't write compiled data. Failed to open
$target
"
);
}
fwrite
(
$fp
,
"<?php "
.
implode
(
''
,
$ret
));
fclose
(
$fp
);
$stripped
=
php_strip_whitespace
(
$target
);
$fp
=
@
fopen
(
$target
,
'w'
);
if
(
$fp
===
false
)
{
throw
new
Exception
(
"Couldn't write compiled data. Failed to open
$file
"
);
}
fwrite
(
$fp
,
$stripped
);
fclose
(
$fp
);
}
catch
(
Exception
$e
)
{
if
(
!
$showErrors
)
{
if
((
$answer
=
ask
(
"Sorry, an error occurred during the build. Would you like to see the error?"
))
==
'y'
)
{
showMessage
(
"
\n
$e
"
);
}
else
{
quit
();
}
}
showMessage
(
"
\n
Build Aborted."
);
exit
;
$stripped
=
php_strip_whitespace
(
$target
);
$fp
=
@
fopen
(
$target
,
'w'
);
if
(
$fp
===
false
)
{
throw
new
Exception
(
"Couldn't write compiled data. Failed to open
$file
"
);
}
fwrite
(
$fp
,
$stripped
);
fclose
(
$fp
);
// Say bye...
showMessage
(
"
\n
Compilation Finished."
);
showMessage
(
"Thank you for using the interactive Doctrine Compiler. Have fun following the Doctrine :)
\n
"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment