init: move editor from spack/__init__.py to spack.util.editor

This commit is contained in:
Todd Gamblin 2018-04-08 21:17:25 -05:00 committed by scheibelp
parent a4d276fbe4
commit 6e398c7f08
3 changed files with 58 additions and 22 deletions

View File

@ -207,25 +207,6 @@
from spack.util.executable import *
__all__ += spack.util.executable.__all__
# Set up the user's editor
# $EDITOR environment variable has the highest precedence
editor = os.environ.get('EDITOR')
# if editor is not set, use some sensible defaults
if editor is not None:
editor = Executable(editor)
else:
editor = which('vim', 'vi', 'emacs', 'nano')
# If there is no editor, only raise an error if we actually try to use it.
if not editor:
def editor_not_found(*args, **kwargs):
raise EnvironmentError(
'No text editor found! Please set the EDITOR environment variable '
'to your preferred text editor.')
editor = editor_not_found
from spack.package import \
install_dependency_symlinks, flatten_dependencies, \
DependencyConflictError, InstallError, ExternalPackageError

View File

@ -31,6 +31,7 @@
import spack.paths
from spack.spec import Spec
from spack.repository import Repo
from spack.util.editor import editor
description = "open package files in $EDITOR"
section = "packaging"
@ -64,7 +65,7 @@ def edit_package(name, repo_path, namespace):
tty.die("No package for '{0}' was found.".format(spec.name),
" Use `spack create` to create a new package")
spack.editor(path)
editor(path)
def setup_parser(subparser):
@ -137,9 +138,9 @@ def edit(parser, args):
path))
path = files[0] # already confirmed only one entry in files
spack.editor(path)
editor(path)
elif name:
edit_package(name, args.repo, args.namespace)
else:
# By default open the directory where packages live
spack.editor(path)
editor(path)

View File

@ -0,0 +1,54 @@
##############################################################################
# Copyright (c) 2013-2018, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
"""Module for finding the user's preferred text editor.
Defines one variable: ``editor``, which is a
``spack.util.executable.Executable`` object that can be called to invoke
the editor.
If no ``editor`` is found, an ``EnvironmentError`` is raised when
``editor`` is invoked.
"""
import os
from spack.util.executable import Executable, which
# Set up the user's editor
# $EDITOR environment variable has the highest precedence
editor = os.environ.get('EDITOR')
# if editor is not set, use some sensible defaults
if editor is not None:
editor = Executable(editor)
else:
editor = which('vim', 'vi', 'emacs', 'nano')
# If there is no editor, only raise an error if we actually try to use it.
if not editor:
def editor_not_found(*args, **kwargs):
raise EnvironmentError(
'No text editor found! Please set the EDITOR environment variable '
'to your preferred text editor.')
editor = editor_not_found