@@ -11,60 +11,62 @@ import (
1111)
1212
1313type AddTypescriptToReact struct {
14- recipe * util.GenerationRecipe
15- gen core.Generator
14+ composer * util.TaskComposer
15+ runner core.Generator
1616}
1717
18- var _ core.Executor = AddTypescriptToReact {}
18+ var _ core.Generator = AddTypescriptToReact {}
1919
2020func NewAddTypescriptToReact () * AddTypescriptToReact {
21- recipe := util .NewGenerationRecipe ("" ,
22- & util. GenerationMaterial {
21+ composer := util .NewTaskComposer ("" ,
22+ & core. FileDesc {
2323 Path : ".eslintrc.js" ,
24- Provider : func () []byte {
24+ Data : func () []byte {
2525 var buf bytes.Buffer
2626
2727 templates .WriteReactEslintrc (& buf )
2828 return buf .Bytes ()
2929 },
3030 },
31- & util. GenerationMaterial {
31+ & core. FileDesc {
3232 Path : "tsconfig.json" ,
33- Provider : func () []byte {
33+ Data : func () []byte {
3434 var buf bytes.Buffer
3535
3636 templates .WriteReactTsConfig (& buf )
3737 return buf .Bytes ()
3838 },
3939 },
4040 )
41- return & AddTypescriptToReact {recipe : recipe }
41+ composer .AddCommand (& core.Command {
42+ Bin : "npm" ,
43+ Args : []string {"i" , "-D" ,
44+ "@typescript-eslint/eslint-plugin" ,
45+ "@typescript-eslint/parser" ,
46+ "eslint" ,
47+ "eslint-config-airbnb" ,
48+ "eslint-config-prettier" ,
49+ "eslint-import-resolver-typescript" ,
50+ "eslint-plugin-import" ,
51+ "eslint-plugin-jsx-a11y" ,
52+ "eslint-plugin-prettier" ,
53+ "eslint-plugin-react" ,
54+ "eslint-plugin-react-hooks" ,
55+ "prettier" ,
56+ "prettier-eslint" ,
57+ "typescript" ,
58+ },
59+ })
60+ return & AddTypescriptToReact {composer : composer }
4261}
4362
4463func (atr AddTypescriptToReact ) Run () error {
45- cmd := core .NewCmdExecutor ("npm" , "i" , "-D" ,
46- "@typescript-eslint/eslint-plugin" ,
47- "@typescript-eslint/parser" ,
48- "eslint" ,
49- "eslint-config-airbnb" ,
50- "eslint-config-prettier" ,
51- "eslint-import-resolver-typescript" ,
52- "eslint-plugin-import" ,
53- "eslint-plugin-jsx-a11y" ,
54- "eslint-plugin-prettier" ,
55- "eslint-plugin-react" ,
56- "eslint-plugin-react-hooks" ,
57- "prettier" ,
58- "prettier-eslint" ,
59- "typescript" ,
60- )
61-
62- if err := cmd .Run (); err != nil {
63- return errors .Wrap (err , "failed to install dependencies" )
64- }
64+ log .Debugf ("runnereration tree:\n %s" , atr .composer .GetGenerationTree ())
65+ runner := atr .composer .MakeRunner ()
66+ atr .runner = runner
67+ return errors .Wrap (runner .Run (), "failed to runnererate typescript config" )
68+ }
6569
66- log .Debugf ("generation tree:\n %s" , atr .recipe .GetGenerationTree ())
67- gen := atr .recipe .MakeGenerator ()
68- atr .gen = gen
69- return errors .Wrap (gen .Run (), "failed to generate typescript config" )
70+ func (atr AddTypescriptToReact ) Cleanup () error {
71+ return atr .runner .Cleanup ()
7072}
0 commit comments