diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index b0fb8a1e..4dd74952 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -5,6 +5,10 @@ To contribute to`open-source-ios-apps`, update the **contents.json** file (this Please [open an issue](https://github.com/dkhamsing/open-source-ios-apps/issues) and contact @dkhamsing, @kvnbautista or @scribblemaniac. +## Delete app + +To delete an app, add the value **archive** to the `tags` field. + ## New app Adding a `JSON` entry diff --git a/.github/convert.rb b/.github/convert.rb index 94b44f3e..dcdafffe 100644 --- a/.github/convert.rb +++ b/.github/convert.rb @@ -1,7 +1,10 @@ require 'date' require 'json' -OUTPUT = 'README.md' +README = 'README.md' + +ARCHIVE = 'ARCHIVE.md' +ARCHIVE_TAG = 'archive' def output_stars(number) case number @@ -35,8 +38,23 @@ def output_flag(lang) end end +def apps_archived(apps) + a = apps.select {|a| a['tags'] != nil }.select {|b| b['tags'].include?ARCHIVE_TAG} + a.sort_by { |k, v| k['title'] } +end + def apps_for_cat(apps, id) - s = apps.select do |a| + f = apps.select do |a| + + tags = a['tags'] + if tags.nil? + true + else + !(tags.include? ARCHIVE_TAG) + end + end + + s = f.select do |a| cat = a['category'] cat.class == Array ? cat.include?(id) : (cat == id) end @@ -83,53 +101,83 @@ def output_apps(apps) o end +def write_readme(j) + t = j['title'] + desc = j['description'] + h = j['header'] + f = j['footer'] + cats = j['categories'] + apps = j['projects'] + + date = DateTime.now + date_display = date.strftime "%B %d, %Y" + + output = '# ' + t + output << "\n\n" + output << desc + output << "\n\nA collaborative list of **#{apps.count}** open-source iOS apps, your [contribution](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/CONTRIBUTING.md) is welcome :smile: " + output << "(last update *#{date_display}*)." + + output << "\n \nJump to \n \n" + + cats.each do |c| + temp = "#{' ' unless c['parent']==nil }- [#{c['title']}](\##{c['id']}) \n" + output << temp + end + + output << "- [Bonus](#bonus) \n" + + output << "\n" + output << h + output << "\n" + + cats.each do |c| + temp = "\n#\##{'#' unless c['parent']==nil } #{c['title']} \n \n" + + d = c['description'] + temp << "#{d} — " unless d.nil? + + temp << "[back to top](#readme) \n \n" + output << temp + + cat_apps = apps_for_cat(apps, c['id']) + output << output_apps(cat_apps) + end + + output << "\n" + output << f + + File.open(README, 'w') { |f| f.write output } + puts "wrote #{README} ✨" +end + +def write_archive(j) + t = j['title'] + desc = "This is an archive of the [main list](https://github.com/dkhamsing/open-source-ios-apps) for projects that are no longer maintained / old.\n\n" + f = "## Contact\n\n- [github.com/dkhamsing](https://github.com/dkhamsing)\n- [twitter.com/dkhamsing](https://twitter.com/dkhamsing)\n" + apps = j['projects'] + archived = apps_archived apps + + output = "\# #{t} Archive\n\n" + output << desc + + archived.each do |a| + t = a['title'] + s = a['source'] + output << "- #{t} #{s}\n" + # output << + end + + output << "\n" + output << f + + file = ARCHIVE + File.open(file, 'w') { |f| f.write output } + puts "wrote #{file} ✨" +end + c = File.read 'contents.json' j = JSON.parse c -t = j['title'] -desc = j['description'] -h = j['header'] -f = j['footer'] -cats = j['categories'] -apps = j['projects'] - -date = DateTime.now -date_display = date.strftime "%B %d, %Y" - -output = '# ' + t -output << "\n\n" -output << desc -output << "\n\nA collaborative list of **#{apps.count}** open-source iOS apps, your [contribution](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/CONTRIBUTING.md) is welcome :smile: " -output << "(last update *#{date_display}*)." - -output << "\n \nJump to \n \n" - -cats.each do |c| - temp = "#{' ' unless c['parent']==nil }- [#{c['title']}](\##{c['id']}) \n" - output << temp -end - -output << "- [Bonus](#bonus) \n" - -output << "\n" -output << h -output << "\n" - -cats.each do |c| - temp = "\n#\##{'#' unless c['parent']==nil } #{c['title']} \n \n" - - d = c['description'] - temp << "#{d} — " unless d.nil? - - temp << "[back to top](#readme) \n \n" - output << temp - - cat_apps = apps_for_cat(apps, c['id']) - output << output_apps(cat_apps) -end - -output << "\n" -output << f - -File.open(OUTPUT, 'w') { |f| f.write output } -puts "wrote #{OUTPUT} ✨" +write_readme(j) +write_archive(j) diff --git a/.github/deploy.sh b/.github/deploy.sh index e3fbdbc4..e33d835a 100755 --- a/.github/deploy.sh +++ b/.github/deploy.sh @@ -8,7 +8,9 @@ git config user.email "dkhamsing@users.noreply.github.com" #git checkout master git add README.md - git commit -m "[auto] [ci skip] Generate README" +git add ARCHIVE.md +git commit -m "[auto] [ci skip] Generate ARCHIVE" + git push --quiet "https://${GH_TOKEN}@github.com/dkhamsing/open-source-ios-apps" master:master > /dev/null 2>&1 diff --git a/archive.md b/archive.md deleted file mode 100644 index 5058ac9c..00000000 --- a/archive.md +++ /dev/null @@ -1,23 +0,0 @@ -# Open-Source iOS Apps Archive - -This is an archive of the [main list](https://github.com/dkhamsing/open-source-ios-apps) for projects that are no longer maintained / old. - -- https://github.com/omz/AppSales-Mobile -- https://github.com/squallstar/bancha-ios-app -- https://github.com/nothingmagical/cheddar-ios -- https://github.com/EverestOpenSource/Everest-iOS -- https://github.com/dennisreimann/ioctocat -- https://github.com/lastfm/lastfm-iphone -- https://github.com/coderyi/Mume ([fork](https://github.com/opensourceios/Mume)) -- https://github.com/Imaginea/pancake-ios -- https://code.google.com/p/metasyntactic/wiki/PocketFlix -- https://github.com/ricburton/Repo -- https://github.com/Haoest/SudokuResolv -- https://github.com/FelixMLians/suning-shop-ios -- https://github.com/applidium/Vim -- https://github.com/tderouin/wikiHow-iPhone-Application/ - -## Contact - -- [github.com/dkhamsing](https://github.com/dkhamsing) -- [twitter.com/dkhamsing](https://twitter.com/dkhamsing) diff --git a/contents.json b/contents.json index 2e49c6d4..1b49acaa 100644 --- a/contents.json +++ b/contents.json @@ -2,7 +2,7 @@ "title": "Open-Source iOS Apps", "description": "", "header": "```\n🔶 Swift projects\n\nProjects that are not in English have a flag\n🇨🇳 Project is in Chinese\n🇪🇸 Project is in Spanish, etc\n\n 100+ Stars: 🔥\n 200+ Stars: 🔥🔥\n 500+ Stars: 🔥🔥🔥\n1000+ Stars: 🔥🔥🔥🔥\n2000+ Stars: 🔥🔥🔥🔥🔥\n```", - "footer": "## Bonus\n\nSee [archive](archive.md), [mac-apps](https://github.com/jeffreyjackson/mac-apps), [awesome-osx](https://github.com/iCHAIT/awesome-osx) and [android-apps](https://github.com/pcqpcq/open-source-android-apps).\n\n## Thanks\n\nThis list was inspired by [awesome-ios](https://github.com/vsouza/awesome-ios) and [awesome-swift](https://github.com/matteocrippa/awesome-swift). Thanks to all the [contributors](https://github.com/dkhamsing/open-source-ios-apps/graphs/contributors) 🎉 \n\n## Contact\n\n- [github.com/dkhamsing](https://github.com/dkhamsing)\n- [twitter.com/dkhamsing](https://twitter.com/dkhamsing)\n", + "footer": "## Bonus\n\nSee [archive](ARCHIVE.md), [mac-apps](https://github.com/jeffreyjackson/mac-apps), [awesome-osx](https://github.com/iCHAIT/awesome-osx) and [android-apps](https://github.com/pcqpcq/open-source-android-apps).\n\n## Thanks\n\nThis list was inspired by [awesome-ios](https://github.com/vsouza/awesome-ios) and [awesome-swift](https://github.com/matteocrippa/awesome-swift). Thanks to all the [contributors](https://github.com/dkhamsing/open-source-ios-apps/graphs/contributors) 🎉 \n\n## Contact\n\n- [github.com/dkhamsing](https://github.com/dkhamsing)\n- [twitter.com/dkhamsing](https://twitter.com/dkhamsing)\n", "categories": [ { "title": "Apple TV", @@ -3460,6 +3460,116 @@ "tags": [ "swift" ] + }, + { + "title": "AppSales-Mobile", + "category": "misc", + "source": "https://github.com/omz/AppSales-Mobile", + "tags": [ + "archive" + ] + }, + { + "title": "Bancha", + "category": "misc", + "source": "https://github.com/squallstar/bancha-ios-app", + "tags": [ + "archive" + ] + }, + { + "title": "Cheddar", + "category": "misc", + "source": "https://github.com/nothingmagical/cheddar-ios", + "tags": [ + "archive" + ] + }, + { + "title": "Everest", + "category": "misc", + "source": "https://github.com/EverestOpenSource/Everest-iOS", + "tags": [ + "archive" + ] + }, + { + "title": "iOctocat", + "category": "misc", + "source": "https://github.com/dennisreimann/ioctocat", + "tags": [ + "archive" + ] + }, + { + "title": "LastFM", + "category": "misc", + "source": "https://github.com/lastfm/lastfm-iphone", + "tags": [ + "archive" + ] + }, + + { + "title": "Mume", + "category": "misc", + "source": "https://github.com/opensourceios/Mume", + "tags": [ + "archive" + ] + }, + + { + "title": "Pancake", + "category": "misc", + "source": "https://github.com/Imaginea/pancake-ios", + "tags": [ + "archive" + ] + }, + + { + "title": "PocketFlix", + "category": "misc", + "source": "https://code.google.com/archive/p/metasyntactic/wikis/PocketFlix.wiki", + "tags": [ + "archive" + ] + }, + + { + "title": "Repo", + "category": "misc", + "source": "https://github.com/ricburton/Repo", + "tags": [ + "archive" + ] + }, + + { + "title": "SudokuResolv", + "category": "misc", + "source": "https://github.com/Haoest/SudokuResolv", + "tags": [ + "archive" + ] + }, + { + "title": "Vim", + "category": "misc", + "source": "https://github.com/applidium/Vim", + "tags": [ + "archive" + ] + }, + + { + "title": "wikiHow", + "category": "misc", + "source": "https://github.com/tderouin/wikiHow-iPhone-Application/", + "tags": [ + "archive" + ] } ] }