{ "info": { "author": "Richard Kim", "author_email": "richardskim111@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# iacs-cli\n\n### What is `iacs-cli`?\n\niacs-cli is a course website generator powered by\n[Pelican](https://github.com/getpelican/pelican), a Python static site\ngenerator, which will enable a course instructor to quickly convert course\ncontent into a web content for students and the public. Some of the challenges\nfaced by IACS course instructor include:\n\n1. Creating course materials often in Jupyter notebook, R markdown document, or\n Powerpoint slides. Unfortunately, course instructors are expected to upload\n these materials on to a website that must be maintained separately from course\n content. That means instructors must be versed in HTML, CSS, and sometimes\n JavaScript as well as website deployment. Ideally, course instructor should\n focus 100% of his or her effort in course content development and delegate\n website development to someone else.\n\n2. Every IACS course instructor organizes the course project in his or her\n project organizational structure. This makes navigating course materials\n challenging for a new course instructor who takes over the curriculum. \n Moreover, because of the lack of convention in how the course content is\n presented online, students also face difficulty of quickly finding materials\n on topic of their curiosity. Ideally, IACS course website should follow a\n consistent \u201clook-and-feel,\u201d and searching for learning contents should be\n intuitive and easy.\n\n3. Course instructor should be able to quickly leverage existing content from\n the previous iteration of the course instead of starting the course project\n from scratch. Moreover, if course materials are organized following the same\n convention, it will be easier for course instructors to pull materials from\n other courses and integrate them into another course. For instance, if CS109\n Data Science must borrow concepts from AM207 Monte Carlo Methods, CS109\n instructor can copy the material - provided that CS109 course instructor has\n been proper credited - and present the material with small modifications and\n no concern for HTML and CSS.\n\n`iacs-cli` alleviates these problems by enforcing course organization\nconventions and automatic generation of static HTML and CSS files. In\naddition to the static website generation, additional features of `iacs-cli`\ninclude:\n\n- Automatic topic index generation \u2013 course content can be organized around\n topics if a course designer provides \u201ctags\u201d information in the metadata of the content.\n\n![Tag Indices](img/tag_indices.png)\n\n- Search course content by topic \u2013 Like the topic index, if a course designer\n provides \u201ctags\u201d information, the website can be searched by topic of interest.\n\n![Search Results](img/search_results.png)\n\n- Customizable Web Design with minimal knowledge of HTML and CSS. \n Without touching HTML or CSS, course designer can customize color of the\n website albeit maintaining consistent \u201cfeel\u201d for IACS course.\n\n![CS109A](img/cs109A.png)\n\n![CS109B](img/cs109B.png)\n\n![AM207](img/am207.png)\n\n### Installation/Setup\n\n`iacs-cli` is a PyPi package. In order to install through PyPi, use pip\ncommand in the command console:\n\n> \\$ pip install iacs-cli\n\nThis command will install `iacs-cli` along with its dependencies:\n\n- Click\n- Pelican\n- Markdown\n- GitPython\n\n### Workflow\n\n1. Create a new project - Take the command console to the directory where you want to place your course content, and create the course using the following command:\n\n> \\$ iacs create 'course_name'\n\nThe standard convention we would like the instructors to use is YYYY-Course-Name. \nFor example, for Fall 2017 CS109A, we would name the course project as 2017-CS109A.\n\n2. Create the Home Page - The markdown document that converts to the home page\n of the website is pre-populated when you create the project directory. It is\n located in content/index.md\n\n![index.md](img/index.png)\n\nYou must provide Title of the course and Date when the document was created.\n\n**Do not modify save_as: index.html, unless you do not want to use this document as the home page of your course website**\n\n3. Create other pages such as Syllabus, Policies, Resources, etc.\n\n![syllabus.md](img/syllabus.png)\n\nEvery page that is not a course content such as the syllabus or resources page,\ncreate markdown document (with the metadata of Title, Slug, and Date) inside\nthe directory `content/pages/`.\n\nHere, Slug refers to the url to the webpage to be generated from the\ndocument. For instance, Slug: syllabus will generate a url pointing to the\nsyllabus page: http:///pages/syllabus.html\n\n4. Create the Schedule page\n\n`iacs-cli` enables course designers to create a table of course schedule using\ncsv file. In the publication process, the command line tool will automatically\nconvert the csv table into a markdown table, which in turn will be converted\nto a HTML table.\n\nWhen course designer creates a new project, schedule.csv file will be\nautomatically created inside `content/pages/` directory. Use Excel or similar\nspreadsheet software to edit the schedule.csv file as shown below:\n\n![schedule.csv](img/schedule.png)\n\nPlease note that any cell content that matches a title of markdown document,\nthen the created markdown will automatically link the markdown document to the\ncorresponding document. This auto-generated markdown table will then be\nconverted to HTML table with clickable links to the content of the course:\n\n![schedule.html](img/schedule_page.png)\n\n5. Edit Content of the course\n\nThere are two ways to create and edit contents of the course. One can create\na page using markdown or Ipython notebook.\n\nSuggested directory structure:\n\n```\nProjectDirectory\n\tcontent/\n\tlabs/\nlectures/\npages/\nsections/\nindex.md\ndocs/\n\tplugins/\n\tipynb/\n\ttipue_search/\n\tthemes/\n\tstatic/\n\ttemplates/\n\tconfig.py\n\tREADME.md\n```\n\n6. Including Metadata\n In order to convert course content written in markdown or Ipython notebook,\n one must provide the following metadata information at the top of the document:\n\n- Title\n- Category\n- Slug\n- Author\n- Date\n- Tags \u2013 Optional, but highly encouraged for topic indexing and search\n\nIn markdown document, this may look like the example below:\n\n![markdown](img/markdown.png)\n\nFor metadata for IPython Notebook, you must create a metadata file with the\nsame name but with a prefix of \u201c-meta\u201d. For example (see below),\nfor **lecture1213_notebook.ipynb**, create **lecture1213_notebook.ipynb-meta**\nand provide metadata information at the top of the document.\n\n![notebook](img/notebook.png)\n\n7. Linking documents within a project\n\nIn order to create internal links between documents in a course, use markdown syntax for creating a link with {filename} prefix:\n\n\\(\\< description \\>\\)\\[\\{ filename \\}\\< path_to_file \\>\\]\n\nSee example below:\n\n![linking](img/linking.png)\n\n8. Including static files such as \\*.jpg, \\*.pdf, and \\*.png\n\nFor links to static files such as PDF or embedding JPEG or PNG images\nin markdown document, use {attach} prefix:\n\n\\(\\< description \\>\\)\\[\\{ attach \\}\\< path_to_file \\>\\]\n\n9. After creating contents for the website, course designer must generate\n HTML and CSS documents using the following command inside the root directory\n of the project:\n\n> \\$ iacs publish\n\nThis command will populate the doc/ directory with static HTML and CSS files\nfor the website. To preview the website, use the following command inside\nthe root directory:\n\n> \\$ iacs launch\n\nThis command will launch a Python localhost server with port number 8000. Open\nup a browser and visit http://localhost:8000/.\n\n10. Turning on GitHub Pages\n\nCommit and upload the git repo to Github.com. In settings page, enable GitHub\nPages and select **master branch /docs** folder as its source:\n\n![Github Pages](img/github_pages.png)\n\n### Command Reference\n\n1. Create a new project\n\n> \\$ iacs create 'course_name'\n\n2. Publish the content\n\n> \\$ iacs publish\n\n3. Launch a localhost web server\n\n> \\$ iacs launch\n\n4. Copy existing course projects\n\n> \\$ iacs copy 'existing_course_dir' 'course_name'\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/richardskim111/iacs-cli", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "iacs-cli", "package_url": "https://pypi.org/project/iacs-cli/", "platform": "", "project_url": "https://pypi.org/project/iacs-cli/", "project_urls": { "Homepage": "https://github.com/richardskim111/iacs-cli" }, "release_url": "https://pypi.org/project/iacs-cli/0.11.1/", "requires_dist": [ "click", "pelican", "markdown", "gitpython", "beautifulsoup4" ], "requires_python": "", "summary": "Command line tool for Harvard IACS course", "version": "0.11.1" }, "last_serial": 5838467, "releases": { "0.10.1": [ { "comment_text": "", "digests": { "md5": "84d0dbc343e4cdf5e7a419b515b427e3", "sha256": "55cc338f18c0f7a08f717798ce5a362ef35f94d4e03f84a192139588b8b66780" }, "downloads": -1, "filename": "iacs-cli-0.10.1.tar.gz", "has_sig": false, "md5_digest": "84d0dbc343e4cdf5e7a419b515b427e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7064, "upload_time": "2019-02-04T21:30:20", "url": "https://files.pythonhosted.org/packages/ed/b7/556d1f3b05931223c65a6239183fcfba4ddad5dc3c52101883c6e3ed3fa7/iacs-cli-0.10.1.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "eaaa7858ae2e782c2c75b67cc95a9dd6", "sha256": "61599a3cd15ca881a187d471ab80824314ab72864ed7eb5eaade67f88da25476" }, "downloads": -1, "filename": "iacs_cli-0.10.2-py3-none-any.whl", "has_sig": false, "md5_digest": "eaaa7858ae2e782c2c75b67cc95a9dd6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7943, "upload_time": "2019-06-03T12:30:06", "url": "https://files.pythonhosted.org/packages/75/08/9b9fffaae64cbe870a55cd058a052954a498e8fbda321a18ca743cd541d5/iacs_cli-0.10.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9627d416014fa09044b83ac510dab64", "sha256": "36308fcf70ad203ac77b75d93e32a7f9d0ce5543c2e014d69def6b55da3495a6" }, "downloads": -1, "filename": "iacs-cli-0.10.2.tar.gz", "has_sig": false, "md5_digest": "b9627d416014fa09044b83ac510dab64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6982, "upload_time": "2019-06-03T12:30:08", "url": "https://files.pythonhosted.org/packages/22/13/10330ffbc9ebcfea3dabaae631279a1df0cc409d7f6997aa4425079e27b6/iacs-cli-0.10.2.tar.gz" } ], "0.10.3": [ { "comment_text": "", "digests": { "md5": "86d3b2d0fac5cebddc1c0e0c84131460", "sha256": "fb6434804c8f0ab21fd6a4e08ff72c07302bee859de39b8282132ad0ee45e757" }, "downloads": -1, "filename": "iacs_cli-0.10.3-py3-none-any.whl", "has_sig": false, "md5_digest": "86d3b2d0fac5cebddc1c0e0c84131460", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7944, "upload_time": "2019-06-06T11:35:12", "url": "https://files.pythonhosted.org/packages/13/f7/a68bff79247c4a19dbb73ea82c5de5e05039c9b5118abb9d7e665373765d/iacs_cli-0.10.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7f06d59297e97113c9cb2939e58643be", "sha256": "1c4c951257734b6f7bbb6a3430d5eb8f2f1e3530a06217cd9c8f36578399f7d4" }, "downloads": -1, "filename": "iacs-cli-0.10.3.tar.gz", "has_sig": false, "md5_digest": "7f06d59297e97113c9cb2939e58643be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6980, "upload_time": "2019-06-06T11:35:15", "url": "https://files.pythonhosted.org/packages/d2/a9/975a4881e8d99b0b65bd022e69d91a5df6aee307cffacaef006033c02fab/iacs-cli-0.10.3.tar.gz" } ], "0.10.4": [ { "comment_text": "", "digests": { "md5": "ddb42a66d50efad128c88835f9c240c5", "sha256": "e59d2b8905a02b1ee4335e11ff51fa6fbba75513fa88ea017c0b55e768ef83c2" }, "downloads": -1, "filename": "iacs_cli-0.10.4-py3-none-any.whl", "has_sig": false, "md5_digest": "ddb42a66d50efad128c88835f9c240c5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7954, "upload_time": "2019-09-04T16:56:01", "url": "https://files.pythonhosted.org/packages/05/73/80a6fbc475d90d77a1a1ba1fb8fea1c182745fcb647da9291c3b5309d277/iacs_cli-0.10.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0fe9d52153b705ba589c12479a5c788f", "sha256": "7f4769dfc2cec3fbe874754e5d17e2b7bdd9d591c54454375e44d5a9948c09dd" }, "downloads": -1, "filename": "iacs-cli-0.10.4.tar.gz", "has_sig": false, "md5_digest": "0fe9d52153b705ba589c12479a5c788f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6979, "upload_time": "2019-09-04T16:56:04", "url": "https://files.pythonhosted.org/packages/db/90/c51e8fd370914ee111f91a8b459d40412a12ac745da4d3f956a8199b78fe/iacs-cli-0.10.4.tar.gz" } ], "0.10.5": [ { "comment_text": "", "digests": { "md5": "d3c3e3eaafaac1df1a99a1aa2c8e2319", "sha256": "0f61b38dd9a7a7e619774e1d3708c09a5bb90e42f272b402627ab6de6faddab6" }, "downloads": -1, "filename": "iacs_cli-0.10.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d3c3e3eaafaac1df1a99a1aa2c8e2319", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7954, "upload_time": "2019-09-04T17:01:24", "url": "https://files.pythonhosted.org/packages/83/61/1084d3a57966d51380c9486a8756a9e793796e692964e1bf58dd887c910f/iacs_cli-0.10.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3734854d4c0b3e5b698146991b6b2811", "sha256": "b56e14f8b31aa6ead3c29c2e3fcaa5e00eb99cc1604de974472237fd9b93a11a" }, "downloads": -1, "filename": "iacs-cli-0.10.5.tar.gz", "has_sig": false, "md5_digest": "3734854d4c0b3e5b698146991b6b2811", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6968, "upload_time": "2019-09-04T17:01:28", "url": "https://files.pythonhosted.org/packages/d3/ba/8461e9527b0b1bc9b846a8a4b4997f144c28ee0e85bc36ceb3d5d436c2e7/iacs-cli-0.10.5.tar.gz" } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "ab91424da45adac77b9ec610bb6c8807", "sha256": "0d53628a033ce4f918f1e376233302771bd55cd10fa34c36902b1bcdd145186f" }, "downloads": -1, "filename": "iacs_cli-0.11.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ab91424da45adac77b9ec610bb6c8807", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8363, "upload_time": "2019-09-16T22:22:50", "url": "https://files.pythonhosted.org/packages/c1/84/91e13af86f55fe9e3a0b0c26921862ec62f67cca340cddaa2768a894e57f/iacs_cli-0.11.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a36ec53bccbd23716440f75441be0371", "sha256": "21ff6645a7b06dc1658b30ce2bce3492eb78ada2fca350ff23da817dcaf90a9c" }, "downloads": -1, "filename": "iacs-cli-0.11.1.tar.gz", "has_sig": false, "md5_digest": "a36ec53bccbd23716440f75441be0371", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7176, "upload_time": "2019-09-16T22:22:56", "url": "https://files.pythonhosted.org/packages/11/41/851b768c8e373a4ae976d725fda043bd5f19ef5bcd58b4f92640ff2be7e2/iacs-cli-0.11.1.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "d7191d2b6b69bccf4a78e76d3aefcac9", "sha256": "263136d55567cfe8dbd0139d1b41cf999cdda2a1ee385e712fcb222eae87cd94" }, "downloads": -1, "filename": "iacs-cli-0.6.tar.gz", "has_sig": false, "md5_digest": "d7191d2b6b69bccf4a78e76d3aefcac9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6850, "upload_time": "2019-02-04T19:59:34", "url": "https://files.pythonhosted.org/packages/d7/0a/7c354953697d3d53aa9d4d3a426becf00ad41ae7fa1e03ba64e45b5a5c3e/iacs-cli-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "0f10ca5fbb6a54d4b482f3b94b904581", "sha256": "27ce9ee5a8fb5015a391289f25279f66dec478afadad67e8294dfc4db871bf20" }, "downloads": -1, "filename": "iacs-cli-0.7.tar.gz", "has_sig": false, "md5_digest": "0f10ca5fbb6a54d4b482f3b94b904581", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6849, "upload_time": "2019-02-04T19:59:35", "url": "https://files.pythonhosted.org/packages/3d/1c/f86433ff3014bd3506f6f349388c7c1adeb8801fa4a099979239fa1ca201/iacs-cli-0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ab91424da45adac77b9ec610bb6c8807", "sha256": "0d53628a033ce4f918f1e376233302771bd55cd10fa34c36902b1bcdd145186f" }, "downloads": -1, "filename": "iacs_cli-0.11.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ab91424da45adac77b9ec610bb6c8807", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8363, "upload_time": "2019-09-16T22:22:50", "url": "https://files.pythonhosted.org/packages/c1/84/91e13af86f55fe9e3a0b0c26921862ec62f67cca340cddaa2768a894e57f/iacs_cli-0.11.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a36ec53bccbd23716440f75441be0371", "sha256": "21ff6645a7b06dc1658b30ce2bce3492eb78ada2fca350ff23da817dcaf90a9c" }, "downloads": -1, "filename": "iacs-cli-0.11.1.tar.gz", "has_sig": false, "md5_digest": "a36ec53bccbd23716440f75441be0371", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7176, "upload_time": "2019-09-16T22:22:56", "url": "https://files.pythonhosted.org/packages/11/41/851b768c8e373a4ae976d725fda043bd5f19ef5bcd58b4f92640ff2be7e2/iacs-cli-0.11.1.tar.gz" } ] }