kejadlen / filter_alfredworkflow

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

filter_alfredworkflow

A utility that takes an Alfred workflow's info.plist file from STDIN and outputs a cleaned version onto STDOUT that does not include values for environment variables that are set to "Don't Export" in Alfred.

It's for people that store Alfred preferences in a public git repo.

Usage

Intended for use with git's clean/smudge filtering.

alfredworkflow_clean

git clone https://github.com/kejadlen/filter_alfredworkflow.git
cd filter_alfredworkflow
cargo build --release

alfredworkflow_clean will be located in the target/release directory of the repo and will need to be copied to somewhere in your PATH.

git

.gitattributes

Alfred.alfredpreferences/workflows/*/info.plist filter=alfredworkflow

git config

git config filter.alfredworkflow.clean alfredworkflow_clean

Ruby

For posterity's sake, the original Ruby version:

#!/usr/bin/env ruby

require 'tempfile'

plist = ARGF.read
Tempfile.create('info.plist') do |f|
  f << plist
  f.flush

  vars = `/usr/libexec/PlistBuddy -c "Print :variablesdontexport" #{f.path}`
  vars = vars.split("\n")[1..-2].map(&:strip)

  vars.each do |var|
    `/usr/libexec/PlistBuddy -c "Set :variables:#{var} ''" #{f.path}`
  end

  f.rewind
  puts f.read
end

This pretty much works just as well as the Rust version, although it is negligibly slower. Go ahead this into an executable file on your PATH if that's more up your alley.

About


Languages

Language:Rust 100.0%