-
Notifications
You must be signed in to change notification settings - Fork 12
Description
So after trying a bunch of things like diff-match-patch, normal diff and vaguely trying regex following is the technique that works best at least for situations that I tried.
Let's say we have a Portfile which we need to update and we have decided that we will update version and checksums field.
So first we extract that fields from existing Portfile (yet to be automated).
and make a file which looks like this:
version 0.7
checksums sha256 7de9a0cc9d55c175b611ed748ee7ea572ec308411934769e2e647d1d26ba2eea \
rmd160 6dc1b42ac5760f8225c81b1cd9539332b33b1b4h \
size 24223
and then we generate a new file which looks like this:
version 0.9
checksums sha256 b967cda25e8e5a634a450886e98ebeaf5aa51220e8888a17a34d78d001f96035 \
rmd160 aac9b9c2f52ac75eec0700ac996a87f0151923f9 \
size 25969
Notice the blank line at end of file, that is apparently important for this to work.
Now we generate a diff for above two files and then apply patch on the original file.
This even updates a file that maybe modified and has different order of fields than what upt usually has.
For example from this:
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup python 1.0
name py-upt
version 0.7
revision 0
maintainers {@korusuke somaiya.edu:karan.sheth} openmaintainer
description Package software from any package manager to any distribution
long_description ${description}
platforms darwin
supported_archs noarch
homepage https://framagit.org/upt/upt
master_sites pypi:[string index ${python.rootname} 0]/${python.rootname}
distname ${python.rootname}-${version}
license BSD
checksums sha256 7de9a0cc9d55c175b611ed748ee7ea572ec308411934769e2e647d1d26ba2eea \
rmd160 6dc1b42ac5760f8225c81b1cd9539332b33b1b4h \
size 24223
python.versions 37
if {${name} ne ${subport}} {
depends_lib-append \
port:py${python.version}-spdx-lookup \
port:py${python.version}-setuptools
depends_run-append \
port:py${python.version}-upt-macports \
port:py${python.version}-upt-cpan \
port:py${python.version}-upt-pypi
test.run yes
test.cmd ${python.bin} -m unittest
test.target
test.env PYTHONPATH=${worksrcpath}/build/lib
post-destroot {
set docdir ${prefix}/share/doc/${subport}
xinstall -d ${destroot}${docdir}
xinstall -m 0644 -W ${worksrcpath} README.md LICENSE CHANGELOG \
${destroot}${docdir}
}
livecheck.type none
}
to this:
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup python 1.0
name py-upt
version 0.9
revision 0
maintainers {@korusuke somaiya.edu:karan.sheth} openmaintainer
description Package software from any package manager to any distribution
long_description ${description}
platforms darwin
supported_archs noarch
homepage https://framagit.org/upt/upt
master_sites pypi:[string index ${python.rootname} 0]/${python.rootname}
distname ${python.rootname}-${version}
license BSD
checksums sha256 b967cda25e8e5a634a450886e98ebeaf5aa51220e8888a17a34d78d001f96035 \
rmd160 aac9b9c2f52ac75eec0700ac996a87f0151923f9 \
size 25969
python.versions 37
if {${name} ne ${subport}} {
depends_lib-append \
port:py${python.version}-spdx-lookup \
port:py${python.version}-setuptools
depends_run-append \
port:py${python.version}-upt-macports \
port:py${python.version}-upt-cpan \
port:py${python.version}-upt-pypi
test.run yes
test.cmd ${python.bin} -m unittest
test.target
test.env PYTHONPATH=${worksrcpath}/build/lib
post-destroot {
set docdir ${prefix}/share/doc/${subport}
xinstall -d ${destroot}${docdir}
xinstall -m 0644 -W ${worksrcpath} README.md LICENSE CHANGELOG \
${destroot}${docdir}
}
livecheck.type none
}