Browse Source

Fix unicode support (closes #25).

tags/v0.4
Ben Kurtovic 8 years ago
parent
commit
85726e7a97
4 changed files with 25 additions and 12 deletions
  1. +1
    -0
      CHANGELOG
  2. +8
    -6
      gitup/config.py
  3. +5
    -3
      gitup/migrate.py
  4. +11
    -3
      gitup/script.py

+ 1
- 0
CHANGELOG View File

@@ -6,6 +6,7 @@ v0.3.1 (unreleased):
- Cleaned up the bookmark file format, fixing a related Windows bug. The script
will automatically migrate to the new one.
- Fixed a bug related to Python 3 compatibility.
- Fixed unicode support.

v0.3 (released June 7, 2015):



+ 8
- 6
gitup/config.py View File

@@ -31,19 +31,21 @@ def _load_config_file(config_path=None):
cfg_path = config_path or get_default_config_path()

try:
with open(cfg_path, "r") as config_file:
return config_file.read().split("\n")
with open(cfg_path, "rb") as config_file:
paths = config_file.read().split(b"\n")
return [path.decode("utf8") for path in paths]
except IOError:
return []

def _save_config_file(config, config_path=None):
"""Save config changes to the given config file."""
def _save_config_file(bookmarks, config_path=None):
"""Save the bookmarks list to the given config file."""
run_migrations()
cfg_path = config_path or get_default_config_path()
_ensure_dirs(cfg_path)

with open(cfg_path, "w") as config_file:
config_file.write("\n".join(config))
dump = b"\n".join(path.encode("utf8") for path in bookmarks)
with open(cfg_path, "wb") as config_file:
config_file.write(dump)

def get_default_config_path():
"""Return the default path to the configuration file."""


+ 5
- 3
gitup/migrate.py View File

@@ -3,8 +3,6 @@
# Copyright (C) 2011-2016 Ben Kurtovic <ben.kurtovic@gmail.com>
# Released under the terms of the MIT License. See LICENSE for details.

__all__ = ["run_migrations"]

import os

try:
@@ -14,6 +12,8 @@ except ImportError: # Python 2
from ConfigParser import SafeConfigParser as ConfigParser, NoSectionError
PY3K = False

__all__ = ["run_migrations"]

def _get_old_path():
"""Return the old default path to the configuration file."""
xdg_cfg = os.environ.get("XDG_CONFIG_HOME") or os.path.join("~", ".config")
@@ -45,12 +45,14 @@ def _migrate_old_format():
bookmarks = [path for path, _ in config.items("bookmarks")]
except NoSectionError:
bookmarks = []
if PY3K:
bookmarks = [path.encode("utf8") for path in bookmarks]

new_path = os.path.join(os.path.split(old_path)[0], "bookmarks")
os.rename(old_path, new_path)

with open(new_path, "wb") as handle:
handle.write("\n".join(bookmarks))
handle.write(b"\n".join(bookmarks))

def run_migrations():
"""Run any necessary migrations to ensure the config file is up-to-date."""


+ 11
- 3
gitup/script.py View File

@@ -7,6 +7,7 @@ from __future__ import print_function

import argparse
import os
import sys

from colorama import init as color_init, Fore, Style

@@ -15,6 +16,12 @@ from .config import (get_default_config_path, get_bookmarks, add_bookmarks,
delete_bookmarks, list_bookmarks)
from .update import update_bookmarks, update_directories

def _decode(path):
"""Decode the given string using the system's filesystem encoding."""
if sys.version_info.major > 2:
return path
return path.decode(sys.getfilesystemencoding())

def main():
"""Parse arguments and then call the appropriate function(s)."""
parser = argparse.ArgumentParser(
@@ -30,7 +37,7 @@ def main():
group_m = parser.add_argument_group("miscellaneous")

group_u.add_argument(
'directories_to_update', nargs="*", metavar="path",
'directories_to_update', nargs="*", metavar="path", type=_decode,
help="""update all repositories in this directory (or the directory
itself, if it is a repo)""")
group_u.add_argument(
@@ -48,15 +55,16 @@ def main():

group_b.add_argument(
'-a', '--add', dest="bookmarks_to_add", nargs="+", metavar="path",
help="add directory(s) as bookmarks")
type=_decode, help="add directory(s) as bookmarks")
group_b.add_argument(
'-d', '--delete', dest="bookmarks_to_del", nargs="+", metavar="path",
type=_decode,
help="delete bookmark(s) (leaves actual directories alone)")
group_b.add_argument(
'-l', '--list', dest="list_bookmarks", action="store_true",
help="list current bookmarks")
group_b.add_argument(
'-b', '--bookmark-file', nargs="?", metavar="path",
'-b', '--bookmark-file', nargs="?", metavar="path", type=_decode,
help="use a specific bookmark config file (default: {0})".format(
get_default_config_path()))



Loading…
Cancel
Save