Fix ability to be run via poetry and cli
Program can now be invoked through poetry for development purposes, invoke as follows from main directory: `poetry run move`. Alternatively, can still be invoked via `python run.py <nomie-json>` and now via `./run.py <nomie-json>` which uses system default python installation. For now both commands are only mainly useful from the poetry development virtual environment itself.
This commit is contained in:
parent
6af4638845
commit
bea6c0eca5
10 changed files with 65 additions and 35 deletions
|
@ -7,6 +7,12 @@ and this project tries to adhere to [Semantic Versioning](https://semver.org/spe
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.3.1] - 2021-09-30
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* Fix ability to run via poetry or be invoked from command-line
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
* Remove pandas dependency and dataframe functionality
|
* Remove pandas dependency and dataframe functionality
|
||||||
|
|
14
README.md
14
README.md
|
@ -3,7 +3,8 @@
|
||||||
Can take an export of nomie habits in json format and convert it to be importable in Loop Habit Tracker.
|
Can take an export of nomie habits in json format and convert it to be importable in Loop Habit Tracker.
|
||||||
|
|
||||||
Confirmed working for nomie version 5.6.4 and Loop Habit Tracker version 2.0.2.
|
Confirmed working for nomie version 5.6.4 and Loop Habit Tracker version 2.0.2.
|
||||||
Presumably works for other nomie 5.x versions and other Loop 2.x versions as well, but is untested.
|
Presumably works for other nomie 5.x versions and other Loop 2.x versions as well,
|
||||||
|
but that is untested.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
@ -11,9 +12,16 @@ Currently takes a single argument, the nomie database file, and will output to `
|
||||||
Can also take an existing Loop Habit database (exported from the application),
|
Can also take an existing Loop Habit database (exported from the application),
|
||||||
and add the nomie exported habits and checkmarks to it.
|
and add the nomie exported habits and checkmarks to it.
|
||||||
Simply put the exported Loop database in the same directory and call it `output.db`,
|
Simply put the exported Loop database in the same directory and call it `output.db`,
|
||||||
it will not (should not) overwrite anything.
|
it will not (should not™️) overwrite anything.
|
||||||
|
|
||||||
Invoked like: `python migrate.py nomie-export.json`
|
Invoked like: `python run.py nomie-export.json`.
|
||||||
|
Note, however, that -- until a packaged version is released -- you will need to have some packages in your environment.
|
||||||
|
If you wish to run it un-packaged, install poetry and let it do all dependency management by doing:
|
||||||
|
|
||||||
|
```
|
||||||
|
poetry install
|
||||||
|
poetry run habitmove <nomie-json>
|
||||||
|
```
|
||||||
|
|
||||||
# Schemas
|
# Schemas
|
||||||
|
|
||||||
|
|
4
habitmove/__init__.py
Normal file
4
habitmove/__init__.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
import habitmove.schema as schema
|
||||||
|
import habitmove.habits as habits
|
||||||
|
import habitmove.repetitions as rep
|
||||||
|
import habitmove.nomie as nomie
|
14
migrate.py → habitmove/nomie.py
Executable file → Normal file
14
migrate.py → habitmove/nomie.py
Executable file → Normal file
|
@ -1,9 +1,6 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import sys
|
|
||||||
|
|
||||||
import loop.migration as loop
|
|
||||||
|
|
||||||
|
|
||||||
def load_file(filename):
|
def load_file(filename):
|
||||||
|
@ -36,14 +33,3 @@ def verify_continue(data):
|
||||||
if not confirmation_question("Do you want to continue?", default_no=False):
|
if not confirmation_question("Do you want to continue?", default_no=False):
|
||||||
print("Aborted.")
|
print("Aborted.")
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
# load nomie json
|
|
||||||
nomie_data = load_file(sys.argv[1])
|
|
||||||
verify_continue(nomie_data)
|
|
||||||
trackers = nomie_data["trackers"]
|
|
||||||
events = nomie_data["events"]
|
|
||||||
|
|
||||||
# give it over to loop migrator
|
|
||||||
loop.migrate(trackers, events)
|
|
|
@ -1,16 +0,0 @@
|
||||||
import loop.schema as schema
|
|
||||||
import loop.habits as habits
|
|
||||||
import loop.repetitions as rep
|
|
||||||
|
|
||||||
|
|
||||||
def migrate(trackers, events):
|
|
||||||
db = schema.migrate("output.db")
|
|
||||||
if trackers is not None:
|
|
||||||
|
|
||||||
habitlist = habits.migrate(db, trackers)
|
|
||||||
|
|
||||||
if events is not None:
|
|
||||||
rep.migrate(db, habitlist, events)
|
|
||||||
|
|
||||||
db.commit()
|
|
||||||
db.close()
|
|
|
@ -1,6 +1,6 @@
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "nomie-migration"
|
name = "habitmove"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
description = "migrate nomie data to loop habits tracker"
|
description = "migrate nomie data to loop habits tracker"
|
||||||
authors = ["Marty Oehme <marty.oehme@gmail.com>"]
|
authors = ["Marty Oehme <marty.oehme@gmail.com>"]
|
||||||
|
|
||||||
|
@ -9,6 +9,10 @@ python = "^3.9"
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
|
|
||||||
|
[tool.poetry.scripts]
|
||||||
|
habitmove = "run:main"
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["poetry-core>=1.0.0"]
|
requires = ["poetry-core>=1.0.0"]
|
||||||
build-backend = "poetry.core.masonry.api"
|
build-backend = "poetry.core.masonry.api"
|
||||||
|
|
||||||
|
|
38
run.py
Executable file
38
run.py
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
import habitmove.schema as schema
|
||||||
|
import habitmove.habits as habits
|
||||||
|
import habitmove.repetitions as rep
|
||||||
|
import habitmove.nomie as nomie
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def migrate(trackers, events):
|
||||||
|
db = schema.migrate("output.db")
|
||||||
|
if trackers is not None:
|
||||||
|
|
||||||
|
habitlist = habits.migrate(db, trackers)
|
||||||
|
|
||||||
|
if events is not None:
|
||||||
|
rep.migrate(db, habitlist, events)
|
||||||
|
|
||||||
|
db.commit()
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# load nomie json
|
||||||
|
nomie_data = nomie.load_file(sys.argv[1])
|
||||||
|
nomie.verify_continue(nomie_data)
|
||||||
|
trackers = nomie_data["trackers"]
|
||||||
|
events = nomie_data["events"]
|
||||||
|
migrate(trackers, events)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
||||||
|
# things to have as (data) classes:
|
||||||
|
# tracker, event, tag?
|
||||||
|
# habit, repetition
|
Loading…
Reference in a new issue