{"id":20182318,"url":"https://github.com/ywangd/pythonista-script-index","last_synced_at":"2025-03-03T06:13:44.599Z","repository":{"id":26009670,"uuid":"29452265","full_name":"ywangd/Pythonista-Script-Index","owner":"ywangd","description":"Script search, installation and removal made easy in Pythonista","archived":false,"fork":false,"pushed_at":"2015-02-02T12:07:24.000Z","size":284,"stargazers_count":8,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-13T17:27:28.693Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ywangd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-19T03:40:09.000Z","updated_at":"2023-06-19T16:45:02.000Z","dependencies_parsed_at":"2022-08-24T03:00:54.419Z","dependency_job_id":null,"html_url":"https://github.com/ywangd/Pythonista-Script-Index","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ywangd%2FPythonista-Script-Index","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ywangd%2FPythonista-Script-Index/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ywangd%2FPythonista-Script-Index/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ywangd%2FPythonista-Script-Index/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ywangd","download_url":"https://codeload.github.com/ywangd/Pythonista-Script-Index/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241616679,"owners_count":19991543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-14T02:38:14.646Z","updated_at":"2025-03-03T06:13:44.576Z","avatar_url":"https://github.com/ywangd.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pythonista Script Index\n\nScript search, installation and removal made easy in Pythonista.\n\nProof-of-Concept project to setup a central Index for Pythonista Scripts. \nThe Index acts as a server to provide necessary information for a client\nprogram to manage search, installation and un-installation in Pythonista.\nSuch a proof-of-concept client is psiclient ([Gist\nlink](https://gist.github.com/ywangd/184b9e0e1e76d8b92063) or [GitHub\nrepo](https://github.com/ywangd/psiclient)). \n\nNote: It is currently in test phase and very primitive. Suggestions are welcome.\n\n## Basic structure\nTwo JSON files are required for the index to work, the Main Index file and the\nScript Definition file.\n* **Main Index File**\n  ([index.json](https://github.com/ywangd/pythonista-script-index/blob/master/index.json))\n    - It only has minimal information of each script, including the\n      script's short name, description and url pointing to the script's index file.\n* **Script Definition File**\n  ([scripts.json](https://github.com/ywangd/pythonista-script-index/blob/master/scripts.json)\n  for an example)\n    - It contains detailed information about a script, e.g. versions, and its\n      actual download url.\n\n\n## Examples\n**NOTE**: Comments are for demostration purpose only and are NOT allowed in\nactual files.\n\nA sample excerpt of the **Main Index File** could be as follows:\n```javascript\n{\n    \"meta_version\": \"1.0\",  // version of this main index file\n    \"name\": \"Pythonista Script Index\",  // name of the main index\n    \"website\": \"https://github.com/...\",  // url to the main index repo or website\n\n    \"scripts\": {\n        \"A_script\": {\n            \"meta_url\": \"https://github.com/person/repo/info.json\", // url to the script definition file\n        },\n\n        \"B_script\": {\n            \"meta_url\": \"https://github.com/someone/somerepo/info.json#B_script\",\n        }\n    }\n    \n}\n```\n\nAnd a sample **Script Definition File** is as follows:\n```javascript\n{\n    // Version of this index file\n    // It tells a client program how this index file shall be parsed and allows\n    // versioning of the index file itself\n    \"meta_version\": \"1.0\",  \n    \"name\": \"An awesome script\",  // script full name\n    \"author\": \"First Last\",\n    \"email\": \"email@test.com\",\n    \"website\": \"https://...\",  // url to script's repo or website\n    \"description\": \"he is too awesome\",\n\n    \"releases\": [ \n        {\n            \"version\": \"1.0\", \n            \"url\": \"https://.../a_script.py\" // url to download version 1.0 of the script\n            // Note: the client should always try to download a same-name pyui file\n        },\n\n        {\n            \"version\": \"2.0\", \n            \"url\": \"https://.../a_script.zip\"  // url to download version 2.0 of the script\n        },\n    ]\n}\n```\n\nThe **Script Definition File** allows authors to keep almost all maintenance\ninformation in their own repos and provide its own versionings. Also note many\nof these information are optional except `url`.\n\nNote the use of `meta_version` for representing the version number of the\nindex file itself. This allows future changes to the JSON file structure\nwithout breaking old index files, i.e. any future changes will receive a new\nversion number. The first thing a client program does is to check the meta_version which\ntells the client program what structure to expect from the index file.\n\nIn the **Main Index File**, note the use of `#B_script` tag for the second\nscript. This allows multiple scripts to share a single **Script Definition File**:\n```javascript\n{\n    \"script1\": {\n        // ...\n    },\n\n    \"B_script\": {\n\n        \"meta_version\": \"1.0\",  \n        \"name\": \"B Script\",  // script full name\n        \"author\": \"First Last\",\n        \"email\": \"email@test.com\",\n        \"website\": \"https://...\",  // url to script's repo or website\n        \"long_description\": \"...\",\n\n        \"releases\": [ \n            {\n                \"url\": \"https://....\", \n                // ...\n            }\n        ]\n    }, \n\n    \"script3\": {\n        // ...\n    }\n}\n```\n\nThe current supportted file types are:\n* Single Python file - it is simply copied to the destination folder\n    * The client should always check whether a same name pyui file is available\n      at the same url and download it if one exists.\n* Single zip file - all contained files are extracted into a folder and place\n  into the destination folder\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fywangd%2Fpythonista-script-index","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fywangd%2Fpythonista-script-index","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fywangd%2Fpythonista-script-index/lists"}