Como posso editar as permissões de arquivo (por exemplo, tornar os arquivos de script executáveis) de dentro do Sublime Text 2?

3

Ao escrever, p. scripts de shell, eu quero alterar suas permissões (principalmente a permissão executável ) dentro do Sublime Text 2.

Como posso conseguir isso?

    
por Daniel Beck 20.08.2012 / 19:17

2 respostas

6

O seguinte é um comando de edição de permissões de propósito geral para o arquivo atualmente sendo editado. Para uma explicação mais detalhada sobre plugins e edição do menu Sublime Text 2, veja este post .

Ele adicionará um comando Alterar Modo no menu Editar . Quando selecionado, o usuário é solicitado a digitar uma string de argumento válida para chmod (por exemplo, u+rwx ou 755 ; o padrão é a sequência de permissões octal de 4 dígitos atualmente definida como 0644 ), que é aplicada ao arquivo que está sendo editado .

SelecioneFerramentas»Novoplug-in,insiraoconteúdoaseguiresalvecomochmod.pyem~/ApplicationSupport/SublimeText2/Packages/User/:

importsublime,sublime_plugin,subprocessdefchmod(v,e,permissions):subprocess.call(["chmod", permissions, v.file_name() ] )

def stat(filename):
    proc = subprocess.Popen( [ "stat", "-f", '%Mp%Lp', filename ], stdout=subprocess.PIPE )
    return str(proc.communicate()[0]).strip()

class ChangeModeCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        if sublime.platform() != 'osx':
            return

        fname = self.view.file_name()

        if fname == None:
            sublime.message_dialog("You need to save this buffer first!")
            return

        perms = stat(fname)

        def done(permissions):
            chmod(self.view, edit, permissions)

        sublime.active_window().show_input_panel(
            "permissions to apply to the file " + fname + ": ", perms, done, None, None)

Para inserir um item de menu para este comando, adicione o seguinte a ~/Application Support/Sublime Text 2/Packages/User/Main.sublime-menu , mesclando com o conteúdo existente do arquivo, se o arquivo já existir:

[
    {
        "id": "edit",
        "children":
        [
            {"id": "wrap"},
            { "command": "change_mode" }
        ]
    }
]
    
por 20.08.2012 / 19:17
3

Funciona basicamente no Linux também, mas o comando stat funciona de maneira diferente e mostra inúmeras informações que não são necessárias.

stat -c %a filename 

fará e retornará algo como '644'.

    
por 21.11.2012 / 17:26