Page Menu
Home
Wildfire Games
Search
Configure Global Search
Log In
Paste
P265
Fix D4514.
Active
Public
Actions
Authored by
Freagarach
on Mar 2 2022, 6:25 PM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Flag For Later
Tags
None
Subscribers
None
#!/usr/bin/env python3
import
fileinput
import
glob
import
os
from
lxml
import
etree
as
ET
class
StyleFixer
:
def
fix_template_style
(
template_path
):
changes
=
[
[
"version='1.0'"
,
'version="1.0"'
],
[
"'UTF-8'"
,
'"utf-8"'
]
]
StyleFixer
.
sed
(
template_path
,
changes
)
def
sed
(
path
,
changes
):
for
line
in
fileinput
.
input
(
path
,
inplace
=
True
):
for
change
in
changes
:
line
=
line
.
replace
(
change
[
0
],
change
[
1
])
print
(
line
,
end
=
""
)
class
TemplateFixer
:
def
__init__
(
self
,
vfs_root
):
self
.
template_folder
=
os
.
path
.
join
(
vfs_root
,
'simulation'
,
'templates'
)
def
fix_template
(
self
,
template_path
):
tree
=
ET
.
parse
(
template_path
)
root
=
tree
.
getroot
()
changed
=
False
cmp_identity
=
root
.
find
(
'Identity'
)
if
cmp_identity
!=
None
:
if
self
.
fix_requirements
(
cmp_identity
):
changed
=
True
cmp_upgrade
=
root
.
find
(
'Upgrade'
)
if
cmp_upgrade
!=
None
:
for
upgrade
in
cmp_upgrade
.
iterfind
(
"./"
):
if
self
.
fix_requirements
(
upgrade
):
changed
=
True
if
not
changed
:
return
False
root
[:]
=
sorted
(
root
,
key
=
lambda
x
:
x
.
tag
)
ET
.
indent
(
tree
)
tree
.
write
(
template_path
,
xml_declaration
=
True
,
pretty_print
=
True
,
encoding
=
'utf-8'
)
return
True
def
fix_requirements
(
self
,
cmp
):
req_tech
=
cmp
.
find
(
'RequiredTechnology'
)
if
req_tech
==
None
:
return
False
ET
.
SubElement
(
ET
.
SubElement
(
cmp
,
'Requirements'
),
'Techs'
)
.
text
=
req_tech
.
text
cmp
.
remove
(
req_tech
)
return
True
def
run
(
self
):
for
template
in
glob
.
iglob
(
self
.
template_folder
+
'/**/*.xml'
,
recursive
=
True
):
if
self
.
fix_template
(
template
):
StyleFixer
.
fix_template_style
(
template
)
if
__name__
==
'__main__'
:
script_dir
=
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
))
template_fixer
=
TemplateFixer
(
script_dir
)
template_fixer
.
run
()
Event Timeline
Freagarach
created this paste.
Mar 2 2022, 6:25 PM
Freagarach
changed the title of this paste from
Command-Line Input
to
Fix D4514.
.
Mar 2 2022, 6:25 PM
Freagarach
updated the paste's language from
autodetect
to
python
.
Freagarach
edited the content of this paste.
(Show Details)
Mar 3 2022, 8:25 AM
Freagarach
mentioned this in
D4514: Add Requirements helper.
.
Freagarach
edited the content of this paste.
(Show Details)
Apr 3 2022, 8:29 PM
Freagarach
changed the visibility from "All Users" to "Public (No Login Required)".
Freagarach
edited the content of this paste.
(Show Details)
Apr 4 2022, 8:31 AM
Log In to Comment