use puppet's commands dsl, DRY up cached_path
why is this even a class method
why is this a class method either
extract source_type
extract receipt_path
extract app_path, also fix missing .app bug