{"action":"created","issue":{"url":"https://api.github.com/repos/haskell/cabal/issues/1975","labels_url":"https://api.github.com/repos/haskell/cabal/issues/1975/labels{/name}","comments_url":"https://api.github.com/repos/haskell/cabal/issues/1975/comments","events_url":"https://api.github.com/repos/haskell/cabal/issues/1975/events","html_url":"https://github.com/haskell/cabal/pull/1975","id":36721296,"number":1975,"title":"Bash (globstar) style globbing","user":{"login":"hdgarrood","id":1270186,"avatar_url":"https://avatars.githubusercontent.com/u/1270186?v=3","gravatar_id":"","url":"https://api.github.com/users/hdgarrood","html_url":"https://github.com/hdgarrood","followers_url":"https://api.github.com/users/hdgarrood/followers","following_url":"https://api.github.com/users/hdgarrood/following{/other_user}","gists_url":"https://api.github.com/users/hdgarrood/gists{/gist_id}","starred_url":"https://api.github.com/users/hdgarrood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hdgarrood/subscriptions","organizations_url":"https://api.github.com/users/hdgarrood/orgs","repos_url":"https://api.github.com/users/hdgarrood/repos","events_url":"https://api.github.com/users/hdgarrood/events{/privacy}","received_events_url":"https://api.github.com/users/hdgarrood/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":12,"created_at":"2014-06-28T09:02:47Z","updated_at":"2015-04-04T17:06:13Z","closed_at":"2014-08-27T15:27:59Z","pull_request":{"url":"https://api.github.com/repos/haskell/cabal/pulls/1975","html_url":"https://github.com/haskell/cabal/pull/1975","diff_url":"https://github.com/haskell/cabal/pull/1975.diff","patch_url":"https://github.com/haskell/cabal/pull/1975.patch"},"body":"Implement bash style filename globbing for data-files (well, bash after doing `shopt -s globstar`). Subsumes #713 #784 #1343 #1344 #1973\r\n\r\nThe plan:\r\n* `*` can expand to a part of any file or directory but not descend into subdirectories\r\n* `**` is the same, except that it can match any number of levels of directories (including 0). \r\n* `{a,b,c}` can expand into `a`, `b`, or `c`, where `a`, `b`, and `c` are globs themselves. So `{foo,*bar}` expands to \"foo\" or \"abar\" or \"bbar\"...\r\n* \"Literal\" and glob patterns may be mixed to an unlimited extent in a single directory level. That is, `foo/**/*` is allowed, and so is `foo/**/*.hs`, and `foo/**/Test*.hs`, and `foo/**/*{Test,Spec}*.hs`.\r\n* If a file name has one of the characters `{`, `}`, `*`, `\\` in it, a backslash `\\` is required to match it literally. Eg the pattern `a\\\\b` matches `a\\b`, and the pattern `\\e` is an error (because no such escape sequence exists).\r\n\r\nHere's what I've done so far. It typechecks, but if I try to parse anything, it hangs. Any ideas?"},"comment":{"url":"https://api.github.com/repos/haskell/cabal/issues/comments/89614921","html_url":"https://github.com/haskell/cabal/pull/1975#issuecomment-89614921","issue_url":"https://api.github.com/repos/haskell/cabal/issues/1975","id":89614921,"user":{"login":"hdgarrood","id":1270186,"avatar_url":"https://avatars.githubusercontent.com/u/1270186?v=3","gravatar_id":"","url":"https://api.github.com/users/hdgarrood","html_url":"https://github.com/hdgarrood","followers_url":"https://api.github.com/users/hdgarrood/followers","following_url":"https://api.github.com/users/hdgarrood/following{/other_user}","gists_url":"https://api.github.com/users/hdgarrood/gists{/gist_id}","starred_url":"https://api.github.com/users/hdgarrood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hdgarrood/subscriptions","organizations_url":"https://api.github.com/users/hdgarrood/orgs","repos_url":"https://api.github.com/users/hdgarrood/repos","events_url":"https://api.github.com/users/hdgarrood/events{/privacy}","received_events_url":"https://api.github.com/users/hdgarrood/received_events","type":"User","site_admin":false},"created_at":"2015-04-04T17:06:13Z","updated_at":"2015-04-04T17:06:13Z","body":"I found some time! I have more code, but I'm not able to reopen this."}}