Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: inject curried runPkgManagerInstall to package installers #202

Merged
merged 6 commits into from
Jul 17, 2022

Conversation

ochicf
Copy link
Contributor

@ochicf ochicf commented Jul 16, 2022

Inject curried runPkgManagerInstall to package installers

  • I reviewed linter warnings + errors, resolved formatting, types and other issues related to my work
  • The PR title follows the convention we established conventional-commit
  • I performed a functional test on my final commit

I noticed that every installer had to call runPkgManagerInstall with a lot of configuration, but IMHO the only configuration they should specify is the packages list. So, this MR adds a curryable version of runPkgManagerInstall that is curried by createProject and injected to every installer as an option. This injected function has been curried with all of the necessary configuration, allowing to clear the call in each installer.

Benefits:

  • cleaner code of each installer
  • adding new options to runPkgManagerInstall will not force adding that parameter in each installer, but instead just once in the createProject.ts helper where it's curried
  • curried options serve only as defaults, so each installer could still override the options if needed

Another small change added here passing the entirety of the options received in installPackages.ts to each package installer, since they share the same shape. This will also prevent from having to pass newly added options here.

@ochicf
Copy link
Contributor Author

ochicf commented Jul 16, 2022

Not sure about the naming convention with currying functions. I've named curryRunPkgManagerInstall because it's the most obvious but maybe you prefer something different?

I've also kept the original runPkgManagerInstall export, though it's not used outside of that module anymore. Maybe it causes confusion?

@nexxeln
Copy link
Member

nexxeln commented Jul 17, 2022

Oh wow this is much cleaner.

Copy link
Member

@juliusmarminge juliusmarminge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good.

I actually had a draft to remove the runPackageManagerInstall entirely and instead add all the packages to package.json and then run a single npm/pnpm/yarn install command at the end, but haven't had time to complete it.

src/installers/prisma.ts Show resolved Hide resolved
src/installers/tailwind.ts Show resolved Hide resolved
@ochicf
Copy link
Contributor Author

ochicf commented Jul 17, 2022

Just noticed in another branch that some installs were actually passing devMode and I missed them in the refactor. Fixed in latest commit and tested.

Copy link
Member

@juliusmarminge juliusmarminge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found a typo

Partial<CurryRunPkgManagerInstallOptions> &
Omit<RunPkgManagerInstallOptions, keyof CurryRunPkgManagerInstallOptions>;

export const curryRunPckgManagerInstall = (
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
export const curryRunPckgManagerInstall = (
export const curryRunPkgManagerInstall = (

export const curryRunPckgManagerInstall = (
baseOptions: CurryRunPkgManagerInstallOptions,
) => {
const curriedRunPckgManagerInstall = async (
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const curriedRunPckgManagerInstall = async (
const curriedRunPkgManagerInstall = async (

...options,
});

return curriedRunPckgManagerInstall;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return curriedRunPckgManagerInstall;
return curriedRunPkgManagerInstall;

@@ -18,12 +19,30 @@ export const createProject = async ({
}: CreateProjectOptions) => {
const pkgManager = getUserPkgManager();
const projectDir = path.resolve(process.cwd(), projectName);
const runPkgManagerInstall = curryRunPckgManagerInstall({
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const runPkgManagerInstall = curryRunPckgManagerInstall({
const runPkgManagerInstall = curryRunPkgManagerInstall({

@@ -1,6 +1,7 @@
import type { PkgInstallerMap } from "../installers/index.js";
import path from "path";
import { getUserPkgManager } from "../utils/getUserPkgManager.js";
import { curryRunPckgManagerInstall } from "../utils/runPkgManagerInstall.js";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
import { curryRunPckgManagerInstall } from "../utils/runPkgManagerInstall.js";
import { curryRunPkgManagerInstall } from "../utils/runPkgManagerInstall.js";

@ochicf
Copy link
Contributor Author

ochicf commented Jul 17, 2022

Oh sorry just after I pushed I saw that there was the commit suggestion option 🤦‍♂️ Never saw that before, will use next time.

@juliusmarminge juliusmarminge merged commit 4d7a3d0 into t3-oss:main Jul 17, 2022
@ochicf ochicf deleted the refactor/curry-package-install branch July 17, 2022 18:51
juliusmarminge added a commit that referenced this pull request Aug 16, 2022
* chore(docs): updated readme to contain @next

* refactor: inject curried `runPkgManagerInstall` to package installers (#202)

* refactor: export curryable `runPkgManagerInstallOptions`

* refactor: inject curried `runPkgManagerInstall` to installers

* refactor: use curried function in installers

* fix: refactored calls that should have passed `devMode` flag

* fix: typo

* feat: migrate env + next config to esm (#205)

* chore: move lintstaged config into file (#217)

* fix: move gitignore rename call (#215)

* feat: add trpc inference helpers

* fix(#218): lock react-query to v3

* chore(release): 5.1.0

* fix: add missing trpc import

* chore(release): 5.1.1

* fix: handle pkg with version in noInstall mode (#220)

* fix: typo in readme

* feat: add db.sqlite-journal to gitignore (#221)

Co-authored-by: Shoubhit Dash <[email protected]>

* fix: typo - rename 'varibles' to 'variables' (#223)

* fix: missing DATABASE_URL (#222)

* chore(release): 5.2.0

* fix: update url in auth prisma schema

* chore(release): 5.2.1

* feat: add typesafe client side env variables (#209)

* feat: add typesafe client side env variables

* refactor: clean up type-safe client side env vars

* fix: add inferProcedureInput/Output imports in trpc utils

* refactor: client env validation

* refactor: run prettier

* refactor: clean up files and formatter func

* fix: validate public env vars are not in server schema

* fix: add ts-check to mjs files

Co-authored-by: Shoubhit Dash <[email protected]>

* fix: title being offset when using yarn/pnpm

* chore(release): bump beta version

* chore: bump Next.js to 12.2.3

* chore(release): bump beta version

* feat: improved logo typography (#238)

* chore: bump beta version

* fix: remove semicolon in _app.tsx with next-auth to avoid early return

* chore: bump beta version

* chore: add protected trpc router example (#194)

* chore: add link to community (#229)

* chore: add link to community info

* chore: add discord badge

* fix: t3 discord id

* fix: discord link on badge

Co-authored-by: Shoubhit Dash <[email protected]>

* docs(readme): add usage for beta and next version (#243)

* chore: add js files to format script (#244)

* chore: remove credentials provider (#246)

* refactor(cli): add module path aliasing (#247)

* feat: updating tailwind and postcss config's to use .cjs (#242)

Co-authored-by: Shoubhit Dash <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* fix: clarify some comments and rename some files in env (#245)

* fix: clarify some comments and rename some files in env

* fix: filenames in installer

* fix: import in next.config

* fix: import after filechange

* fix: forgotten rename

Co-authored-by: Shoubhit Dash <[email protected]>

* chore(release): bump beta version

* fix: added JSDoc type to clientEnv in all env-schema (#240)

* chore(release): 5.3.0

* refactor(utils): remove unnecessary block (#252)

* chore: update favicon (#253)

* fix: missing next-auth types (#255)

fixes #254

* fix: height on small screens (#256)

* docs: expand t3-app README (#248)

* revert: extend regular next-auth module (#257)

* revert: extend regular next-auth module

* refactor: move typedefs to `src/types`

Co-authored-by: Shoubhit Dash <[email protected]>

* feat: add deployment strategy to generated README (#258)

* fix(docs): remove extra s in link

* feat: add deployment strategy to readme

* docs: add instructions on building docker image to readme (#265)

* Add instructions on building docker image

Following the same method given in NextJs examples

* fix: prettier check

run prettier format to fix formatting issues

* docs: small adjustments (#266)

* docs: add instructions on building docker image to readme (#265)

* Add instructions on building docker image

Following the same method given in NextJs examples

* fix: prettier check

run prettier format to fix formatting issues

* docs: small adjustments

* feat: set appName to directory on 'npx create-t3-app .' (#273)

* fix(prisma): make db changes for next-auth on mysql obvious (#275)

* chore(release): 5.4.0

* feat: make session.user.id non-nullable (#282)

* chore(release): 5.5.0

* docs: update tRPC v10 docs link (#291)

* fix: change ! reversion to equality in env validation (#293)

* feat: Include ct3a version as metadata in generated app (#305)

* fix: parse path returned from process.cwd() before using it (#303)

Co-authored-by: Shoubhit Dash <[email protected]>
Co-authored-by: Julius Marminge <[email protected]>

* chore(release): 5.6.0

* chore: upload T3 logo to github (#311)

* chore: upload T3 logo to github

* chore: format

* chore: ignore package-lock (#315)

* chore: Publish Workflow and other Github enhancements (#308)

* chore: switch standard-version to changeset

* chore: add version workflow

* chore: issue forms and pr labeler

* chore: prettier

* chore: add missing credit

* chore: adjust some commands

* chore: update contributing guidelines

* chore: prettier

* chore: adjustments

* feat: add minimal ts-linter

* fix: lint warnings

* revert eslinter

* chore(ci): dont use reserved word `package`

* chore(ci): require -> import

* chore(ci): authenticate to npm

* chore: update pr-template

* chore(ci): next-release

* chore(ci): release workflow

* chore(ci): update scrips

* chore(ci): update release versioning

* chore(ci): update versioning scripts

* chore(ci): fix no-bin error

* feat: add base tslint (#317)

* chore(app): version bumps

* feat: add base linter for ts

* fix: test ignoring base

* fix: test setting root

* fix: test add parser

* fix: test disabling exclude

* chore: changeset

* chore(ci): test changeset with npx

* chore(ci): test npm

* chore(ci): give proper commit message and title

* chore(release): remove standard-version msg from changelog

* chore(release): version packages (#319)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore(release): public access

* refactor: turborepo with cli and www (#320)

* docs: add docs site built with Astro (#300)

* docs: add docs site built with Astro

* docs: prettier

Co-authored-by: Shoubhit Dash <[email protected]>

* refactor: make monorepo

* chore(fix): tailwindcss/typography peer deps

* refactor: docusaurus migration

* docs: styling

* fix: linting

* fix: typecheck

* fix: no typecheck www

* fix: restore tsconfig

* fix(ci): cache all node_modules

* fix: more caching

* fix: missing lint plugin

* fix(ci): cwd

* fix(ci): path

* docs: start on collection

* docs: headers

Co-authored-by: Kroucher <[email protected]>
Co-authored-by: Shoubhit Dash <[email protected]>
Co-authored-by: sir-mr-bean <[email protected]>

* chore: set type module

* fix: typo in pub-script

* fix: create npmrc in cli pkg

* fix: path in version script

* refactor: turborepo next

Co-authored-by: Oscar Chic <[email protected]>
Co-authored-by: Daniel Roe <[email protected]>
Co-authored-by: JLN13X <[email protected]>
Co-authored-by: Hauke Schnau <[email protected]>
Co-authored-by: Azmi Makarima <[email protected]>
Co-authored-by: Christopher Ehrlich <[email protected]>
Co-authored-by: Shoubhit Dash <[email protected]>
Co-authored-by: Nicholas Ramkissoon <[email protected]>
Co-authored-by: Vikrant Bhat <[email protected]>
Co-authored-by: Guillermo Antony Cava Nuñez <[email protected]>
Co-authored-by: Abui <[email protected]>
Co-authored-by: John Daly <[email protected]>
Co-authored-by: Simon Green Kristensen <[email protected]>
Co-authored-by: XLS <[email protected]>
Co-authored-by: Omar López <[email protected]>
Co-authored-by: Krish <[email protected]>
Co-authored-by: cyremur <[email protected]>
Co-authored-by: Samuel Gunter <[email protected]>
Co-authored-by: Khalil Omer <[email protected]>
Co-authored-by: BWsix <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kroucher <[email protected]>
Co-authored-by: sir-mr-bean <[email protected]>
devvianto605 pushed a commit to devvianto605/create-devviantex-nextjs-app-deprecated that referenced this pull request Jun 9, 2024
…t3-oss#202)

* refactor: export curryable `runPkgManagerInstallOptions`

* refactor: inject curried `runPkgManagerInstall` to installers

* refactor: use curried function in installers

* fix: refactored calls that should have passed `devMode` flag

* fix: typo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants