]> gitweb.factorcode.org Git - factor.git/commitdiff
mason.release: Move code signing to its own vocab. Add hooks for mac and windows...
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 30 Mar 2016 18:18:55 +0000 (11:18 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 30 Mar 2016 18:19:38 +0000 (11:19 -0700)
extra/mason/release/archive/archive.factor
extra/mason/release/release.factor
extra/mason/release/sign/authors.txt [new file with mode: 0644]
extra/mason/release/sign/sign.factor [new file with mode: 0644]

index e2df88f35028a4adef35447cc0605117dcc2562e..79fb4c34f4a87ca53a95baeb52b108a7a2418bf1 100644 (file)
@@ -32,25 +32,8 @@ IN: mason.release.archive
         archive-name
     } short-running-process ;
 
-: cert-path ( -- path )
-    home "config/mac_app.cer" append-path ;
-
-: sign-factor.app? ( -- ? ) cert-path exists? ;
-
-: factor.app-path ( -- path )
-    build-dir get "factor/Factor.app/" append-path ;
-
-:: sign-factor.app ( -- )
-    ${
-        "codesign" "--force" "--sign"
-        "Developer ID Application"
-        cert-path
-        factor.app-path
-    } short-running-process ;
-
 ! Make the .dmg
 : make-macosx-archive ( archive-name -- )
-    sign-factor.app? [ sign-factor.app ] when
     "dmg-root" make-directory
     "factor" "dmg-root" copy-tree-into
     "factor" "dmg-root" make-disk-image
index ae3433980437daa44a6f307f9272efea8b30034b..49f97171c573e8580e7cf9197fe9ac8514ce6545 100644 (file)
@@ -1,14 +1,15 @@
 ! Copyright (C) 2008, 2009 Eduardo Cavazos, Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: combinators mason.notify mason.release.archive
-mason.release.branch mason.release.dlls mason.release.tidy
-mason.release.upload ;
+mason.release.branch mason.release.dlls mason.release.sign
+mason.release.tidy mason.release.upload ;
 IN: mason.release
 
 : release ( -- )
     update-clean-branch
     tidy
     copy-dlls
+    sign-factor-app
     archive-name {
         [ make-archive ]
         [ upload ]
diff --git a/extra/mason/release/sign/authors.txt b/extra/mason/release/sign/authors.txt
new file mode 100644 (file)
index 0000000..7c1b2f2
--- /dev/null
@@ -0,0 +1 @@
+Doug Coleman
diff --git a/extra/mason/release/sign/sign.factor b/extra/mason/release/sign/sign.factor
new file mode 100644 (file)
index 0000000..0ca4bf7
--- /dev/null
@@ -0,0 +1,48 @@
+! Copyright (C) 2016 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: io.backend io.pathnames kernel literals locals
+mason.common namespaces sequences system ;
+IN: mason.release.sign
+
+<<
+! Two cases to allow signing in mason or in the UI
+: make-factor-path ( path -- path )
+    build-dir get [
+        ! In a build, make dir: "build-dir/factor/factor.com"
+        [ "factor/" prepend-path ] dip prepend-path
+    ] [
+        ! Not in build, make dir: "resource:factor.com"
+        "resource:" prepend-path normalize-path
+    ] if* ;
+
+HOOK: cert-path os ( -- path/f )
+
+M: macosx cert-path
+    home "config/mac_app.cer" append-path ;
+
+M: windows cert-path
+    home "config/FactorSPC.pfx" append-path ;
+>>
+
+HOOK: sign-factor-app os ( -- )
+
+M: object sign-factor-app ;
+
+M:: macosx sign-factor-app ( -- )
+    ${
+        "codesign" "--force" "--sign"
+        "Developer ID Application"
+        cert-path
+        "Factor.app/" make-factor-path
+    } short-running-process ;
+
+M:: windows sign-factor-app ( -- )
+    { "factor.com" "factor.exe" } [
+        [
+            {
+                "signtool" "sign"
+                "/v"
+                "/f" cert-path
+            }
+        ] dip make-factor-path suffix short-running-process
+    ] each ;