name: 'Cache APT Packages' description: 'Install APT based packages and cache them for future runs.' author: awalsh128 branding: icon: 'hard-drive' color: 'green' inputs: packages: description: 'Space delimited list of packages to install.' required: true default: '' outputs: cache-hit: description: 'A boolean value to indicate a cache was found for the packages requested.' value: ${{ steps.load-pkg-cache.outputs.cache-hit }} runs: using: "composite" steps: - name: Validate Packages run: ${{ github.action_path }}/validate_pkgs.sh ${{ inputs.packages }} shell: bash - name: Create Cache Key run: echo ${{ inputs.packages }} | sed 's/[\s,]+/\n/g' | sort > /tmp/package_list.txt shell: bash - name: Load Package Cache id: load-pkg-cache uses: actions/cache@v2 with: path: ~/cache-apt-pkgs key: cache-apt-pkgs_${{ hashFiles('/tmp/package_list.txt') }} - name: Load Packages run: | if [ ${{ steps.load-pkg-cache.outputs.cache-hit }} ]; then ${{ github.action_path }}/restore_pkgs.sh ~/cache-apt-pkgs / else ${{ github.action_path }}/install_and_cache_pkgs.sh ~/cache-apt-pkgs ${{ inputs.packages }} fi shell: bash