Skip to content

Support main as the default branch for templates #5422

@majjoha

Description

@majjoha

I've been looking into setting up a template for my Stack projects that I want to share on GitHub, and I am currently running version 2.5.1.

When referencing a template with either a URL or a file on my computer, I am able to scaffold projects successfully with the following two commands:

stack new <project-name> <url>
stack new <project-name> <file>

However, if I try to scaffold a project by referencing a template from my GitHub repository, I get the following error:

Expand/collapse log output
~/Dropbox/Kode/Haskell % stack new --verbose test-project majjoha/simple
  Version 2.3.3 x86_64
  Compiled with:
  - Cabal-3.2.0.0
  - Glob-0.10.1
  - StateVar-1.2
  - aeson-1.4.7.1
  - annotated-wl-pprint-0.7.0
  - ansi-terminal-0.10.3
  - ansi-wl-pprint-0.6.9
  - array-0.5.4.0
  - asn1-encoding-0.9.6
  - asn1-parse-0.9.5
  - asn1-types-0.3.4
  - async-2.2.2
  - attoparsec-0.13.2.4
  - attoparsec-iso8601-1.0.1.0
  - auto-update-0.1.6
  - base-4.14.0.0
  - base-compat-0.11.1
  - base-compat-batteries-0.11.1
  - base-orphans-0.8.2
  - base16-bytestring-0.1.1.7
  - base64-bytestring-1.1.0.0
  - basement-0.0.11
  - bifunctors-5.5.7
  - binary-0.8.8.0
  - bitarray-0.0.1.1
  - blaze-builder-0.4.1.0
  - blaze-html-0.9.1.2
  - blaze-markup-0.8.2.7
  - bytestring-0.10.10.0
  - casa-client-0.0.1
  - casa-types-0.0.1
  - case-insensitive-1.2.1.0
  - cereal-0.5.8.1
  - clock-0.8
  - colour-2.3.5
  - comonad-5.0.6
  - conduit-1.3.2
  - conduit-combinators-1.3.0
  - conduit-extra-1.3.5
  - connection-0.3.1
  - containers-0.6.2.1
  - contravariant-1.5.2
  - cookie-0.4.5
  - cryptohash-sha256-0.11.101.0
  - cryptonite-0.27
  - cryptonite-conduit-0.2.2
  - data-default-class-0.1.2.0
  - deepseq-1.4.4.0
  - digest-0.0.1.2
  - directory-1.3.6.0
  - distributive-0.6.2
  - dlist-0.8.0.8
  - easy-file-0.2.2
  - echo-0.1.3
  - ed25519-0.0.5.0
  - either-5.0.1.1
  - exceptions-0.10.4
  - extra-1.7.4
  - fast-logger-3.0.1
  - file-embed-0.0.13.0
  - filelock-0.1.1.5
  - filepath-1.4.2.1
  - filtrable-0.1.5.0
  - fsnotify-0.3.0.1
  - generic-deriving-1.13.1
  - ghc-boot-th-8.10.1
  - ghc-prim-0.6.1
  - githash-0.1.4.0
  - hackage-security-0.6.0.1
  - hashable-1.3.0.0
  - hfsevents-0.1.6
  - hi-file-parser-0.1.0.0
  - hourglass-0.2.12
  - hpack-0.34.2
  - hpc-0.6.1.0
  - http-api-data-0.4.1.1
  - http-client-0.7.1
  - http-client-tls-0.3.5.3
  - http-conduit-2.3.7.3
  - http-download-0.2.0.0
  - http-types-0.12.3
  - infer-license-0.2.0
  - integer-gmp-1.0.3.0
  - integer-logarithms-1.0.3
  - libyaml-0.1.2
  - lifted-base-0.2.3.12
  - lukko-0.1.1.2
  - megaparsec-8.0.0
  - memory-0.15.0
  - microlens-0.4.11.2
  - microlens-mtl-0.2.0.1
  - microlens-th-0.4.3.5
  - mime-types-0.1.0.9
  - mintty-0.1.2
  - monad-control-1.0.2.3
  - monad-logger-0.3.34
  - monad-loops-0.4.3
  - mono-traversable-1.0.15.1
  - mtl-2.2.2
  - mustache-2.3.1
  - neat-interpolation-0.5.1.1
  - network-3.1.2.0
  - network-uri-2.6.3.0
  - old-locale-1.0.0.7
  - old-time-1.1.0.3
  - open-browser-0.2.1.0
  - optparse-applicative-0.15.1.0
  - optparse-simple-0.1.1.2
  - pantry-0.4.0.2
  - parsec-3.1.14.0
  - parser-combinators-1.2.1
  - path-0.8.0
  - path-io-1.6.0
  - path-pieces-0.2.1
  - pem-0.2.4
  - persistent-2.10.5.2
  - persistent-sqlite-2.10.6.2
  - persistent-template-2.8.2.3
  - pretty-1.1.3.6
  - primitive-0.7.1.0
  - process-1.6.8.2
  - profunctors-5.5.2
  - project-template-0.2.1.0
  - random-1.2.0
  - regex-applicative-0.3.4
  - regex-applicative-text-0.1.0.1
  - resource-pool-0.2.3.2
  - resourcet-1.2.4.2
  - retry-0.8.1.2
  - rio-0.1.18.0
  - rio-orphans-0.1.1.0
  - rio-prettyprint-0.1.1.0
  - rts-1.0
  - safe-0.3.19
  - safe-exceptions-0.1.7.0
  - scientific-0.3.6.2
  - semigroupoids-5.3.4
  - semigroups-0.19.1
  - silently-1.2.5.1
  - socks-0.6.1
  - split-0.2.3.4
  - splitmix-0.1.0.1
  - stm-2.5.0.0
  - stm-chans-3.0.0.4
  - streaming-commons-0.2.2.1
  - syb-0.7.1
  - tagged-0.8.6
  - tar-0.5.1.1
  - tar-conduit-0.3.2
  - template-haskell-2.16.0.0
  - temporary-1.3
  - text-1.2.3.2
  - text-metrics-0.3.0
  - th-abstraction-0.3.2.0
  - th-expand-syns-0.4.6.0
  - th-lift-0.8.1
  - th-lift-instances-0.1.17
  - th-reify-many-0.1.9
  - time-1.9.3
  - time-compat-1.9.3
  - tls-1.5.4
  - transformers-0.5.6.2
  - transformers-base-0.4.5.2
  - transformers-compat-0.6.5
  - typed-process-0.2.6.0
  - unicode-transforms-0.3.6
  - unix-2.7.2.2
  - unix-compat-0.5.2
  - unix-time-0.4.7
  - unliftio-0.2.13
  - unliftio-core-0.2.0.1
  - unordered-containers-0.2.12.0
  - uuid-types-1.0.3
  - vector-0.12.1.2
  - vector-algorithms-0.8.0.3
  - x509-1.7.5
  - x509-store-1.6.7
  - x509-system-1.6.6
  - x509-validation-1.6.11
  - yaml-0.11.4.0
  - zip-archive-0.4.1
  - zlib-0.6.2.2

Warning: this is an unsupported build that may use different versions of
dependencies and GHC than the officially released binaries, and therefore may
not behave identically. If you encounter problems, please try the latest
official build by running 'stack upgrade --force-download'.

2020-11-04 12:06:13.026373: [debug] No project config file found, using defaults.
2020-11-04 12:06:13.037678: [debug] (SQL) SELECT COUNT(*) FROM "last_performed" WHERE ("action"=?) AND ("timestamp">=?); [PersistInt64 1,PersistUTCTime 2020-11-03 11:06:13.037466 UTC]
2020-11-04 12:06:13.039377: [debug] Opening local template: "majjoha/simple.hsfiles"
2020-11-04 12:06:13.039639: [info] Downloading template "majjoha/simple" to create project "test-project" in test-project/ ...
2020-11-04 12:06:13.039782: [debug] Downloading /majjoha/stack-templates/master/simple.hsfiles
2020-11-04 12:06:13.236572: [debug] Opening local template: "/Users/mathias/.stack/templates/majjoha/simple.hsfiles"
2020-11-04 12:06:13.237237: [error] The template "majjoha/simple" is invalid and could not be used. The error was: InvalidInput "404: Not Found"
/Users/mathias/.stack/templates/majjoha/simple.hsfiles: 14.00 B downloaded...

From what I can gather, the issue is that stack new <project-name> <github-username>/<template-name> assumes that the template exists on the master branch (see src/Stack/New.hs#L176:L182).

Is it possible to reference main as the default branch at the moment, and if it isn't, would you consider supporting it?

Thank you for your great work!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions