peritus / bumpversion

Version-bump your software with a single command
https://pypi.python.org/pypi/bumpversion
MIT License
1.5k stars 146 forks source link

Limit Replacements Option Support #190

Open KyleJamesWalker opened 6 years ago

KyleJamesWalker commented 6 years ago

When trying to use bumpversion for non-python files, the search functionality is too limited. When loading from the config parser, the values strip leading whitespace on newlines. This made it so it wouldn't match what was being searched, so instead, it seemed easier to just limit the amount of replaces in the file (in my use case).

My issue was a package-lock.json for a JS library:

{
  "name": "my-app",
  "version": "2.2.1",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
    "fetch-helper": {
      "version": "1.3.1",
      "requires": {
        "humps": "^2.0.1",
        "isomorphic-fetch": "^2.2.1",
        "query-string": "^5.0.1"
      },
    "ansi-styles": {
      "version": "2.2.1"
      }
    }
  }
}

Searching for "version": "2.2.1", would capture the ansi-styles block, and trying to do a multiline string would strip the whitespace before "version" so it wouldn't match correctly.

Another possible direction would be to allow \n values in the ConfigParser, by default when it sees \n, it converts it to \\n. bumpversion could search and replace for escapped new lines, and replace them.

Please let me know if you have another solution for this.

Note: I updated the tox file to get this working with newer python 3 versions, I'm not 100% sure if all those changes are good or desired.

KyleJamesWalker commented 6 years ago

@peritus do you still maintain/update this library? I've noticed there isn't any recent activity, and honestly not sure if this is something you might even want to be part of bumpversion thanks.