Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F87022206
file_transformer.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Oct 10, 01:27
Size
4 KB
Mime Type
text/x-python
Expires
Sat, Oct 12, 01:27 (1 d, 22 h)
Engine
blob
Format
Raw Data
Handle
21524049
Attached To
R11434 py-licenser
file_transformer.py
View Options
# -*- coding: utf-8 -*-
""" file_transformer.py: Coordination of the different transformations"""
__author__
=
"Guillaume Anciaux and Nicolas Richart"
__credits__
=
[
"Guillaume Anciaux <guillaume.anciaux@epfl.ch>"
,
"Nicolas Richart <nicolas.richart@epfl.ch>"
,
]
__copyright__
=
"Copyright (©) 2010-2021 EPFL (Ecole Polytechnique Fédérale"
\
" de Lausanne) Laboratory (LSMS - Laboratoire de Simulation"
\
" en Mécanique des Solides)"
__license__
=
"GPLv3"
__version__
=
"2.0"
from
datetime
import
datetime
as
dt
from
.
import
licenser_ask_question
from
.
import
author_db
as
adb
from
.
import
copyright_db
as
cdb
from
.
import
export
from
.
import
file_info
as
fi
from
.
import
print_colored
from
.
import
version_info
as
vc
import
os
from
pygments
import
highlight
from
pygments.lexers.diff
import
DiffLexer
from
pygments.formatters.terminal256
import
Terminal256Formatter
from
pygments.formatters.terminal
import
TerminalFormatter
@export
class
FileTransformer
(
object
):
"""
Class that reformat the headers
"""
__ignore
=
False
_new_header
=
None
def
__init__
(
self
,
filename
,
db
,
release_date
=
dt
.
now
()
.
date
(),
force
=
False
,
repo
=
None
,
**
kwargs
):
self
.
__filename
=
filename
self
.
__release_date
=
release_date
self
.
__db
=
db
self
.
__repo
=
repo
if
"vc_backend"
in
kwargs
and
kwargs
[
"vc_backend"
]
is
not
None
:
vc_back
=
kwargs
[
"vc_backend"
]
else
:
vc_back
=
db
.
versioning_backend
if
vc_back
!=
"none"
:
self
.
_date_style
=
self
.
__db
.
get_config
(
'date_style'
)
if
not
self
.
__repo
:
self
.
__repo
=
self
.
__db
.
get_config
(
'repo'
)
if
not
self
.
__repo
:
raise
RuntimeError
(
"You should specify a repo either in the config or on the arguments"
)
self
.
_vc_info
=
vc
.
VersionInfo
(
self
.
__repo
,
self
.
__filename
,
backend
=
vc_back
,
rev_to
=
release_date
)
self
.
__name
=
self
.
_vc_info
.
name
self
.
__filename
=
self
.
__repo
+
'/'
+
self
.
__name
self
.
_creation_date
=
self
.
_vc_info
.
creation_date
else
:
self
.
_creation_date
=
None
self
.
_date_style
=
None
self
.
_vc_info
=
None
try
:
self
.
_file
=
fi
.
FileInfo
(
self
.
__filename
)
except
NotImplementedError
:
print
(
"File {0} ignored due to {1}"
.
format
(
self
.
_vc_info
.
name
,
print_colored
(
'unknown type'
,
'red'
,
attrs
=
[
'bold'
])))
self
.
__ignore
=
True
return
rev_from
=
None
license_id
=
None
self
.
__oldest_name
=
""
if
vc_back
!=
"none"
:
self
.
__oldest_name
=
self
.
_vc_info
.
oldest_name
file_maj
=
self
.
__db
.
find_file
(
self
.
__oldest_name
)
if
file_maj
is
not
None
:
rev_from
,
license_id
=
file_maj
if
not
force
and
rev_from
.
date
()
>=
release_date
:
print
((
"File {0} ignored due to recent "
+
"modifications ({1})"
)
.
format
(
self
.
_vc_info
.
name
,
print_colored
(
rev_from
.
strftime
(
"%Y-%m-
%d
"
),
'red'
,
attrs
=
[
'bold'
])))
self
.
__ignore
=
True
return
if
"force_license"
in
kwargs
and
kwargs
[
'force_license'
]
is
not
None
:
license_id
=
kwargs
[
"force_license"
]
# Getting the license content
self
.
__copyright_base
=
cdb
.
CopyrightDB
(
db
)
if
not
license_id
:
license_id
=
self
.
__db
.
get_config
(
'default_copyright_id'
)
self
.
_lic
=
self
.
__copyright_base
.
find_by_id
(
license_id
)
if
self
.
_lic
is
None
:
raise
ValueError
(
"The license with the id {0} is not defined"
.
format
(
license_id
))
# Generates the new header file
start_year
=
self
.
_creation_date
.
year
end_year
=
self
.
__release_date
.
year
lic_text
=
None
if
self
.
_lic
.
text
:
lic_text
=
self
.
_lic
.
text
.
format
(
date
=
f
"{start_year}"
if
start_year
==
end_year
else
f
"{start_year}-{end_year}"
)
_header_params
=
{
'copyright_txt'
:
lic_text
,
'creation_date'
:
self
.
_creation_date
,
}
self
.
_new_header
=
self
.
_file
.
generate_header
(
license_header
=
self
.
_lic
.
header
,
need_header
=
self
.
_lic
.
need_header
,
license
=
self
.
_lic
.
license
,
**
_header_params
)
def
replace_file
(
self
,
dry_run
=
True
):
if
self
.
__ignore
:
return
if
dry_run
:
print
(
self
.
_new_header
)
else
:
self
.
_file
.
replace_file
(
self
.
_new_header
)
Event Timeline
Log In to Comment