create-preview-workflow 1.1.3 → 1.1.5

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.
Files changed (2) hide show
  1. package/index.js +73 -43
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -46,7 +46,7 @@ function getGitHubInfo() {
46
46
  type: (prev) => (prev === "sync" ? "text" : null),
47
47
  name: "sourcePath",
48
48
  message:
49
- "Enter the source directory to sync (e.g., 2_scripts) without leading slash:",
49
+ "Enter the source directory to sync (e.g., qmd) without leading slash:",
50
50
  },
51
51
  {
52
52
  type: "text",
@@ -60,14 +60,22 @@ function getGitHubInfo() {
60
60
 
61
61
  if (response.action === "sync") {
62
62
  const sourceDir = path.join(process.cwd(), response.sourcePath);
63
- const fileNames = fs
64
- .readdirSync(sourceDir)
65
- .filter((file) => fs.statSync(path.join(sourceDir, file)).isFile());
66
63
 
67
- const baseUrl = `https://preview-five-beta.vercel.app/protected/${username}@${repo}`;
64
+ // Check if source directory exists and get file names for URL display
65
+ let fileNames = [];
66
+ if (fs.existsSync(sourceDir)) {
67
+ fileNames = fs
68
+ .readdirSync(sourceDir)
69
+ .filter((file) => fs.statSync(path.join(sourceDir, file)).isFile());
70
+ }
71
+
72
+ const baseUrl = `http://preview.neurasense.io:30010/${username}@${repo}`;
68
73
  const urls = fileNames.map((file) => `${baseUrl}/${file}`);
69
- console.log("\nšŸ“‚ File access URLs:");
70
- urls.forEach((url) => console.log(`- ${url}`));
74
+
75
+ if (urls.length > 0) {
76
+ console.log("\nšŸ“‚ File access URLs:");
77
+ urls.forEach((url) => console.log(`- ${url}`));
78
+ }
71
79
 
72
80
  workflow = `# .github/workflows/sync.yml
73
81
  name: Sync Directory
@@ -79,7 +87,7 @@ on:
79
87
  - ".github/workflows/sync.yml"
80
88
 
81
89
  jobs:
82
- sync:
90
+ notify:
83
91
  runs-on: ubuntu-latest
84
92
  steps:
85
93
  - uses: actions/checkout@v3
@@ -103,28 +111,43 @@ jobs:
103
111
  echo "PUSH_TIME=\$PUSH_TIME" >> \$GITHUB_ENV
104
112
  echo "GITHUB_URL=\$GITHUB_URL" >> \$GITHUB_ENV
105
113
 
106
- - name: Clone target repo and sync content
114
+ - name: Call Preview Webhook
107
115
  run: |
108
- git clone https://\${{ secrets.GH_SYNC_TOKEN }}@github.com/ssm123ssm/preview.git
109
- rm -rf preview/public/protected/\$DIR
110
- mkdir -p preview/public/protected/\$DIR
111
- cp -r ${response.sourcePath}/. preview/public/protected/\$DIR/
112
- echo "Last sync: \$PUSH_TIME" > preview/public/protected/\$DIR/.sync_log
113
- echo "Last commit: \$COMMIT_MSG" >> preview/public/protected/\$DIR/.sync_log
114
- echo "Commit SHA: \$COMMIT_SHA" >> preview/public/protected/\$DIR/.sync_log
115
- echo "Source: \$USER/\$REPO" >> preview/public/protected/\$DIR/.sync_log
116
- echo "View diff: \$GITHUB_URL" >> preview/public/protected/\$DIR/.sync_log
117
- echo "Org: ${response.org}" >> preview/public/protected/\$DIR/.sync_log
118
- cd preview
119
- git config user.name "GitHub Actions"
120
- git config user.email "actions@github.com"
121
- git add .
122
- if ! git diff --cached --quiet; then
123
- git commit -m "Sync content from source repo"
124
- git push
125
- else
126
- echo "No changes to commit"
127
- fi
116
+ curl -X POST http://preview.neurasense.io:30010/deploy \\
117
+ -H "Content-Type: application/json" \\
118
+ -d "\$(jq -n \\
119
+ --arg repo "\${{ github.repository }}" \\
120
+ --arg github_pat "${{ secrets.GH_PAT }}" \\
121
+ --arg actor "\${{ github.actor }}" \\
122
+ --arg ref "\${{ github.ref }}" \\
123
+ --arg sha "\${{ github.sha }}" \\
124
+ --arg org "${response.org}" \\
125
+ --arg user "\$USER" \\
126
+ --arg repo_name "\$REPO" \\
127
+ --arg dir "\$DIR" \\
128
+ --arg commit_msg "\$COMMIT_MSG" \\
129
+ --arg commit_sha "\$COMMIT_SHA" \\
130
+ --arg push_time "\$PUSH_TIME" \\
131
+ --arg github_url "\$GITHUB_URL" \\
132
+ --arg source_path "${response.sourcePath}" \\
133
+ '{
134
+ repository: \$repo,
135
+ actor: \$actor,
136
+ ref: \$ref,
137
+ sha: \$sha,
138
+ org: \$org,
139
+ source_path: \$source_path,
140
+ github_pat: \$github_pat,
141
+ sync_log: {
142
+ "Last sync": \$push_time,
143
+ "Last commit": \$commit_msg,
144
+ "Commit SHA": \$commit_sha,
145
+ "Source": (\$user + "/" + \$repo_name),
146
+ "View diff": \$github_url,
147
+ "Org": \$org,
148
+ directory: \$dir
149
+ }
150
+ }')"
128
151
  `;
129
152
  } else {
130
153
  workflow = `# .github/workflows/sync.yml
@@ -150,20 +173,21 @@ jobs:
150
173
  echo "REPO=\$REPO" >> \$GITHUB_ENV
151
174
  echo "DIR=\$DIR" >> \$GITHUB_ENV
152
175
 
153
- - name: Clone target repo and remove directory
176
+ - name: Call Delete Webhook
154
177
  run: |
155
- git clone https://\${{ secrets.GH_SYNC_TOKEN }}@github.com/ssm123ssm/preview.git
156
- rm -rf preview/public/protected/\$DIR
157
- cd preview
158
- git config user.name "GitHub Actions"
159
- git config user.email "actions@github.com"
160
- git add .
161
- if ! git diff --cached --quiet; then
162
- git commit -m "Remove directory from shared repo"
163
- git push
164
- else
165
- echo "No changes to commit"
166
- fi
178
+ curl -X POST http://preview.neurasense.io:30010/delete \\
179
+ -H "Content-Type: application/json" \\
180
+ -d "\$(jq -n \\
181
+ --arg repo "\${{ github.repository }}" \\
182
+ --arg actor "\${{ github.actor }}" \\
183
+ --arg user "\$USER" \\
184
+ --arg repo_name "\$REPO" \\
185
+ --arg dir "\$DIR" \\
186
+ '{
187
+ repository: \$repo,
188
+ actor: \$actor,
189
+ directory: \$dir
190
+ }')"
167
191
  `;
168
192
  }
169
193
 
@@ -174,6 +198,12 @@ jobs:
174
198
  const actionText =
175
199
  response.action === "sync" ? "sync content to" : "delete content from";
176
200
  console.log(
177
- `\nāœ… GitHub Actions workflow to ${actionText} shared directory created at .github/workflows/sync.yml. Make sure to add the GH_SYNC_TOKEN secret in your repository settings.`
201
+ `\nāœ… GitHub Actions workflow to ${actionText} shared directory created at .github/workflows/sync.yml.`
178
202
  );
203
+
204
+ if (response.action === "sync") {
205
+ console.log(
206
+ `\nšŸ“” The workflow will call the webhook at http://preview.neurasense.io:30010/deploy with the source directory "${response.sourcePath}" included in the payload.`
207
+ );
208
+ }
179
209
  })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-preview-workflow",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "bin": {
5
5
  "create-preview-workflow": "index.js"
6
6
  },