@khester/create-dynamics-app 1.1.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -0
- package/dist/artifacts/registry.d.ts +18 -0
- package/dist/artifacts/registry.d.ts.map +1 -0
- package/dist/artifacts/registry.js +340 -0
- package/dist/artifacts/registry.js.map +1 -0
- package/dist/artifacts/types.d.ts +122 -0
- package/dist/artifacts/types.d.ts.map +1 -0
- package/dist/artifacts/types.js +7 -0
- package/dist/artifacts/types.js.map +1 -0
- package/dist/artifacts/validators.d.ts +16 -0
- package/dist/artifacts/validators.d.ts.map +1 -0
- package/dist/artifacts/validators.js +45 -0
- package/dist/artifacts/validators.js.map +1 -0
- package/dist/fromDesign.d.ts +5 -0
- package/dist/fromDesign.d.ts.map +1 -0
- package/dist/fromDesign.js +98 -0
- package/dist/fromDesign.js.map +1 -0
- package/dist/index.js +129 -177
- package/dist/index.js.map +1 -1
- package/dist/injectDevTools.d.ts +28 -0
- package/dist/injectDevTools.d.ts.map +1 -0
- package/dist/injectDevTools.js +148 -0
- package/dist/injectDevTools.js.map +1 -0
- package/dist/scaffold.d.ts +48 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +180 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/templatePlan.d.ts +3 -0
- package/dist/templatePlan.d.ts.map +1 -0
- package/dist/templatePlan.js +43 -0
- package/dist/templatePlan.js.map +1 -0
- package/dist/utils/copyTemplate.d.ts +13 -1
- package/dist/utils/copyTemplate.d.ts.map +1 -1
- package/dist/utils/copyTemplate.js +98 -4
- package/dist/utils/copyTemplate.js.map +1 -1
- package/dist/utils/updatePackageJson.d.ts +11 -1
- package/dist/utils/updatePackageJson.d.ts.map +1 -1
- package/dist/utils/updatePackageJson.js +12 -10
- package/dist/utils/updatePackageJson.js.map +1 -1
- package/package.json +10 -7
- package/templates/_shared/dev-tools/auth/get-token.js +72 -0
- package/templates/_shared/dev-tools/dev/mock-xrm.js +42 -0
- package/templates/_shared/dev-tools/metadata-sync/index.js +152 -0
- package/templates/_shared/dev-tools/smoke/test-retrieve.js +44 -0
- package/templates/dialog-form/README.md +27 -0
- package/templates/dialog-form/_variants/App.v8.tsx +39 -0
- package/templates/dialog-form/_variants/App.v9.tsx +41 -0
- package/templates/dialog-form/gitignore +5 -0
- package/templates/dialog-form/package.json +27 -0
- package/templates/dialog-form/public/index.html +11 -0
- package/templates/dialog-form/src/index.tsx +10 -0
- package/templates/dialog-form/src/services/dataverse.ts +30 -0
- package/templates/dialog-form/tsconfig.json +15 -0
- package/templates/dialog-form/webpack.config.js +17 -0
- package/templates/grid-customizer/README.md +28 -0
- package/templates/grid-customizer/gitignore +4 -0
- package/templates/grid-customizer/package.json +25 -0
- package/templates/grid-customizer/src/GridCustomizer.ts +28 -0
- package/templates/grid-customizer/src/cell-renderers.tsx +35 -0
- package/templates/grid-customizer/src/index.ts +4 -0
- package/templates/grid-customizer/src/types/grid-types.ts +30 -0
- package/templates/grid-customizer/src/utils/color-utils.ts +24 -0
- package/templates/grid-customizer/tsconfig.json +15 -0
- package/templates/grid-customizer/webpack.config.js +17 -0
- package/templates/pcf-dataset/ControlManifest.Input.xml +16 -0
- package/templates/pcf-dataset/README.md +21 -0
- package/templates/pcf-dataset/gitignore +5 -0
- package/templates/pcf-dataset/index.ts +39 -0
- package/templates/pcf-dataset/package.json +30 -0
- package/templates/pcf-dataset/strings/{{componentName}}.1033.resx +47 -0
- package/templates/pcf-dataset/tsconfig.json +8 -0
- package/templates/pcf-dataset/{{componentName}}Component.tsx +39 -0
- package/templates/pcf-field/ControlManifest.Input.xml +17 -0
- package/templates/pcf-field/README.md +95 -0
- package/templates/pcf-field/_variants/ValueInput.boolean.tsx +24 -0
- package/templates/pcf-field/_variants/ValueInput.date.tsx +27 -0
- package/templates/pcf-field/_variants/ValueInput.number.tsx +35 -0
- package/templates/pcf-field/_variants/ValueInput.text.tsx +27 -0
- package/templates/pcf-field/gitignore +5 -0
- package/templates/pcf-field/index.ts +61 -0
- package/templates/pcf-field/package.json +30 -0
- package/templates/pcf-field/strings/{{componentName}}.1033.resx +47 -0
- package/templates/pcf-field/tsconfig.json +8 -0
- package/templates/pcf-field/{{componentName}}Component.tsx +35 -0
- package/templates/power-pages-starter/gitignore +5 -0
- package/templates/react-custom-page/gitignore +5 -0
- package/templates/{dynamics-365-starter → react-custom-page}/package.json +3 -3
- package/templates/react-custom-page/tools/metadata-sync/index.js +152 -0
- package/templates/static-web-app/README.md +36 -0
- package/templates/static-web-app/_variants/App.v8.tsx +32 -0
- package/templates/static-web-app/_variants/App.v9.tsx +31 -0
- package/templates/static-web-app/api/host.json +12 -0
- package/templates/static-web-app/api/package.json +19 -0
- package/templates/static-web-app/api/src/functions/hello.ts +16 -0
- package/templates/static-web-app/api/tsconfig.json +14 -0
- package/templates/static-web-app/frontend/index.html +12 -0
- package/templates/static-web-app/frontend/package.json +23 -0
- package/templates/static-web-app/frontend/src/index.tsx +8 -0
- package/templates/static-web-app/frontend/tsconfig.json +16 -0
- package/templates/static-web-app/frontend/vite.config.ts +13 -0
- package/templates/static-web-app/gitignore +8 -0
- package/templates/static-web-app/package.json +15 -0
- package/templates/static-web-app/staticwebapp.config.json +7 -0
- package/templates/teams-app/README.md +27 -0
- package/templates/teams-app/_variants/graph.off.ts +7 -0
- package/templates/teams-app/_variants/graph.on.ts +22 -0
- package/templates/teams-app/appPackage/manifest.json +26 -0
- package/templates/teams-app/gitignore +5 -0
- package/templates/teams-app/index.html +12 -0
- package/templates/teams-app/package.json +26 -0
- package/templates/teams-app/src/App.tsx +25 -0
- package/templates/teams-app/src/index.tsx +8 -0
- package/templates/teams-app/tsconfig.json +16 -0
- package/templates/teams-app/vite.config.ts +9 -0
- package/templates/web-resource/README.md +39 -0
- package/templates/web-resource/_variants/App.v8.tsx +29 -0
- package/templates/web-resource/_variants/App.v9.tsx +28 -0
- package/templates/web-resource/gitignore +5 -0
- package/templates/web-resource/package.json +27 -0
- package/templates/web-resource/public/index.html +11 -0
- package/templates/web-resource/src/index.tsx +10 -0
- package/templates/web-resource/src/services/dataverse.ts +30 -0
- package/templates/web-resource/tsconfig.json +15 -0
- package/templates/web-resource/webpack.config.js +17 -0
- package/dist/utils/consultingHelpers.d.ts +0 -13
- package/dist/utils/consultingHelpers.d.ts.map +0 -1
- package/dist/utils/consultingHelpers.js +0 -569
- package/dist/utils/consultingHelpers.js.map +0 -1
- package/templates/dynamics-365-starter/INTEGRATION_TEST_RESULTS.md +0 -302
- package/templates/dynamics-365-starter/PHASE_4_COMPLETION_SUMMARY.md +0 -305
- package/templates/dynamics-365-starter/deployment/QUICKSTART-MAC.md +0 -507
- package/templates/dynamics-365-starter/deployment/QUICKSTART-WINDOWS.md +0 -372
- package/templates/dynamics-365-starter/deployment/pipelines/README.md +0 -375
- package/templates/dynamics-365-starter/deployment/pipelines/azure-pipelines.yml +0 -330
- package/templates/dynamics-365-starter/deployment/pipelines/github-actions.yml +0 -422
- package/templates/dynamics-365-starter/deployment/pipelines/jenkins.groovy +0 -636
- package/templates/dynamics-365-starter/deployment/scripts/deploy.ps1 +0 -417
- package/templates/dynamics-365-starter/deployment/scripts/deploy.sh +0 -582
- package/templates/dynamics-365-starter/deployment/scripts/team-onboarding.ps1 +0 -486
- package/templates/dynamics-365-starter/deployment/scripts/team-onboarding.sh +0 -567
- package/templates/dynamics-365-starter/deployment/scripts/validate-setup.ps1 +0 -703
- package/templates/dynamics-365-starter/deployment/scripts/validate-setup.sh +0 -671
- package/templates/dynamics-365-starter/docs/team-standards/README.md +0 -273
- package/templates/dynamics-365-starter/docs/team-standards/client-onboarding.md +0 -577
- package/templates/dynamics-365-starter/docs/team-standards/code-review-checklist.md +0 -359
- package/templates/dynamics-365-starter/docs/team-standards/coding-standards.md +0 -700
- package/templates/dynamics-365-starter/docs/team-standards/cross-platform-team-guide.md +0 -736
- package/templates/dynamics-365-starter/docs/team-standards/development-workflows.md +0 -727
- package/templates/dynamics-365-starter/docs/troubleshooting/common-errors.md +0 -758
- package/templates/dynamics-365-starter/docs/troubleshooting/platform-specific-issues.md +0 -878
- package/templates/dynamics-365-starter/src/client-project-template/README.md +0 -234
- package/templates/dynamics-365-starter/src/client-project-template/config/client.template.json +0 -114
- package/templates/dynamics-365-starter/src/client-project-template/config/environments/template.json +0 -186
- package/templates/dynamics-365-starter/src/client-project-template/scripts/client-setup.js +0 -667
- package/templates/dynamics-365-starter/src/examples/README.md +0 -52
- package/templates/dynamics-365-starter/src/examples/component-examples/opportunity-management.tsx +0 -625
- package/templates/dynamics-365-starter/src/examples/entity-examples/opportunity-model.ts +0 -545
- package/templates/dynamics-365-starter/src/examples/integration-examples/custom-pcf-wrapper.tsx +0 -722
- package/templates/dynamics-365-starter/src/examples/workflow-examples/sales-workflow.ts +0 -662
- package/templates/dynamics-365-starter/src/page-templates/EntityDashboard.tsx +0 -519
- package/templates/dynamics-365-starter/src/page-templates/EntityDetailPage.tsx +0 -456
- package/templates/dynamics-365-starter/src/page-templates/EntityListPage.tsx +0 -406
- package/templates/dynamics-365-starter/src/page-templates/RelatedEntitiesPage.tsx +0 -578
- package/templates/dynamics-365-starter/src/page-templates/SearchPage.tsx +0 -629
- package/templates/dynamics-365-starter/tools/entity-generator/index.js +0 -168
- package/templates/dynamics-365-starter/tools/entity-generator/templates/constants.template.ts +0 -124
- package/templates/dynamics-365-starter/tools/entity-generator/templates/form.template.css +0 -283
- package/templates/dynamics-365-starter/tools/entity-generator/templates/form.template.tsx +0 -275
- package/templates/dynamics-365-starter/tools/entity-generator/templates/management.template.css +0 -204
- package/templates/dynamics-365-starter/tools/entity-generator/templates/management.template.tsx +0 -413
- package/templates/dynamics-365-starter/tools/entity-generator/templates/model.template.ts +0 -250
- package/templates/dynamics-365-starter/tools/metadata-sync/d365-client.js +0 -410
- package/templates/dynamics-365-starter/tools/metadata-sync/index.js +0 -512
- package/templates/dynamics-365-starter/tools/metadata-sync/type-generator.js +0 -675
- /package/templates/{dynamics-365-starter → react-custom-page}/README.md +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/deployment/README.md +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/docs/BEST_PRACTICES.md +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/docs/MIGRATION_GUIDE.md +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/public/index.html +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/scripts/custom-build.js +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/AccountForm.css +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/AccountForm.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/AccountManagement.css +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/AccountManagement.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/ContactForm.css +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/ContactForm.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/ContactManagement.css +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/ContactManagement.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LogDialog.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LoggingContext.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LoggingDebugPanel.css +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LoggingDebugPanel.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LoggingProvider.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/logger.ts +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/constants/account.ts +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/constants/contact.ts +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/index.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/models/Account.ts +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/models/BaseEntity.ts +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/models/Contact.ts +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/pcf/ContactControlWrapper.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/pcf/MultiEntityControlWrapper.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/providers/DynamicsProvider.tsx +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/services/MockApiService.ts +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/services/ServiceFactory.ts +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/services/XrmApiService.ts +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/src/styles/index.css +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/tsconfig.json +0 -0
- /package/templates/{dynamics-365-starter → react-custom-page}/webpack.config.js +0 -0
|
@@ -1,727 +0,0 @@
|
|
|
1
|
-
# Development Workflows for Mixed Teams
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
This document defines standardized development workflows for teams using both Windows and Mac
|
|
6
|
-
platforms, ensuring consistent processes and deliverables regardless of the developer's operating
|
|
7
|
-
system.
|
|
8
|
-
|
|
9
|
-
## Table of Contents
|
|
10
|
-
|
|
11
|
-
1. [Daily Development Workflow](#daily-development-workflow)
|
|
12
|
-
2. [Feature Development Process](#feature-development-process)
|
|
13
|
-
3. [Code Review Standards](#code-review-standards)
|
|
14
|
-
4. [Testing Workflows](#testing-workflows)
|
|
15
|
-
5. [Deployment Procedures](#deployment-procedures)
|
|
16
|
-
6. [Emergency Response](#emergency-response)
|
|
17
|
-
7. [Platform-Specific Considerations](#platform-specific-considerations)
|
|
18
|
-
|
|
19
|
-
## Daily Development Workflow
|
|
20
|
-
|
|
21
|
-
### 🌅 Morning Routine (All Platforms)
|
|
22
|
-
|
|
23
|
-
#### 1. Environment Sync
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
# All platforms - same commands
|
|
27
|
-
git pull origin develop
|
|
28
|
-
npm install # In case dependencies changed
|
|
29
|
-
npm run build:dev # Ensure clean build
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
#### 2. Platform-Specific Health Check
|
|
33
|
-
|
|
34
|
-
**Windows Developers:**
|
|
35
|
-
|
|
36
|
-
```powershell
|
|
37
|
-
# Daily environment validation
|
|
38
|
-
.\deployment\scripts\validate-setup.ps1 -Quiet
|
|
39
|
-
|
|
40
|
-
# Check for PowerShell module updates
|
|
41
|
-
Get-Module Microsoft.PowerApps* -ListAvailable | Format-Table Name, Version
|
|
42
|
-
|
|
43
|
-
# Test deployment connection
|
|
44
|
-
.\deployment\scripts\test-connection.ps1 -Environment dev
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Mac Developers:**
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
# Daily environment validation
|
|
51
|
-
./deployment/scripts/validate-setup.sh --quiet
|
|
52
|
-
|
|
53
|
-
# Check for tool updates
|
|
54
|
-
brew outdated
|
|
55
|
-
|
|
56
|
-
# Test deployment connection
|
|
57
|
-
./deployment/scripts/test-connection.sh dev
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### 🔄 Development Loop
|
|
61
|
-
|
|
62
|
-
#### 1. Start Development Session
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
# All platforms - same workflow
|
|
66
|
-
git checkout develop
|
|
67
|
-
git pull origin develop
|
|
68
|
-
git checkout -b feature/your-feature-name
|
|
69
|
-
|
|
70
|
-
# Start development server
|
|
71
|
-
npm run dev
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
#### 2. Iterative Development
|
|
75
|
-
|
|
76
|
-
**Code → Test → Commit Cycle:**
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
# Make changes to code
|
|
80
|
-
code src/components/YourComponent.tsx
|
|
81
|
-
|
|
82
|
-
# Run quality checks (same on all platforms)
|
|
83
|
-
npm run lint
|
|
84
|
-
npm run typecheck
|
|
85
|
-
npm run test
|
|
86
|
-
|
|
87
|
-
# Commit changes
|
|
88
|
-
git add .
|
|
89
|
-
git commit -m "feat(component): add new feature functionality"
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
#### 3. Platform Testing
|
|
93
|
-
|
|
94
|
-
Before pushing changes, test on your platform:
|
|
95
|
-
|
|
96
|
-
**Windows:**
|
|
97
|
-
|
|
98
|
-
```powershell
|
|
99
|
-
# Build and test locally
|
|
100
|
-
npm run build:dev
|
|
101
|
-
.\deployment\scripts\deploy.ps1 -Environment dev -DryRun
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
**Mac:**
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
# Build and test locally
|
|
108
|
-
npm run build:dev
|
|
109
|
-
./deployment/scripts/deploy.sh dev --dry-run
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### 🌆 End-of-Day Routine
|
|
113
|
-
|
|
114
|
-
#### Push Changes
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
# Final quality check
|
|
118
|
-
npm run quality
|
|
119
|
-
|
|
120
|
-
# Push to remote
|
|
121
|
-
git push origin feature/your-feature-name
|
|
122
|
-
|
|
123
|
-
# Create draft PR for tomorrow's review
|
|
124
|
-
gh pr create --draft --title "WIP: Your feature description"
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
#### Status Update
|
|
128
|
-
|
|
129
|
-
Update team on platform-specific findings:
|
|
130
|
-
|
|
131
|
-
- Any Windows-specific issues encountered
|
|
132
|
-
- Mac-specific optimizations discovered
|
|
133
|
-
- Cross-platform compatibility notes
|
|
134
|
-
|
|
135
|
-
## Feature Development Process
|
|
136
|
-
|
|
137
|
-
### 🚀 Feature Kickoff
|
|
138
|
-
|
|
139
|
-
#### 1. Architecture Discussion
|
|
140
|
-
|
|
141
|
-
**Cross-Platform Considerations:**
|
|
142
|
-
|
|
143
|
-
- Will this feature require platform-specific deployment steps?
|
|
144
|
-
- Are there any Windows vs Mac development tool differences?
|
|
145
|
-
- Do we need to update both .ps1 and .sh scripts?
|
|
146
|
-
- Are there platform-specific testing requirements?
|
|
147
|
-
|
|
148
|
-
#### 2. Technical Design
|
|
149
|
-
|
|
150
|
-
**Platform Impact Assessment:**
|
|
151
|
-
|
|
152
|
-
```markdown
|
|
153
|
-
## Platform Compatibility Checklist
|
|
154
|
-
|
|
155
|
-
### Development Impact
|
|
156
|
-
|
|
157
|
-
- [ ] Requires new development tools or dependencies
|
|
158
|
-
- [ ] Uses file system operations (ensure cross-platform paths)
|
|
159
|
-
- [ ] Modifies build or deployment processes
|
|
160
|
-
- [ ] Adds new environment variables or configuration
|
|
161
|
-
|
|
162
|
-
### Testing Impact
|
|
163
|
-
|
|
164
|
-
- [ ] Platform-specific testing scenarios
|
|
165
|
-
- [ ] Cross-platform validation requirements
|
|
166
|
-
- [ ] Performance differences between platforms
|
|
167
|
-
- [ ] UI/UX variations between platforms
|
|
168
|
-
|
|
169
|
-
### Documentation Impact
|
|
170
|
-
|
|
171
|
-
- [ ] Updates to Windows quick start guide
|
|
172
|
-
- [ ] Updates to Mac quick start guide
|
|
173
|
-
- [ ] New troubleshooting scenarios
|
|
174
|
-
- [ ] Changes to team workflows
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### 🏗️ Implementation Phase
|
|
178
|
-
|
|
179
|
-
#### 1. Development Standards
|
|
180
|
-
|
|
181
|
-
**File Path Handling:**
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
// ❌ Wrong - platform-specific
|
|
185
|
-
const configPath =
|
|
186
|
-
process.platform === 'win32' ? 'config\\environments\\dev.json' : 'config/environments/dev.json';
|
|
187
|
-
|
|
188
|
-
// ✅ Correct - cross-platform
|
|
189
|
-
import path from 'path';
|
|
190
|
-
const configPath = path.join('config', 'environments', 'dev.json');
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
**Environment Variables:**
|
|
194
|
-
|
|
195
|
-
```typescript
|
|
196
|
-
// ✅ Platform-agnostic configuration
|
|
197
|
-
const config = {
|
|
198
|
-
apiUrl: process.env.D365_API_URL || 'https://default.api.url',
|
|
199
|
-
clientId: process.env.D365_CLIENT_ID,
|
|
200
|
-
environment: process.env.NODE_ENV || 'development',
|
|
201
|
-
};
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
#### 2. Cross-Platform Testing
|
|
205
|
-
|
|
206
|
-
**During Development:**
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
# Test build on your platform
|
|
210
|
-
npm run build:dev
|
|
211
|
-
|
|
212
|
-
# Test key functionality
|
|
213
|
-
npm run test:integration
|
|
214
|
-
|
|
215
|
-
# Validate deployment preparation
|
|
216
|
-
npm run deploy:dev --dry-run
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
**Before PR Submission:**
|
|
220
|
-
|
|
221
|
-
- ✅ Code builds successfully on your platform
|
|
222
|
-
- ✅ All tests pass locally
|
|
223
|
-
- ✅ Deployment dry-run succeeds
|
|
224
|
-
- ✅ Documentation updated for any platform-specific changes
|
|
225
|
-
|
|
226
|
-
### 🔄 Feature Integration
|
|
227
|
-
|
|
228
|
-
#### 1. Pull Request Creation
|
|
229
|
-
|
|
230
|
-
**PR Template for Cross-Platform Features:**
|
|
231
|
-
|
|
232
|
-
```markdown
|
|
233
|
-
## Description
|
|
234
|
-
|
|
235
|
-
[Feature description]
|
|
236
|
-
|
|
237
|
-
## Cross-Platform Testing
|
|
238
|
-
|
|
239
|
-
- [ ] Tested on Windows (PowerShell deployment)
|
|
240
|
-
- [ ] Tested on Mac (Bash deployment)
|
|
241
|
-
- [ ] CI/CD pipeline passes on both platforms
|
|
242
|
-
- [ ] Documentation updated for both platforms
|
|
243
|
-
|
|
244
|
-
## Platform-Specific Changes
|
|
245
|
-
|
|
246
|
-
- [ ] Updated .ps1 scripts (if applicable)
|
|
247
|
-
- [ ] Updated .sh scripts (if applicable)
|
|
248
|
-
- [ ] Updated Windows quick start guide
|
|
249
|
-
- [ ] Updated Mac quick start guide
|
|
250
|
-
|
|
251
|
-
## Deployment Impact
|
|
252
|
-
|
|
253
|
-
- [ ] No changes to deployment process
|
|
254
|
-
- [ ] Minor deployment changes (documented)
|
|
255
|
-
- [ ] Major deployment changes (team approval required)
|
|
256
|
-
|
|
257
|
-
## Screenshots/Videos
|
|
258
|
-
|
|
259
|
-
[Include platform-specific screenshots if UI changes]
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
#### 2. Review Assignment
|
|
263
|
-
|
|
264
|
-
**Automatic Reviewer Assignment:**
|
|
265
|
-
|
|
266
|
-
- At least one Windows developer
|
|
267
|
-
- At least one Mac developer
|
|
268
|
-
- Technical lead or senior developer
|
|
269
|
-
- DevOps engineer (if deployment changes)
|
|
270
|
-
|
|
271
|
-
## Code Review Standards
|
|
272
|
-
|
|
273
|
-
### 🔍 Cross-Platform Review Checklist
|
|
274
|
-
|
|
275
|
-
#### General Code Quality
|
|
276
|
-
|
|
277
|
-
- [ ] **TypeScript compliance** - Strict mode, proper typing
|
|
278
|
-
- [ ] **Code style** - ESLint and Prettier compliance
|
|
279
|
-
- [ ] **Error handling** - Comprehensive error scenarios
|
|
280
|
-
- [ ] **Testing** - Unit tests and integration tests
|
|
281
|
-
- [ ] **Documentation** - Code comments and README updates
|
|
282
|
-
|
|
283
|
-
#### Platform Compatibility
|
|
284
|
-
|
|
285
|
-
- [ ] **File paths** - Uses path.join() instead of hardcoded separators
|
|
286
|
-
- [ ] **Environment variables** - No platform-specific assumptions
|
|
287
|
-
- [ ] **Command execution** - Cross-platform compatible if applicable
|
|
288
|
-
- [ ] **Dependencies** - Available on both Windows and Mac
|
|
289
|
-
- [ ] **Build process** - Identical results on both platforms
|
|
290
|
-
|
|
291
|
-
#### Deployment Scripts
|
|
292
|
-
|
|
293
|
-
- [ ] **PowerShell (.ps1)** - Updated if deployment changes
|
|
294
|
-
- [ ] **Bash (.sh)** - Updated if deployment changes
|
|
295
|
-
- [ ] **Error handling** - Platform-appropriate error messages
|
|
296
|
-
- [ ] **Parameter compatibility** - Same functionality, different syntax
|
|
297
|
-
- [ ] **Validation** - Both scripts produce identical results
|
|
298
|
-
|
|
299
|
-
### 👀 Review Process
|
|
300
|
-
|
|
301
|
-
#### 1. Technical Review
|
|
302
|
-
|
|
303
|
-
**Windows Reviewer Responsibilities:**
|
|
304
|
-
|
|
305
|
-
- Validate PowerShell scripts and Windows-specific paths
|
|
306
|
-
- Test on Windows development environment
|
|
307
|
-
- Verify Windows deployment procedures work
|
|
308
|
-
- Check Windows-specific documentation accuracy
|
|
309
|
-
|
|
310
|
-
**Mac Reviewer Responsibilities:**
|
|
311
|
-
|
|
312
|
-
- Validate Bash scripts and Unix-style paths
|
|
313
|
-
- Test on Mac development environment
|
|
314
|
-
- Verify Mac deployment procedures work
|
|
315
|
-
- Check Mac-specific documentation accuracy
|
|
316
|
-
|
|
317
|
-
#### 2. Cross-Platform Validation
|
|
318
|
-
|
|
319
|
-
**Required Checks:**
|
|
320
|
-
|
|
321
|
-
```bash
|
|
322
|
-
# Reviewer tests (adapt commands to their platform)
|
|
323
|
-
git checkout feature/branch-name
|
|
324
|
-
npm install
|
|
325
|
-
npm run build:dev
|
|
326
|
-
npm run quality
|
|
327
|
-
npm run deploy:dev --dry-run
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
**Validation Questions:**
|
|
331
|
-
|
|
332
|
-
- Does the feature work identically on both platforms?
|
|
333
|
-
- Are error messages appropriate for each platform?
|
|
334
|
-
- Do deployment results match across platforms?
|
|
335
|
-
- Is documentation accurate for both setups?
|
|
336
|
-
|
|
337
|
-
#### 3. Approval Process
|
|
338
|
-
|
|
339
|
-
**Approval Requirements:**
|
|
340
|
-
|
|
341
|
-
- ✅ **Technical approval** from Windows developer
|
|
342
|
-
- ✅ **Technical approval** from Mac developer
|
|
343
|
-
- ✅ **CI/CD pipeline** passes on both platforms
|
|
344
|
-
- ✅ **Architecture approval** from technical lead (if significant changes)
|
|
345
|
-
- ✅ **Documentation review** (if docs changed)
|
|
346
|
-
|
|
347
|
-
## Testing Workflows
|
|
348
|
-
|
|
349
|
-
### 🧪 Local Testing Standards
|
|
350
|
-
|
|
351
|
-
#### Unit Testing (All Platforms)
|
|
352
|
-
|
|
353
|
-
```bash
|
|
354
|
-
# Same commands for all developers
|
|
355
|
-
npm run test # Run all tests
|
|
356
|
-
npm run test:watch # Watch mode for development
|
|
357
|
-
npm run test:coverage # Generate coverage report
|
|
358
|
-
npm run test:specific -- MyComponent # Test specific component
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
#### Integration Testing
|
|
362
|
-
|
|
363
|
-
**Windows Integration Tests:**
|
|
364
|
-
|
|
365
|
-
```powershell
|
|
366
|
-
# Test PowerShell integration
|
|
367
|
-
.\deployment\scripts\test-integration.ps1 -Environment dev
|
|
368
|
-
|
|
369
|
-
# Test Windows-specific features
|
|
370
|
-
npm run test:integration:windows
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
**Mac Integration Tests:**
|
|
374
|
-
|
|
375
|
-
```bash
|
|
376
|
-
# Test Bash integration
|
|
377
|
-
./deployment/scripts/test-integration.sh dev
|
|
378
|
-
|
|
379
|
-
# Test Mac-specific features
|
|
380
|
-
npm run test:integration:mac
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
### 🔄 CI/CD Testing
|
|
384
|
-
|
|
385
|
-
#### Pipeline Testing Strategy
|
|
386
|
-
|
|
387
|
-
**Multi-Platform Pipeline:**
|
|
388
|
-
|
|
389
|
-
```yaml
|
|
390
|
-
# Simplified CI/CD strategy
|
|
391
|
-
Build: Linux (fastest)
|
|
392
|
-
Unit Tests: Linux (consistent environment)
|
|
393
|
-
Integration: Both Windows and Linux
|
|
394
|
-
Deploy Test: Platform-specific (Windows PowerShell, Linux Bash)
|
|
395
|
-
Cross-Platform: Validation on both platforms
|
|
396
|
-
```
|
|
397
|
-
|
|
398
|
-
#### Pre-Merge Validation
|
|
399
|
-
|
|
400
|
-
**Automated Checks:**
|
|
401
|
-
|
|
402
|
-
- ✅ Unit tests pass on Linux
|
|
403
|
-
- ✅ Integration tests pass on Windows
|
|
404
|
-
- ✅ Integration tests pass on Linux
|
|
405
|
-
- ✅ Build artifacts are identical
|
|
406
|
-
- ✅ Deployment dry-run succeeds on both platforms
|
|
407
|
-
|
|
408
|
-
**Manual Validation:**
|
|
409
|
-
|
|
410
|
-
- ✅ Code review from both platform developers
|
|
411
|
-
- ✅ Feature testing on both platforms
|
|
412
|
-
- ✅ Documentation accuracy verification
|
|
413
|
-
|
|
414
|
-
## Deployment Procedures
|
|
415
|
-
|
|
416
|
-
### 🚀 Deployment Workflow
|
|
417
|
-
|
|
418
|
-
#### 1. Pre-Deployment Validation
|
|
419
|
-
|
|
420
|
-
**All Platforms:**
|
|
421
|
-
|
|
422
|
-
```bash
|
|
423
|
-
# Validate code quality
|
|
424
|
-
npm run quality
|
|
425
|
-
|
|
426
|
-
# Build production bundle
|
|
427
|
-
npm run build:prod
|
|
428
|
-
|
|
429
|
-
# Run comprehensive tests
|
|
430
|
-
npm run test:all
|
|
431
|
-
```
|
|
432
|
-
|
|
433
|
-
**Platform-Specific Validation:**
|
|
434
|
-
|
|
435
|
-
**Windows:**
|
|
436
|
-
|
|
437
|
-
```powershell
|
|
438
|
-
# Validate deployment environment
|
|
439
|
-
.\deployment\scripts\validate-setup.ps1
|
|
440
|
-
|
|
441
|
-
# Test deployment process
|
|
442
|
-
.\deployment\scripts\deploy.ps1 -Environment dev -DryRun
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
**Mac:**
|
|
446
|
-
|
|
447
|
-
```bash
|
|
448
|
-
# Validate deployment environment
|
|
449
|
-
./deployment/scripts/validate-setup.sh
|
|
450
|
-
|
|
451
|
-
# Test deployment process
|
|
452
|
-
./deployment/scripts/deploy.sh dev --dry-run
|
|
453
|
-
```
|
|
454
|
-
|
|
455
|
-
#### 2. Environment Deployment
|
|
456
|
-
|
|
457
|
-
**Development Environment:**
|
|
458
|
-
|
|
459
|
-
```bash
|
|
460
|
-
# Any team member can deploy to dev
|
|
461
|
-
npm run deploy:dev
|
|
462
|
-
|
|
463
|
-
# Platform-specific commands also work:
|
|
464
|
-
# Windows: .\deployment\scripts\deploy.ps1 -Environment dev
|
|
465
|
-
# Mac: ./deployment/scripts/deploy.sh dev
|
|
466
|
-
```
|
|
467
|
-
|
|
468
|
-
**Test Environment:**
|
|
469
|
-
|
|
470
|
-
```bash
|
|
471
|
-
# Requires approval, any platform can execute
|
|
472
|
-
npm run deploy:test
|
|
473
|
-
|
|
474
|
-
# Automated through CI/CD on main branch merge
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
**Production Environment:**
|
|
478
|
-
|
|
479
|
-
```bash
|
|
480
|
-
# Requires multiple approvals
|
|
481
|
-
npm run deploy:prod
|
|
482
|
-
|
|
483
|
-
# Must be tested on both platforms in CI/CD
|
|
484
|
-
# Manual approval gate in pipeline
|
|
485
|
-
```
|
|
486
|
-
|
|
487
|
-
#### 3. Post-Deployment Validation
|
|
488
|
-
|
|
489
|
-
**Health Checks (All Platforms):**
|
|
490
|
-
|
|
491
|
-
```bash
|
|
492
|
-
# Universal health check
|
|
493
|
-
npm run health-check
|
|
494
|
-
|
|
495
|
-
# Platform-specific validation:
|
|
496
|
-
# Windows: .\deployment\scripts\health-check.ps1 -Environment prod
|
|
497
|
-
# Mac: ./deployment/scripts/health-check.sh prod
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
**Monitoring Setup:**
|
|
501
|
-
|
|
502
|
-
```bash
|
|
503
|
-
# Cross-platform monitoring
|
|
504
|
-
npm run setup-monitoring
|
|
505
|
-
|
|
506
|
-
# Platform-specific detailed monitoring
|
|
507
|
-
# Windows: .\deployment\scripts\setup-monitoring.ps1
|
|
508
|
-
# Mac: ./deployment/scripts/setup-monitoring.sh
|
|
509
|
-
```
|
|
510
|
-
|
|
511
|
-
### 🔄 Rollback Procedures
|
|
512
|
-
|
|
513
|
-
#### Emergency Rollback
|
|
514
|
-
|
|
515
|
-
**Windows:**
|
|
516
|
-
|
|
517
|
-
```powershell
|
|
518
|
-
# Emergency rollback
|
|
519
|
-
.\deployment\scripts\rollback.ps1 -Environment prod -BackupFile "backup-20240315-143022.zip"
|
|
520
|
-
|
|
521
|
-
# Validation
|
|
522
|
-
.\deployment\scripts\health-check.ps1 -Environment prod
|
|
523
|
-
```
|
|
524
|
-
|
|
525
|
-
**Mac:**
|
|
526
|
-
|
|
527
|
-
```bash
|
|
528
|
-
# Emergency rollback
|
|
529
|
-
./deployment/scripts/rollback.sh prod backup-20240315-143022.tar.gz
|
|
530
|
-
|
|
531
|
-
# Validation
|
|
532
|
-
./deployment/scripts/health-check.sh prod
|
|
533
|
-
```
|
|
534
|
-
|
|
535
|
-
**Cross-Platform Coordination:**
|
|
536
|
-
|
|
537
|
-
- Notify team immediately in #dynamics-emergency channel
|
|
538
|
-
- Provide platform-agnostic status updates
|
|
539
|
-
- Document rollback reason and resolution steps
|
|
540
|
-
|
|
541
|
-
## Emergency Response
|
|
542
|
-
|
|
543
|
-
### 🚨 Incident Response Workflow
|
|
544
|
-
|
|
545
|
-
#### 1. Issue Detection
|
|
546
|
-
|
|
547
|
-
**Monitoring Alerts:**
|
|
548
|
-
|
|
549
|
-
- Automated monitoring detects issue
|
|
550
|
-
- Alerts sent to #dynamics-alerts channel
|
|
551
|
-
- On-call engineer (any platform) responds
|
|
552
|
-
|
|
553
|
-
**Manual Detection:**
|
|
554
|
-
|
|
555
|
-
- Team member discovers issue
|
|
556
|
-
- Report in #dynamics-emergency channel
|
|
557
|
-
- Include platform information in report
|
|
558
|
-
|
|
559
|
-
#### 2. Initial Assessment
|
|
560
|
-
|
|
561
|
-
**Information Gathering:**
|
|
562
|
-
|
|
563
|
-
```bash
|
|
564
|
-
# Gather system information (adapt to platform)
|
|
565
|
-
# Windows: Get-ComputerInfo | Select-Object WindowsProductName, TotalPhysicalMemory
|
|
566
|
-
# Mac: system_profiler SPSoftwareDataType SPHardwareDataType
|
|
567
|
-
|
|
568
|
-
# Check application health
|
|
569
|
-
npm run health-check
|
|
570
|
-
|
|
571
|
-
# Review recent deployments
|
|
572
|
-
git log --oneline -10
|
|
573
|
-
```
|
|
574
|
-
|
|
575
|
-
**Platform-Specific Diagnostics:**
|
|
576
|
-
|
|
577
|
-
**Windows:**
|
|
578
|
-
|
|
579
|
-
```powershell
|
|
580
|
-
# Check Windows-specific issues
|
|
581
|
-
Get-EventLog -LogName Application -Source "YourApp" -Newest 10
|
|
582
|
-
.\deployment\scripts\diagnose.ps1 -Environment prod
|
|
583
|
-
```
|
|
584
|
-
|
|
585
|
-
**Mac:**
|
|
586
|
-
|
|
587
|
-
```bash
|
|
588
|
-
# Check Mac-specific issues
|
|
589
|
-
tail -n 100 /var/log/system.log | grep YourApp
|
|
590
|
-
./deployment/scripts/diagnose.sh prod
|
|
591
|
-
```
|
|
592
|
-
|
|
593
|
-
#### 3. Resolution Process
|
|
594
|
-
|
|
595
|
-
**Escalation Levels:**
|
|
596
|
-
|
|
597
|
-
1. **Self-resolve** (15 minutes) - Individual team member
|
|
598
|
-
2. **Team assistance** (30 minutes) - Platform experts help
|
|
599
|
-
3. **Technical lead** (45 minutes) - Architecture-level decisions
|
|
600
|
-
4. **Emergency rollback** (60 minutes) - Return to last known good state
|
|
601
|
-
|
|
602
|
-
**Cross-Platform Collaboration:**
|
|
603
|
-
|
|
604
|
-
- Share diagnostics in team channel
|
|
605
|
-
- Use screen sharing for real-time troubleshooting
|
|
606
|
-
- Document platform-specific resolution steps
|
|
607
|
-
- Test resolution on both platforms before closing
|
|
608
|
-
|
|
609
|
-
### 📋 Post-Incident Process
|
|
610
|
-
|
|
611
|
-
#### 1. Post-Mortem
|
|
612
|
-
|
|
613
|
-
**Required Analysis:**
|
|
614
|
-
|
|
615
|
-
- Root cause identification
|
|
616
|
-
- Platform-specific contributing factors
|
|
617
|
-
- Cross-platform impact assessment
|
|
618
|
-
- Prevention strategies for both platforms
|
|
619
|
-
|
|
620
|
-
#### 2. Process Improvement
|
|
621
|
-
|
|
622
|
-
**Documentation Updates:**
|
|
623
|
-
|
|
624
|
-
- Update troubleshooting guides for both platforms
|
|
625
|
-
- Improve monitoring and alerting
|
|
626
|
-
- Enhance deployment validation
|
|
627
|
-
- Strengthen team training on platform differences
|
|
628
|
-
|
|
629
|
-
## Platform-Specific Considerations
|
|
630
|
-
|
|
631
|
-
### 🖥️ Windows Development
|
|
632
|
-
|
|
633
|
-
#### Unique Strengths
|
|
634
|
-
|
|
635
|
-
- **PowerShell ISE/VS Code** - Rich debugging experience
|
|
636
|
-
- **PowerApps CLI** - Native Dynamics 365 tooling
|
|
637
|
-
- **Azure DevOps** - Seamless integration
|
|
638
|
-
- **Enterprise tooling** - Native Windows admin tools
|
|
639
|
-
|
|
640
|
-
#### Common Challenges
|
|
641
|
-
|
|
642
|
-
- **Execution policies** - PowerShell script restrictions
|
|
643
|
-
- **Path separators** - Backslash vs forward slash
|
|
644
|
-
- **Case sensitivity** - Different from Linux/Mac
|
|
645
|
-
- **Module dependencies** - PowerShell module management
|
|
646
|
-
|
|
647
|
-
#### Best Practices
|
|
648
|
-
|
|
649
|
-
```powershell
|
|
650
|
-
# Always check execution policy
|
|
651
|
-
Get-ExecutionPolicy
|
|
652
|
-
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
|
653
|
-
|
|
654
|
-
# Use PowerShell-native paths
|
|
655
|
-
$configPath = Join-Path $ProjectRoot "config\environments\dev.json"
|
|
656
|
-
|
|
657
|
-
# Handle errors properly
|
|
658
|
-
try {
|
|
659
|
-
Invoke-RestMethod -Uri $ApiUrl -Method GET
|
|
660
|
-
} catch {
|
|
661
|
-
Write-Error "API call failed: $($_.Exception.Message)"
|
|
662
|
-
}
|
|
663
|
-
```
|
|
664
|
-
|
|
665
|
-
### 🍎 Mac Development
|
|
666
|
-
|
|
667
|
-
#### Unique Strengths
|
|
668
|
-
|
|
669
|
-
- **Terminal/iTerm2** - Powerful command-line experience
|
|
670
|
-
- **Homebrew** - Excellent package management
|
|
671
|
-
- **Docker** - Native container development
|
|
672
|
-
- **Open source tools** - Better compatibility with Linux tooling
|
|
673
|
-
|
|
674
|
-
#### Common Challenges
|
|
675
|
-
|
|
676
|
-
- **Case sensitivity** - File system differences
|
|
677
|
-
- **Permissions** - Script execution permissions
|
|
678
|
-
- **Tool installation** - Different package managers
|
|
679
|
-
- **Path handling** - Different from Windows
|
|
680
|
-
|
|
681
|
-
#### Best Practices
|
|
682
|
-
|
|
683
|
-
```bash
|
|
684
|
-
# Always make scripts executable
|
|
685
|
-
chmod +x deployment/scripts/*.sh
|
|
686
|
-
|
|
687
|
-
# Use proper path handling
|
|
688
|
-
config_path="$PROJECT_ROOT/config/environments/dev.json"
|
|
689
|
-
|
|
690
|
-
# Handle errors properly
|
|
691
|
-
set -euo pipefail # Exit on error, undefined vars, pipe failures
|
|
692
|
-
|
|
693
|
-
# Check dependencies
|
|
694
|
-
command -v jq >/dev/null 2>&1 || { echo "jq required but not installed"; exit 1; }
|
|
695
|
-
```
|
|
696
|
-
|
|
697
|
-
### 🤝 Cross-Platform Harmony
|
|
698
|
-
|
|
699
|
-
#### Shared Strengths
|
|
700
|
-
|
|
701
|
-
- **Node.js ecosystem** - Identical runtime environment
|
|
702
|
-
- **VS Code** - Consistent development experience
|
|
703
|
-
- **Git workflows** - Same version control processes
|
|
704
|
-
- **TypeScript** - Same language and tooling
|
|
705
|
-
|
|
706
|
-
#### Unified Approaches
|
|
707
|
-
|
|
708
|
-
```typescript
|
|
709
|
-
// Platform-agnostic file operations
|
|
710
|
-
import fs from 'fs/promises';
|
|
711
|
-
import path from 'path';
|
|
712
|
-
|
|
713
|
-
// Read configuration
|
|
714
|
-
const configPath = path.join(process.cwd(), 'config', 'environments', `${env}.json`);
|
|
715
|
-
const config = JSON.parse(await fs.readFile(configPath, 'utf8'));
|
|
716
|
-
|
|
717
|
-
// Environment detection
|
|
718
|
-
const isWindows = process.platform === 'win32';
|
|
719
|
-
const scriptExtension = isWindows ? '.ps1' : '.sh';
|
|
720
|
-
const scriptCommand = isWindows ? 'powershell' : 'bash';
|
|
721
|
-
```
|
|
722
|
-
|
|
723
|
-
---
|
|
724
|
-
|
|
725
|
-
These development workflows ensure that Windows and Mac team members can work together effectively
|
|
726
|
-
while leveraging platform-specific strengths and maintaining consistent deliverables across the
|
|
727
|
-
entire team.
|