śĪ#“QŖ·“      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ  ‘ ’ None"#%&'-.12789;=>?@AHPSUVX_k™ update-nix-fetchgit”A comment will be added to an expression if it occurs immediately after the expression in the source, i.e. on the same line with only space and ';' in between. import Nix.Parserimport Nix.Prettyimport Data.Vectorimport Data.Foldable9lines = T.pack <$> ["1 # foo", "+ {a=2; # bar","} # baz"]str = T.unlines $ lines!Success nix = parseNixTextLoc str/ann = annotateWithComments (fromList lines) nixDfixUniverse e = e : (fixUniverse =<< Data.Foldable.toList (unFix e))dpretty e@(Fix (Compose (Ann comment _)))= (prettyNix (stripAnnotation (stripAnnotation e)), comment)pretty <$> fixUniverse annS[(1 + { a = 2; },Just "baz"),(1,Just "foo"),({ a = 2; },Just "baz"),(2,Just "bar")]  None "#%&'-.12789;=>?@AHPSUVX_kFd update-nix-fetchgitA class used in the default definition for update-nix-fetchgit<Instances for this class can be derived for any type with a “ instance.update-nix-fetchgit‘Match one level of structure, returning the matched structure with sub structures to match. Needle is the first argument, matchee is the second. Unlike the  UnifiableĒ class in the "unification-fd" package, this doesn't have to be a commutative operation, the needle will always be the first parameter and instances are free to treat if differently if appropriate.update-nix-fetchgitLike ”# but each layer could instead be a update-nix-fetchgitgMatch a tree with holes against a tree without holes, returning the values of the holes if it matches.• and – are both instances of . –< does not require the annotations to match. Please see the  instance documentation for • for more details. import Nix.THimatch (addHoles [nix|{foo = x: ^foo; bar = ^bar;}|]) [nix|{foo = x: "hello"; bar = "world"; baz = "!";}|]jJust [("bar",Fix (NStr (DoubleQuoted [Plain "world"]))),("foo",Fix (NStr (DoubleQuoted [Plain "hello"])))]update-nix-fetchgit“Find all the needles in a haystack, returning the matched expression as well as their filled holes. Results are returned productively in preorder. import Nix.THimport Control.Arrow>pretty = prettyNix *** (fmap @[] (fmap @((,) Text) prettyNix))Gpretty <$> findMatches (addHoles [nix|{x=^x;}|]) [nix|{x=1;a={x=2;};}|]?[({ x = 1; a = { x = 2; }; },[("x",1)]),({ x = 2; },[("x",2)])]—update-nix-fetchgit Get every f in a Fix f in preorder.update-nix-fetchgitMake syntactic holes into supdate-nix-fetchgitMake syntactic holes into s˜update-nix-fetchgitMatch a composition of  things™update-nix-fetchgit2Bindings are compared on top level structure only.BDoesn't filter bindings in the needle, as they must all be present=Bindings are returned according to their order in the needle.Any optional (name begins with _*) bindings may be removed from the needle.¬Left hand sides are matched purely on the top level structure, this means that "${a}" and "${b}" appear the same to this function, and it may not match them up correctly.update-nix-fetchgitcBasically: does the path begin with an underscore, if so return it removed without the underscore.&update-nix-fetchgitHDoesn't require the annotations to match, returns the second annotation.(update-nix-fetchgitNo Generic1 instance)update-nix-fetchgit?The matched pair uses the source location of the first argument,update-nix-fetchgitXThere are a few special cases when matching expressions to make writing matchers nicer:‰For attrsets and let bindings, the matching is done on the needle's keys only. i.e. the matchee may have extra keys which are ignored.KFor attrsets and let bindings, bindings which have a LHS beginning with _d are treated as optional. If they are not present then any holes on their RHS will not be filled.%Attrsets match ignoring recursiveness If a function in the needle has _0 as its parameter, it matches everything, so _ acts as a wildcard pattern.update-nix-fetchgitNeedleupdate-nix-fetchgitHaystack   None""#%&'-.12789;=>?@AHPSUVX_khT .update-nix-fetchgitThe results of matching with a 0v. The values in the required list are guaranteed to be present. The values in the optional list may be present. Use 5 and 6 to extract them safely.0update-nix-fetchgitWA matcher with the names of the required and optional holes encoded at the type level.3update-nix-fetchgit$A QuasiQuoter for safely generating 0s from nix sourceThe expression has the type 0 opts reqs • where opts and reqs@ are the optional and required holes from the source expression.‡The pattern, if matched, will bring into scope variables named according to the holes present in the expression. These will have type š if they are required, and Maybe š if they are optional.:This requires ViewPatterns, TypeApplications and DataKinds4case [nix|{a="hello";}|] of [matchNix|{a=^a;}|] -> a)Fix (NStr (DoubleQuoted [Plain "hello"]))0:t [matchNix|{a = ^a; b = {c = ^c; _d = ^d;};}|]W[matchNix|{a = ^a; b = {c = ^c; _d = ^d;};}|] :: TypedMatcher '["d"] '["a", "c"] NExprF1[matchNix|let a = ^a; _b = ^b; in x|] = undefined :t (a, b)*(a, b) :: (Fix NExprF, Maybe (Fix NExprF))4update-nix-fetchgit$A QuasiQuoter for safely generating 09s from nix source along with source location annotationsThe expression has the type 0 opts reqs – where opts and reqsA are the optional and required holes from the source expression.:This requires ViewPatterns, TypeApplications and DataKinds‡The pattern, if matched, will bring into scope variables named according to the holes present in the expression. These will have type › if they are required, and Maybe › if they are optional.5update-nix-fetchgit#Extract a required key from a match6update-nix-fetchgit*Maybe extract an optional key from a match7update-nix-fetchgitA typed version of 8update-nix-fetchgitA typed version of œupdate-nix-fetchgitMake a list of promoted stringsupdate-nix-fetchgit#Collect optional and required holesžupdate-nix-fetchgit#Collect optional and required holesŸupdate-nix-fetchgit2Find the optional and required holees in a binding ./012345678 34012./5678 Safe "#%&'-.12789;=>?@AHPSUVX_kiā ”¢£¤„¦§None"#%&'-.12789;=>?@AHPSUVX_kk19:;<=>?@ABCDEF9:;<=>?@ABCDEFNone"#%&'-.12789;=>?@AHPSUVX_kxåHupdate-nix-fetchgitPA span and some text to replace it with. They don't have to be the same length.Lupdate-nix-fetchgit:Update many spans in a file. They must be non-overlapping.Mupdate-nix-fetchgitmUpdate a single span of characters inside a text value. If you're updating multiples spans it's best to use L.Øupdate-nix-fetchgitDo two spans overlapNupdate-nix-fetchgit Split some text at a particular Oupdate-nix-fetchgitfGo from a line and column representation to a single character offset from the beginning of the text.DThis probably fails on crazy texts with multi character line breaks.Oupdate-nix-fetchgitThe string to linearize inupdate-nix-fetchgitThe line offsetupdate-nix-fetchgitThe column offsetupdate-nix-fetchgitThe character offsetHIJKLMNOPHIJKMLOPNNone"#%&'-.12789;=>?@AHPSUVX_k€ŸSupdate-nix-fetchgit:A repo is either specified by URL or by Github owner/repo.Yupdate-nix-fetchgit‚A tree with a structure similar to the AST of the Nix file we are parsing, but which only contains the information we care about.kupdate-nix-fetchgitRuns a ©, computation returning the errors raised by Ŗ or «C if any, as well as returning the computation s result if possible.SVTUXWY[Z]\^_`adcbefhgijkijkefhgadcb^_`Y[Z]\SVTUXWNone"#%&'-.12789;=>?@AHPSUVX_kŠtoupdate-nix-fetchgitUGet the url from either a nix expression for the url or a repo and owner expression.rupdate-nix-fetchgit;Get the string value of a particular expression, returns a 9* if the expression is not a string value. TODO: Use evalExpr heretupdate-nix-fetchgitGet the " covering a particular expression.uupdate-nix-fetchgitŸGiven an expression that is supposed to represent a function, extracts the name of the function. If we cannot figure out the function name, returns Nothing.SUTVWXmnopqrstuvwxyz{|}SUTVWXmnopqurstxvwyz{|}None"#%&'-.12789;=>?@AHPSUVX_kœRupdate-nix-fetchgit%The type of nix-prefetch-git's output‡update-nix-fetchgitRun nix-prefetch-gitˆupdate-nix-fetchgitRun nix-prefetch-url --unpack‰update-nix-fetchgit)Discover if this ref is a branch or a tagarunM _ $ getGitFullName "https://github.com/expipiplus1/update-nix-fetchgit" (Revision "0.1.0.0")Right "refs/tags/0.1.0.0"jrunM _ $ getGitFullName "https://github.com/expipiplus1/update-nix-fetchgit" (Revision "joe-fetchTarball")#Right "refs/heads/joe-fetchTarball"Šupdate-nix-fetchgitReturn a tag or a hash‡update-nix-fetchgit$Extra arguments for nix-prefetch-gitupdate-nix-fetchgitThe URL to prefetchˆupdate-nix-fetchgit$Extra arguments for nix-prefetch-urlupdate-nix-fetchgitThe URL to prefetch‰update-nix-fetchgitgit repo locationupdate-nix-fetchgitbranch or tag nameupdate-nix-fetchgitFull name, i.e. with refsheads or refstagsŠupdate-nix-fetchgitgit repo locationupdate-nix-fetchgitbranch or tag nameupdate-nix-fetchgitFull name, i.e. with refsheads or refstags~€‚†„ƒ…‡ˆ‰Š‹‚†„ƒ…‡ˆ‰Š‹~€ None "#%&'-.12789;=>?@AHPSUVX_k¦y¬update-nix-fetchgit ‹callHackageDirect = {pkg, ver, sha256}: let pkgver = "${pkg}-${ver}"; in self.callCabal2nix pkg (pkgs.fetchzip { url = "mirror:/hackage=${pkgver}/${pkgver}.tar.gz"; inherit sha256; }); ­update-nix-fetchgitRepo URLupdate-nix-fetchgitDesired revisionupdate-nix-fetchgit Deep Cloneupdate-nix-fetchgit Leave .gitupdate-nix-fetchgitFetch submodulesupdate-nix-fetchgitrevupdate-nix-fetchgit%sha256, not present for some fetchers®update-nix-fetchgitURLupdate-nix-fetchgitsha256 None "#%&'-.12789;=>?@AHPSUVX_kŖ›update-nix-fetchgit+Provided FilePath, update Nix file in-place’update-nix-fetchgitcGiven the path to a Nix file, returns the SpanUpdates all the parts of the file we want to update.‘’‘’Æ     !"#$%&'()*+,-./0123456789:;<<==>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ[\]^_`abcdefghiijklmnoopqrstuvwxyz{|}~€‚ƒ„…†‡‡ˆ‰‰Š‹ŒŽ‘’“”• – — ˜ ™š›œžŸ  ” ¢£¤„  ¦ §Ø©Ŗ« ¬ ­ ® Æ ° ± ² ³“µ¶·µø¹µøŗ » ¼ ½¾0update-nix-fetchgit-0.2.2-H74uCpu8iJY8vxoOmV0x6e Update.Span Nix.Comments Nix.MatchNix.Match.TypedUpdate.Nix.FetchGit.WarningUpdate.Nix.FetchGit.TypesUpdate.Nix.FetchGit.UtilsUpdate.Nix.FetchGit.PrefetchUpdate.Nix.UpdaterUpdate.Nix.FetchGitPaths_update_nix_fetchgit"hnix-0.11.0-HCVhUmIJlUZ32fis3dm6v2Nix.Expr.Types.AnnotatedspanEnd spanBeginSrcSpan'megaparsec-8.0.0-9Vrm0rkChK0Lp6QBTm2WWZText.Megaparsec.Pos SourcePos sourceName sourceLine sourceColumn NExprCommentsNExprCommentsFCommentannotateWithComments GMatchable gZipMatchLeft Matchable zipMatchLeft WithHolesHoleTermmatch findMatchesaddHoles addHolesLocisOptionalPath$fGMatchable:*:$fGMatchable:+:$fGMatchablePar1$fGMatchableK1$fGMatchableU1$fGMatchableM1$fGMatchable:.:$fGMatchableRec1$fMatchableCompose$fMatchable(,)$fMatchableMaybe$fMatchableNonEmpty $fMatchable[]$fMatchableAnn$fMatchableParams$fMatchableNKeyName$fMatchableBinding$fMatchableAntiquoted$fMatchableNString$fMatchableNExprF$fDataWithHoles TypedMatch TypedMatcherunTypedMatchermatchNix matchNixLocget getOptional matchTypedfindMatchesTypedWarningCouldNotParseInput MissingAttrDuplicateAttrs NotAStringNotABoolNixPrefetchGitFailedInvalidPrefetchGitOutputNixPrefetchUrlFailedInvalidPrefetchUrlOutputInvalidDateStringGitLsRemoteFailed NoSuchRefInvalidGitLsRemoteOutput $fShowWarning SpanUpdatespanUpdateSpanspanUpdateContents updateSpans updateSpansplitlinearizeSourcePosprettyPrintSourcePos$fShowSpanUpdate$fDataSpanUpdate RepoLocationURLGitHubGitLab repoOwnerrepoRepo FetchTreeNode UpdaterNodenodeVersionExpr nodeChildrenUpdater unUpdater VerbosityVerboseNormalQuietEnvsayLogupdateLocationsMrunM asWarnings$fShowRepoLocationourParseNixTextourParseNixFileextractUrlStringprettyRepoLocation quoteStringexprTextexprBoolexprSpanextractFuncNameparseISO8601DateToDay formatWarningcontainsPosition fromEithernoterefute1 logVerbose logNormalRevision unRevisionNixPrefetchGitOutputurlrevsha256datenixPrefetchGitnixPrefetchUrlgetGitFullNamegetGitRevisiongetGitHubRevisionDate$fShowNixPrefetchGitOutput$fGenericNixPrefetchGitOutput$fFromJSONNixPrefetchGitOutputfetchers processFile processTextupdatesFromTextbase GHC.GenericsGeneric1%data-fix-0.3.0-HyS3ZHNyT4e559JkPpLb6ZData.FixFixNix.Expr.TypesNExprF NExprLocF fixUniverse zipMatchLeft2reduceBindingsNExprNExprLoc symbolList collectHolescollectHolesLoc bindingHolesversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameoverlaps-monad-validate-1.2.0.0-JyT43SespqU5VKQqlzrLd6Control.Monad.Validate.Internal ValidateTControl.Monad.Validate.ClassrefutedisputehackageDirectUpdater gitUpdatertarballUpdater