{"id":39910085,"url":"https://github.com/fcamarlinghi/cepy","last_synced_at":"2026-01-18T16:06:15.843Z","repository":{"id":43367152,"uuid":"64867610","full_name":"fcamarlinghi/cepy","owner":"fcamarlinghi","description":"A command line utility that helps debugging and packaging HTML5-based extensions for Adobe Creative Cloud applications.","archived":false,"fork":false,"pushed_at":"2023-07-11T02:13:14.000Z","size":198,"stargazers_count":12,"open_issues_count":4,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-26T12:53:57.572Z","etag":null,"topics":["adobe","cep","zxp"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fcamarlinghi.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE-2.0","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-03T18:00:06.000Z","updated_at":"2023-08-13T06:46:50.000Z","dependencies_parsed_at":"2023-01-22T13:30:13.041Z","dependency_job_id":null,"html_url":"https://github.com/fcamarlinghi/cepy","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/fcamarlinghi/cepy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcamarlinghi%2Fcepy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcamarlinghi%2Fcepy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcamarlinghi%2Fcepy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcamarlinghi%2Fcepy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fcamarlinghi","download_url":"https://codeload.github.com/fcamarlinghi/cepy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcamarlinghi%2Fcepy/sbom","scorecard":{"id":394396,"data":{"date":"2025-08-11","repo":{"name":"github.com/fcamarlinghi/cepy","commit":"5bbe00a3f34dd8f4921c33d506a9bf3cc37c0e7e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE-APACHE-2.0:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE-APACHE-2.0:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T18:37:15.107Z","repository_id":43367152,"created_at":"2025-08-18T18:37:15.107Z","updated_at":"2025-08-18T18:37:15.107Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28541068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T14:59:57.589Z","status":"ssl_error","status_checked_at":"2026-01-18T14:59:46.540Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adobe","cep","zxp"],"created_at":"2026-01-18T16:06:15.761Z","updated_at":"2026-01-18T16:06:15.836Z","avatar_url":"https://github.com/fcamarlinghi.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# cepy\n\u003e An utility that helps debugging and packaging HTML5-based extensions for Adobe Creative Cloud applications.\n\nThis is an attempt to build a tool with all the capabilities of [grunt-cep](https://github.com/fcamarlinghi/grunt-cep/) (and more!), but completely decoupled from Grunt and its conventions/ecosystem. Please refer to the [Usage Example](#usage-example) section below for a quick overview of the tool.\n\n## Goals:\n* Decouple *grunt-cep* from Grunt, so that the tool can be used with vanilla NodeJS, NPM scripts and command line.\n* Make less assumptions about user needs so that the tool is more generic and flexible.\n* Simpler configuration, customization and usage.\n* Use modern code standards to achieve better performance and maintainability.\n* Add more built-in functionality alongside what *grunt-cep* already offers, i.e.:\n * Simple project scaffolding. Just as [grunt-init-cep](https://github.com/fcamarlinghi/grunt-init-cep/), but built-in.\n * Generate manifest/debug files in a folder of choice. Useful to integrate the tool in a build process (i.e. webpack, browserify, etc.).\n* More flexibility when it comes to hybrid extensions.\n* Easy migration path from *grunt-cep*. Provide a *grunt-cepy* plugin to be able to continue to use the utility from Grunt.\n\n## Status\nThe project is in its early days. Most of the features of *grunt-cep* are already ported over, but might still be unstable/not completely working.\n\nNext steps:\n- [ ] Continue to experiment with the concept of \"build\" as the backbone of the tool.\n- [ ] Consider which config settings might be moved out of the config file to provide more flexibility from command line and code.\n- [ ] Improve command line/NodeJS APIs.\n- [ ] Add more commands (such as *create* for project scaffolding).\n- [x] Add support for using minimum product versions in manifest/mxi files (see [this post](http://www.davidebarranca.com/2016/06/html-panel-tips-21-photoshop-cc2015-5-2016-survival-guide/)).\n- [x] Better console output and error reporting (especially when using the tool programmatically).\n- [x] Rework hybrid extensions support.\n\n## Usage Example\nConfig file:\n```js\n// cepy.js\n\nmodule.exports = {\n\tbuilds: {\n\t\t'example-build': {\n\t\t\tsource: 'example-src',\n\t\t\tproducts: ['photoshop'],\n\t\t\tfamilies: ['cc2015.5'],\n\t\t\tbundle: {\n\t\t\t\tid: 'com.acme.awesomebundle',\n\t\t\t}\n\t\t\textensions: [{\n\t\t\t\tid: 'com.acme.awesomebundle.extension1',\n\t\t\t\tname 'Example Extension 1',\n\t\t\t\tmainPath: 'extension-1/index.html',\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'com.acme.awesomebundle.extension2',\n\t\t\t\tname 'Example Extension 2',\n\t\t\t\tmainPath: 'extension-2/index.html',\n\t\t\t}]\n\t\t}\n\t},\n\tpackaging: {\n\t\toutput: 'release/my-awesome-bundle.zxp',\n\t\tcertificate: {\n\t\t\towner: 'acme',\n\t\t\tpassword: 'some password',\n\t\t\tfile: 'distrib/acme-certificate.p12',\n\t\t}\n\t}\n};\n```\nFrom the command line:\n```shell\n# cepy.js will be automatically loaded when running the tool\n# use the --config \u003cpath\u003e switch to select a custom config file path\n\n# generate manifest/debug files for the 'example-build' build\ncepy decorate --debug example-build\n\n# or\n# launch the 'example-build' build in debug mode\ncepy launch --debug example-build\n\n# or\n# package all the builds in release mode (won't generate .debug file) to an output .ZXP file\ncepy pack\n```\nFrom code:\n```js\nconst cepy = require('cepy'),\n      config = require('./cepy.js');\n\nconst compiler = cepy(config);\n\n// launch the 'example-build' build in debug mode\ncompiler.launch('example-build', { debug: true });\n\n// or\n// package all the builds in an output .ZXP file\ncompiler.pack();\n```\n\n## Contributing\n\nFeedback and pull requests are extremely welcome!\n\n## License\nCopyright \u0026copy; 2016-2017 Francesco Camarlinghi\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcamarlinghi%2Fcepy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffcamarlinghi%2Fcepy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcamarlinghi%2Fcepy/lists"}