gowalk-cicd 1.0.127 → 1.0.128

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.
@@ -1 +1 @@
1
- 1.0.127
1
+ 1.0.128
@@ -29,12 +29,37 @@ function fingerprint(platform, ref = 'HEAD') {
29
29
  row && input(row.slice(row.indexOf('\t') + 1), platform)).sort().join('\0'));
30
30
  }
31
31
 
32
+ // `flutter pub get` writes this. It is gitignored on purpose, and it is the only
33
+ // offline answer to "does this project's iOS half need CocoaPods".
34
+ const PLUGINS = '.flutter-plugins-dependencies';
35
+ const PODS = ['ios/Podfile', 'ios/Podfile.lock'];
36
+
37
+ function iosPodsCommitted() {
38
+ // Positive evidence only. A project that has never resolved its plugins, an
39
+ // unreadable manifest and a non-Flutter iOS app are all indeterminate here,
40
+ // and refusing on them would block apps this cannot speak about at all.
41
+ let resolved;
42
+ try {
43
+ resolved = JSON.parse(fs.readFileSync(PLUGINS, 'utf8'))?.plugins?.ios;
44
+ } catch { return true; }
45
+ if (!Array.isArray(resolved) || !resolved.length) return true;
46
+ const tracked = new Set(git('ls-files', '-z', '--', ...PODS).split('\0').filter(Boolean));
47
+ return PODS.every(path => tracked.has(path));
48
+ }
49
+
32
50
  function create(platforms = ['ios', 'android'], variables = {}) {
33
51
  if (['main', 'master', ''].includes(git('branch', '--show-current').trim())) {
34
52
  throw Error('mobile_release_task_branch_required');
35
53
  }
36
54
  const dirty = git('status', '--porcelain', '-z', '--untracked-files=all').split('\0').filter(Boolean);
37
55
  if (dirty.some(row => row.slice(3) !== INTENT)) throw Error('mobile_release_source_not_committed');
56
+ // An intent is a freeze. Declaring a platform whose build inputs are missing
57
+ // spends the whole freeze on a job that cannot start: CI requires the
58
+ // committed lockfile and refuses Xcode-managed package downloads, so the iOS
59
+ // job fails in native preparation and the fix needs another intent. Across
60
+ // eight rebuild tasks on 2026-09-09 there were 35 Mobile Deploy runs and 3
61
+ // green conclusions, all three on the one repository committing this pair.
62
+ if (platforms.includes('ios') && !iosPodsCommitted()) throw Error('mobile_release_ios_pods_uncommitted');
38
63
  const manifest = {schema: SCHEMA, configuration_sha256: configuration(variables),
39
64
  platforms: Object.fromEntries(platforms.map(p => [p, fingerprint(p)]))};
40
65
  fs.mkdirSync('.factory/releases', {recursive: true});
@@ -1 +1 @@
1
- 1.0.127
1
+ 1.0.128
@@ -1 +1 @@
1
- 1.0.127
1
+ 1.0.128
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gowalk-cicd",
3
- "version": "1.0.127",
3
+ "version": "1.0.128",
4
4
  "description": "Zero-config GitHub Actions delivery for iOS TestFlight and Android Google Play.",
5
5
  "type": "module",
6
6
  "bin": {