1*4882a593Smuzhiyun# Recipe creation tool - edit plugin 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# This sub-command edits the recipe and appends for the specified target 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun# Example: recipetool edit busybox 6*4882a593Smuzhiyun# 7*4882a593Smuzhiyun# Copyright (C) 2018 Mentor Graphics Corporation 8*4882a593Smuzhiyun# 9*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 10*4882a593Smuzhiyun# 11*4882a593Smuzhiyun 12*4882a593Smuzhiyunimport argparse 13*4882a593Smuzhiyunimport errno 14*4882a593Smuzhiyunimport logging 15*4882a593Smuzhiyunimport os 16*4882a593Smuzhiyunimport re 17*4882a593Smuzhiyunimport subprocess 18*4882a593Smuzhiyunimport sys 19*4882a593Smuzhiyunimport scriptutils 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun 22*4882a593Smuzhiyunlogger = logging.getLogger('recipetool') 23*4882a593Smuzhiyuntinfoil = None 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun 26*4882a593Smuzhiyundef tinfoil_init(instance): 27*4882a593Smuzhiyun global tinfoil 28*4882a593Smuzhiyun tinfoil = instance 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun 31*4882a593Smuzhiyundef edit(args): 32*4882a593Smuzhiyun import oe.recipeutils 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun recipe_path = tinfoil.get_recipe_file(args.target) 35*4882a593Smuzhiyun appends = tinfoil.get_file_appends(recipe_path) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun return scriptutils.run_editor([recipe_path] + list(appends), logger) 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun 40*4882a593Smuzhiyundef register_commands(subparsers): 41*4882a593Smuzhiyun parser = subparsers.add_parser('edit', 42*4882a593Smuzhiyun help='Edit the recipe and appends for the specified target. This obeys $VISUAL if set, otherwise $EDITOR, otherwise vi.') 43*4882a593Smuzhiyun parser.add_argument('target', help='Target recipe/provide to edit') 44*4882a593Smuzhiyun parser.set_defaults(func=edit, parserecipes=True) 45