diff options
Diffstat (limited to '.sandstorm/sandstorm-pkgdef.capnp')
| -rw-r--r-- | .sandstorm/sandstorm-pkgdef.capnp | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/.sandstorm/sandstorm-pkgdef.capnp b/.sandstorm/sandstorm-pkgdef.capnp new file mode 100644 index 0000000..d641022 --- /dev/null +++ b/.sandstorm/sandstorm-pkgdef.capnp @@ -0,0 +1,202 @@ +@0xfd1c6ca5525e2cdb; + +using Spk = import "/sandstorm/package.capnp"; +# This imports: +# $SANDSTORM_HOME/latest/usr/include/sandstorm/package.capnp +# Check out that file to see the full, documented package definition format. + +const pkgdef :Spk.PackageDefinition = ( + # The package definition. Note that the spk tool looks specifically for the + # "pkgdef" constant. + + id = "70xjeuj6t85v3s9a3up583q97wu044mnt8aekf3pqs41e3ct2v70", + # Your app ID is actually its public key. The private key was placed in + # your keyring. All updates must be signed with the same key. + + manifest = ( + # This manifest is included in your app package to tell Sandstorm + # about your app. + + appTitle = (defaultText = "Tube"), + + appVersion = 0, # Increment this for every release. + + appMarketingVersion = (defaultText = "0.0.1"), + # Human-readable representation of appVersion. Should match the way you + # identify versions of your app in documentation and marketing. + + actions = [ + # Define your "new document" handlers here. + ( nounPhrase = (defaultText = "channel"), + command = .myCommand + # The command to run when starting for the first time. (".myCommand" + # is just a constant defined at the bottom of the file.) + ) + ], + + continueCommand = .myCommand, + # This is the command called to start your app back up after it has been + # shut down for inactivity. Here we're using the same command as for + # starting a new instance, but you could use different commands for each + # case. + + metadata = ( + icons = ( + appGrid = (svg = embed "../static/tube.svg"), + grain = (svg = embed "../static/tube.svg"), + market = (svg = embed "../static/tube.svg"), + marketBig = (svg = embed "../static/tube.svg"), + ), + + website = "https://git.mills.io/prologic/tube", + + codeUrl = "https://git.mills.io/prologic/tube", + + license = (openSource = mit), + + categories = [media], + + author = ( + contactEmail = "inbox@jacobweisz.com", + + pgpSignature = embed "pgp-signature", + + upstreamAuthor = "James Mills", + ), + + pgpKeyring = embed "pgp-keyring", + + description = (defaultText = embed "DESCRIPTION.md"), + + shortDescription = (defaultText = "Simple video sharing"), + + screenshots = [ + (width = 2624, height = 1624, png = embed "../screenshot-1.png"), + (width = 2624, height = 1624, png = embed "../screenshot-2.png"), + ], + changeLog = (defaultText = embed "../CHANGELOG.md"), + ), + ), + + sourceMap = ( + # Here we defined where to look for files to copy into your package. The + # `spk dev` command actually figures out what files your app needs + # automatically by running it on a FUSE filesystem. So, the mappings + # here are only to tell it where to find files that the app wants. + searchPath = [ + ( sourcePath = "." ), # Search this directory first. + ( sourcePath = "/", # Then search the system root directory. + hidePaths = [ "home", "proc", "sys", + "etc/passwd", "etc/hosts", "etc/host.conf", + "etc/nsswitch.conf", "etc/resolv.conf" ] + # You probably don't want the app pulling files from these places, + # so we hide them. Note that /dev, /var, and /tmp are implicitly + # hidden because Sandstorm itself provides them. + ) + ] + ), + + fileList = "sandstorm-files.list", + # `spk dev` will write a list of all the files your app uses to this file. + # You should review it later, before shipping your app. + + alwaysInclude = [], + # Fill this list with more names of files or directories that should be + # included in your package, even if not listed in sandstorm-files.list. + # Use this to force-include stuff that you know you need but which may + # not have been detected as a dependency during `spk dev`. If you list + # a directory here, its entire contents will be included recursively. + + bridgeConfig = ( + # Used for integrating permissions and roles into the Sandstorm shell + # and for sandstorm-http-bridge to pass to your app. + # Uncomment this block and adjust the permissions and roles to make + # sense for your app. + # For more information, see high-level documentation at + # https://docs.sandstorm.io/en/latest/developing/auth/ + # and advanced details in the "BridgeConfig" section of + # https://github.com/sandstorm-io/sandstorm/blob/master/src/sandstorm/package.capnp + viewInfo = ( + # For details on the viewInfo field, consult "ViewInfo" in + # https://github.com/sandstorm-io/sandstorm/blob/master/src/sandstorm/grain.capnp + + permissions = [ + # Permissions which a user may or may not possess. A user's current + # permissions are passed to the app as a comma-separated list of `name` + # fields in the X-Sandstorm-Permissions header with each request. + # + # IMPORTANT: only ever append to this list! Reordering or removing fields + # will change behavior and permissions for existing grains! To deprecate a + # permission, or for more information, see "PermissionDef" in + # https://github.com/sandstorm-io/sandstorm/blob/master/src/sandstorm/grain.capnp + ( + name = "admin", + # Name of the permission, used as an identifier for the permission in cases where string + # names are preferred. Used in sandstorm-http-bridge's X-Sandstorm-Permissions HTTP header. + + title = (defaultText = "admin"), + # Display name of the permission, e.g. to display in a checklist of permissions + # that may be assigned when sharing. + + description = (defaultText = "grants ability to do anything"), + # Prose describing what this role means, suitable for a tool tip or similar help text. + ), + ( + name = "upload", + title = (defaultText = "upload"), + description = (defaultText = "ability to upload content"), + ), + ], + roles = [ + # Roles are logical collections of permissions. For instance, your app may have + # a "viewer" role and an "editor" role + ( + title = (defaultText = "administrator"), + # Name of the role. Shown in the Sandstorm UI to indicate which users have which roles. + + permissions = [true,true], + # An array indicating which permissions this role carries. + # It should be the same length as the permissions array in + # viewInfo, and the order of the lists must match. + + verbPhrase = (defaultText = "can do anything"), + # Brief explanatory text to show in the sharing UI indicating + # what a user assigned this role will be able to do with the grain. + + description = (defaultText = "administrators can edit and configure all settings."), + # Prose describing what this role means, suitable for a tool tip or similar help text. + ), + ( + title = (defaultText = "uploader"), + permissions = [false,true], + verbPhrase = (defaultText = "can upload videos"), + description = (defaultText = "uploaders may upload new videos."), + ), + ( + title = (defaultText = "viewer"), + permissions = [false,false], + verbPhrase = (defaultText = "can watch videos"), + description = (defaultText = "viewers may watch videos on the channel."), + ), + ], + ), + #apiPath = "/api", + # Apps can export an API to the world. The API is to be used primarily by Javascript + # code and native apps, so it can't serve out regular HTML to browsers. If a request + # comes in to your app's API, sandstorm-http-bridge will prefix the request's path with + # this string, if specified. + ), +); + +const myCommand :Spk.Manifest.Command = ( + # Here we define the command used to start up your server. + argv = ["/sandstorm-http-bridge", "8000", "--", "/bin/bash", "/opt/app/.sandstorm/launcher.sh"], + environ = [ + # Note that this defines the *entire* environment seen by your app. + (key = "PATH", value = "/usr/local/bin:/usr/bin:/bin"), + (key = "SANDSTORM", value = "1"), + # Export SANDSTORM=1 into the environment, so that apps running within Sandstorm + # can detect if $SANDSTORM="1" at runtime, switching UI and/or backend to use + # the app's Sandstorm-specific integration code. + ] +); |
